Talk:Web Development with Webmachine for Erlang

I'm trying to follow along. After creating api_tests.py, when I run command "python -m unittest api_tests.py -v" I get

$ python -m unittest api_tests.py -v Traceback (most recent call last): File "/usr/lib64/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name)   File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code      exec code in run_globals    File "/usr/lib64/python2.7/unittest/__main__.py", line 12, in       main(module=None)    File "/usr/lib64/python2.7/unittest/main.py", line 94, in __init__      self.parseArgs(argv)    File "/usr/lib64/python2.7/unittest/main.py", line 149, in parseArgs      self.createTests    File "/usr/lib64/python2.7/unittest/main.py", line 158, in createTests      self.module) File "/usr/lib64/python2.7/unittest/loader.py", line 128, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] File "/usr/lib64/python2.7/unittest/loader.py", line 100, in loadTestsFromName parent, obj = obj, getattr(obj, part) AttributeError: 'module' object has no attribute 'py'

Fedora 17, python-2.7.3-7.2.fc17.x86_64,python-libs-2.7.3-7.2.fc17.x86_64 (which includes unittest)

The solution appears to use instead

python -m unittest api_tests

Also, as of a few minutes ago, the default port is 8000, not 8888, so I changed that in api_tests.py.

Thyrsus (discuss • contribs) 07:03, 5 June 2013 (UTC)

mnesia unit tests
In my copious spare time, I'll propose some Fixtures to add to the test/prp_schema_tests.erl file, but for now I'll note that to run the tests I needed to do the following:

#!/bin/sh cd `dirname $0` exec erl -pa $PWD/ebin $PWD/deps/*/ebin -boot start_sasl -s mnesia start -s reloader -s prp
 * change the start.sh script to include "-s mnesia start" among its arguments like so:


 * after invoking "./start.sh", at the resulting erlang prompt invoke

prp_schema:init_tables. prp_schema:fill_with_dummies. c("test/prp_schema_tests").

I'll also note that, even though "-s reload" was supposed to note changed binaries and reload them with their new functionality, it didn't work for me; to get any changes recognized, I had to "q." out of the erlang shell, run "./rebar compile" and then "./start.sh" again.

Thyrsus (discuss • contribs) 02:58, 10 July 2013 (UTC)

Turn on tracing for debugging
The tracing described requires that one create a directory "traces" as a sibling to ebin, Makefile, etc., otherwise the web server returns a 500 error and this message in the shell:

=ERROR REPORT==== 9-Jul-2013::23:11:38 === webmachine error: path="/paper/1" {error,{badmatch,{error,enoent}}} 1>    =ERROR REPORT==== 9-Jul-2013::23:11:38 === Error in process <0.117.0> with exit value: {undef,[{webmachine_logger,log_access,[{wm_log_data,undefined,{1373,425898,927101},'GET',{5,{"user-agent",{'User-Agent',"python-requests/1.1.0 CPython/2.7.3 Linux/3.9.8-100.fc17.x86_64"},{"accept",{'Accept',"*/*"},nil,{"accept-encodin...

It would be helpful if a reference to documentation of the tracing facility were included. As it was, I found the problem by running the web server process tree under "strace -f -o wm -s 255 ./start.sh" and, given the "enoent" hint, looking for ENOENT returns from system calls (of which there were plenty, the vast majority ensuing from path searches).