Thanks Manuel! Code looks good, but the first time I ran the tests, I got the traceback below, which is strange. Is this (meaning the memory dump) what normally happens when the 5th try still times out? eric@thelog:~/canonical/desktopcouch/r-mandel$ PYTHONPATH=. trial desktopcouch ini file is at /tmp/tmp5oQgGD/config/desktop-couchdb.ini Apache CouchDB has started, time to relax. ...waiting for couchdb to start... ...waiting for couchdb to start... ...waiting for couchdb to start... 2009-11-20 15:53:22,169 - Unable to find listening port 2009-11-20 15:53:22,199 - Looked at the following processes for inode : 2009-11-20 15:53:22,202 - sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 00000000:3E81 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 10340 1 f5c96600 300 0 0 2 -1 1: 0100007F:19C8 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 9567 1 f5c97440 300 0 0 2 -1 2: 00000000:1628 00000000:0000 0A 00000000:00000000 00:00000000 00000000 123 0 9056 1 f6052ac0 300 0 0 2 -1 3: 00000000:1269 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 10334 1 f5c96f80 300 0 0 2 -1 4: 0100007F:B1CE 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 14230 1 f5c97900 300 0 0 2 -1 5: 00000000:0050 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 8359 1 f6050e40 300 0 0 2 -1 6: 00000000:1111 00000000:0000 0A 00000000:00000000 00:00000000 00000000 123 0 8497 1 f5c96ac0 300 0 0 2 -1 7: 00000000:94F3 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 285292 1 ddc63900 300 0 0 2 -1 8: 00000000:9854 00000000:0000 0A 00000000:00000000 00:00000000 00000000 123 0 8596 1 f6051300 300 0 0 2 -1 9: 0501A8C0:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 131 0 6009 1 f5c957c0 300 0 0 2 -1 10: 0100007F:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 131 0 5237 1 f5c94000 300 0 0 2 -1 11: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 5659 1 f5c94980 300 0 0 2 -1 12: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 22448 1 f3169c80 300 0 0 2 -1 13: 0100007F:1538 00000000:0000 0A 00000000:00000000 00:00000000 00000000 122 0 6790 1 f5c94e40 300 0 0 2 -1 14: 0100007F:03B9 00000000:0000 0A 00000000:00000000 00:00000000 00000000 131 0 5251 1 f5c944c0 300 0 0 2 -1 15: 0100007F:01BB 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 8358 1 f6050980 300 0 0 2 -1 16: 0501A8C0:AA6F D3CAE142:1A0B 01 00000000:00000000 02:00094166 00000000 1000 0 15851 2 f6053900 26 4 30 4 3 17: 0501A8C0:EB2E 0B5ABD5B:0016 06 00000000:00000000 03:00000909 00000000 0 0 0 2 e98f70c0 18: 0501A8C0:C1DD 00EC2144:1CA1 01 00000000:00000000 00:00000000 00000000 1000 0 286275 1 e9a8c000 36 4 27 4 -1 19: 0501A8C0:97CE 915EBD5B:03E1 01 00000000:00000000 00:00000000 00000000 1000 0 296782 1 e9ae97c0 30 4 20 5 3 20: 0501A8C0:C234 421E24AE:01BB 08 00000000:00000026 00:00000000 00000000 1000 0 17157 1 f60504c0 25 4 12 5 -1 21: 0501A8C0:CDF7 93A9E940:0050 08 00000000:00000001 00:00000000 00000000 1000 0 14229 1 f6052600 22 4 0 4 -1 22: 0501A8C0:C232 421E24AE:01BB 08 00000000:00000026 00:00000000 00000000 1000 0 16983 1 f6050000 25 4 28 5 -1 23: 0501A8C0:C13B 431E24AE:01BB 08 00000000:00000026 00:00000000 00000000 1000 0 16938 1 f6052140 26 4 8 5 -1 24: 0501A8C0:DFE4 69A9E940:0050 01 00000000:00000000 00:00000000 00000000 1000 0 33721 1 f316b900 26 4 29 5 -1 25: 0501A8C0:EC63 1BCA2BD0:0050 01 00000000:00000000 00:00000000 00000000 1000 0 16999 1 f303c000 26 4 31 4 -1 26: 0501A8C0:CD4F B75EBD5B:1A29 01 00000000:00000000 02:00094D4A 00000000 1000 0 15918 2 f303c4c0 30 4 30 4 3 27: 0501A8C0:A89D 68A9E940:01BB 01 00000000:00000000 00:00000000 00000000 1000 0 744350 1 f303e600 25 4 31 4 -1 28: 0501A8C0:9FCD 915EBD5B:03E1 01 00000000:00000000 00:00000000 00000000 1000 0 33882 1 f316aac0 30 4 22 5 -1 29: 0501A8C0:CC79 69A9E940:01BB 01 00000000:00000000 00:00000000 00000000 1000 0 33661 1 f316af80 24 4 0 4 -1 30: 0501A8C0:C576 68A9E940:0050 08 00000000:00000001 00:00000000 00000000 1000 0 13992 1 f6053440 22 4 0 4 -1 31: 0501A8C0:DFE5 69A9E940:0050 01 00000000:00000000 00:00000000 00000000 1000 0 33722 1 f3169300 25 4 29 5 3 32: 0501A8C0:C10F 6AA9E940:0050 08 00000000:00000001 00:00000000 00000000 1000 0 13991 1 f6052f80 22 4 0 4 -1 33: 0501A8C0:E4DB 90F181AE:01BB 01 00000000:00000000 00:00000000 00000000 1000 0 286465 1 e9ae9300 23 4 19 4 3 34: 0501A8C0:9639 AC12EF82:1A0B 01 00000000:00000000 02:000958E6 00000000 1000 0 15959 2 f303c980 36 4 30 4 3 35: 0100007F:1111 0100007F:A2F2 01 00000000:00000000 00:00000000 00000000 123 0 8599 1 f6051c80 20 4 29 3 -1 36: 0501A8C0:8760 6D5D7D4A:03E1 01 00000000:00000000 00:00000000 00000000 1000 0 33781 1 f3168e40 23 4 16 5 -1 37: 0501A8C0:C7EC 915EBD5B:03E1 01 00000000:00000000 00:00000000 00000000 1000 0 200702 1 f3168980 30 4 30 5 -1 38: 0100007F:A2F2 0100007F:1111 01 00000000:00000000 00:00000000 00000000 123 0 8598 1 f60517c0 20 4 30 3 -1 39: 0501A8C0:9FD2 915EBD5B:03E1 01 00000000:00000000 00:00000000 00000000 1000 0 34780 1 f316b440 30 4 20 5 -1 /home/eric/canonical/desktopcouch/r-mandel/desktopcouch/tests/__init__.py:9: Warning: g_set_application() name called multiple times gobject.set_application_name("desktopcouch testing") ini file is at /tmp/tmpG0TuKq/config/desktop-couchdb.ini Apache CouchDB has started, time to relax. ...waiting for couchdb to start... ...waiting for couchdb to start... ...waiting for couchdb to start... ...waiting for couchdb to start... Browse your desktop CouchDB at file:///tmp/tmpG0TuKq/data/couchdb.html [ERROR] desktopcouch.contacts.tests.test_create TestCreate test_create_many_contacts ... [OK] test_head_or_tails ... [OK] test_random_bools ... [OK] desktopcouch.contacts.tests.test_record TestContactRecord test_contact_record ... [OK] desktopcouch.pair.tests.test_couchdb_io TestCouchdbIo test_get_database_names_replicatable ... [OK] test_get_database_names_replicatable_bad_server ... [OK] test_get_my_host_unique_id ... [OK] test_mkuri ... [OK] test_obsfuscation ... [OK] test_put_dynamic_paired_host ... [OK] test_put_static_paired_service ... [OK] desktopcouch.pair.tests.test_network_io TestNetworkIO test_successful_lifespan ... [OK] desktopcouch.records.tests.test_couchgrid TestCouchGrid test_all_from_database ... [OK] test_constructor_guarded ... [OK] test_new_rows_with_headings ... [OK] test_no_headings_or_stored_records ... [OK] test_optional_args_no_stored_records ... [OK] test_optional_record_type_arg ... [OK] test_programatically_add_row ... [OK] test_selected_id_property ... [OK] test_single_col_from_database ... [OK] desktopcouch.records.tests.test_field_registry TestFieldMapping test_mergeable_list_field_mapping ... [OK] test_mergeable_list_field_mapping_empty_field ... [OK] test_simple_field_mapping ... [OK] TestTransformer test_from_app ... [OK] test_run_doctests ... [OK] test_to_app ... [OK] desktopcouch.records.tests.test_record TestRecordFactory test_build ... [OK] TestRecords test_application_annotations ... [OK] test_delitem ... [OK] test_dictionary_access_to_mergeable_list ... [OK] test_get ... [OK] test_get_item ... [OK] test_iter ... [OK] test_keys ... [OK] test_list ... [OK] test_loads_dict_multi_subdict ... [OK] test_loads_dict_subdict ... [OK] test_mergeable_list_append ... [OK] test_mergeable_list_append_record_dict ... [OK] test_mergeable_list_del ... [OK] test_mergeable_list_index ... [OK] test_mergeable_list_set_value_in_list_item ... [OK] test_no_record_type ... [OK] test_record_type ... [OK] test_run_doctests ... [OK] test_setitem_internal ... [OK] test_tuple ... [OK] test_uuid_like_keys ... [OK] test_validate ... [OK] desktopcouch.records.tests.test_server TestCouchDatabase test_database_not_exists ... [OK] test_delete_record ... [OK] test_func_get_records ... [OK] test_get_changes ... [OK] test_get_deleted_record ... [OK] test_get_record ... [OK] test_get_records_by_record_type_save_view ... [OK] test_get_view_by_type_createxcl_fail ... [OK] test_get_view_by_type_new_but_already ... [OK] test_list_views ... [OK] test_put_record ... [OK] test_record_exists ... [OK] test_report_changes_all_ops_give_known_keys ... [OK] test_report_changes_exceptions ... [OK] test_report_changes_nochanges ... [OK] test_report_changes_polite ... [OK] test_update_fields ... [OK] test_view_add_and_delete ... [OK] desktopcouch.tests.test_local_files TestLocalFiles test_all_files_returned ... [OK] test_bind_address ... ini file is at /home/eric/.config/desktop-couch/desktop-couchdb.ini ini file is at /home/eric/.config/desktop-couch/desktop-couchdb.ini [OK] test_couch_chain_ini_files ... [OK] test_xdg_overwrite_works ... [OK] desktopcouch.tests.test_replication TestReplication test_creation ... ini file is at /tmp/tmpZUJCoj/config/desktop-couchdb.ini Apache CouchDB has started, time to relax. ...waiting for couchdb to start... ...waiting for couchdb to start... ...waiting for couchdb to start... Browse your desktop CouchDB at file:///tmp/tmpZUJCoj/data/couchdb.html [OK] desktopcouch.tests.test_start_local_couchdb TestUpdateDesignDocuments test_create_databases_and_design_docs ... [OK] =============================================================================== [ERROR]: desktopcouch.contacts.tests.test_contactspicker Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/twisted/trial/runner.py", line 555, in loadPackage module = modinfo.load() File "/usr/lib/python2.6/dist-packages/twisted/python/modules.py", line 380, in load return self.pathEntry.pythonPath.moduleLoader(self.name) File "/usr/lib/python2.6/dist-packages/twisted/python/reflect.py", line 456, in namedAny topLevelPackage = _importAndCheckStack(trialname) File "/usr/lib/python2.6/dist-packages/twisted/python/reflect.py", line 392, in _importAndCheckStack return __import__(importName) File "/home/eric/canonical/desktopcouch/r-mandel/desktopcouch/contacts/tests/test_contactspicker.py", line 24, in import desktopcouch.tests as test_environment File "/home/eric/canonical/desktopcouch/r-mandel/desktopcouch/tests/__init__.py", line 48, in test_context = create_new_test_environment() File "/home/eric/canonical/desktopcouch/r-mandel/desktopcouch/tests/__init__.py", line 36, in create_new_test_environment start_couchdb(ctx=new_context) File "/home/eric/canonical/desktopcouch/r-mandel/desktopcouch/start_local_couchdb.py", line 323, in start_couchdb pid, port = run_couchdb(ctx=ctx) File "/home/eric/canonical/desktopcouch/r-mandel/desktopcouch/start_local_couchdb.py", line 234, in run_couchdb port = desktopcouch.find_port(pid=pid) File "/home/eric/canonical/desktopcouch/r-mandel/desktopcouch/__init__.py", line 113, in find_port__linux raise RuntimeError("Unable to find listening port") exceptions.RuntimeError: Unable to find listening port ------------------------------------------------------------------------------- Ran 74 tests in 21.348s FAILED (errors=1, successes=74)