)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6ae984aa87e965a95f76b1cdb9ac77682823423c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jakub Libosvar \u003clibosvar@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-27 17:14:46 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fullstack: Collect some env info on failures"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch adds hook to collect following information on exception in"},{"line_number":10,"context_line":"fullstack tests:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1aa78d24_fd5ecf77","line":7,"updated":"2016-07-14 21:26:38.000000000","message":"This would be more useful with a note in TESTING.rst, something like: In case a fullstack test fails, you can find \u003cthis kind of information\u003e \u003chere\u003e.","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1a24e1a498985cdea3935e6e2c848b4e13ebeb1b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jakub Libosvar \u003clibosvar@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-27 17:14:46 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fullstack: Collect some env info on failures"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch adds hook to collect following information on exception in"},{"line_number":10,"context_line":"fullstack tests:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"dada55a8_7f0f6a2e","line":7,"in_reply_to":"1aa78d24_fd5ecf77","updated":"2016-07-19 09:59:42.000000000","message":"Done, also added some information about fullstack logs.","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"}],"TESTING.rst":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"bdb3c62dcad969975cd10e4ec3de92cbc1595b49","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"Fullstack tests log each running service and test runner to its own log files."},{"line_number":274,"context_line":"When using tox, logs can be found in dsvm-fullstack directory located at"},{"line_number":275,"context_line":"default direcory, which is ``/opst/stack/logs``.  This directory can be"},{"line_number":276,"context_line":"overriden by setting an environment variable ``OS_LOG_PATH``.  Log files"},{"line_number":277,"context_line":"contain a timestamp and pid in its name that makes sure log file is unique."},{"line_number":278,"context_line":"Failed fullstack tests contain other useful information that can ease"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_1a55c5c5","line":275,"updated":"2016-07-22 18:38:26.000000000","message":"opst -\u003e opt","commit_id":"82622b6f662efb1e6cc2166e90f3cb428f8989c4"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4b09651964cc4cd9505cd347b0784f94e6421073","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"Fullstack tests log each running service and test runner to its own log files."},{"line_number":274,"context_line":"When using tox, logs can be found in dsvm-fullstack directory located at"},{"line_number":275,"context_line":"default direcory, which is ``/opst/stack/logs``.  This directory can be"},{"line_number":276,"context_line":"overriden by setting an environment variable ``OS_LOG_PATH``.  Log files"},{"line_number":277,"context_line":"contain a timestamp and pid in its name that makes sure log file is unique."},{"line_number":278,"context_line":"Failed fullstack tests contain other useful information that can ease"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bacf61ea_3b6c68cd","line":275,"in_reply_to":"dada55a8_1a55c5c5","updated":"2016-08-02 12:13:13.000000000","message":"Done","commit_id":"82622b6f662efb1e6cc2166e90f3cb428f8989c4"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"bdb3c62dcad969975cd10e4ec3de92cbc1595b49","unresolved":false,"context_lines":[{"line_number":277,"context_line":"contain a timestamp and pid in its name that makes sure log file is unique."},{"line_number":278,"context_line":"Failed fullstack tests contain other useful information that can ease"},{"line_number":279,"context_line":"debugging, like open ports, running processes, information about running"},{"line_number":280,"context_line":"services from particular failed test etc.  Such information is logged to test"},{"line_number":281,"context_line":"results file."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Example"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_3a3b699e","line":280,"updated":"2016-07-22 18:38:26.000000000","message":"I think we should definitely be explicit here and explain that the results are found in $NEUTRON_DIR/.testrepository/$LATEST_RUN, for example:\n/opt/openstack/neutron/.testrepository/489.\n\nDid you investigate the possibility of redirecting this information to the test\u0027s log file at /opt/stack/logs/dsvm-fullstack/$TEST_NAME.log?","commit_id":"82622b6f662efb1e6cc2166e90f3cb428f8989c4"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"73ba770024181d1b2975f9f9ba245e9ae7a711dd","unresolved":false,"context_lines":[{"line_number":277,"context_line":"contain a timestamp and pid in its name that makes sure log file is unique."},{"line_number":278,"context_line":"Failed fullstack tests contain other useful information that can ease"},{"line_number":279,"context_line":"debugging, like open ports, running processes, information about running"},{"line_number":280,"context_line":"services from particular failed test etc.  Such information is logged to test"},{"line_number":281,"context_line":"results file."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Example"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_163ba6d2","line":280,"in_reply_to":"dada55a8_3a3b699e","updated":"2016-07-29 13:41:32.000000000","message":"We can do whatever we want in the handler. We can collect logs and call LOG instead of addDetail() or both. You think it makes sense to put it to logs? It won\u0027t be that well formatted.","commit_id":"82622b6f662efb1e6cc2166e90f3cb428f8989c4"}],"neutron/tests/fullstack/base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6de58bc5945c3da9bcccfa345c4000451291d20b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"dada55a8_5f738515","line":71,"updated":"2016-07-19 10:00:13.000000000","message":"Doh, I missed gather_env_info() on rebase","commit_id":"2c73bf5b7e2f4d07696381ec432e15e72c0ce6cc"}],"neutron/tests/fullstack/common.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6ae984aa87e965a95f76b1cdb9ac77682823423c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        try:"},{"line_number":22,"context_line":"            return f(*args, **kwargs)"},{"line_number":23,"context_line":"        except Exception as e:"},{"line_number":24,"context_line":"            return \"Report {} raised an exception {}\".format("},{"line_number":25,"context_line":"                f.__name__, str(e))"},{"line_number":26,"context_line":"    return wrap"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_7d4adf28","line":24,"updated":"2016-07-14 21:26:38.000000000","message":"Using the format method... So naughty.","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1a24e1a498985cdea3935e6e2c848b4e13ebeb1b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        try:"},{"line_number":22,"context_line":"            return f(*args, **kwargs)"},{"line_number":23,"context_line":"        except Exception as e:"},{"line_number":24,"context_line":"            return \"Report {} raised an exception {}\".format("},{"line_number":25,"context_line":"                f.__name__, str(e))"},{"line_number":26,"context_line":"    return wrap"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_1f274eb7","line":24,"in_reply_to":"1aa78d24_7d4adf28","updated":"2016-07-19 09:59:42.000000000","message":"Done","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"}],"neutron/tests/fullstack/resources/environment.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6ae984aa87e965a95f76b1cdb9ac77682823423c","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    @common.safe_report"},{"line_number":267,"context_line":"    def get_host_report(self):"},{"line_number":268,"context_line":"        report \u003d {agent_name: agent.get_agent_report()"},{"line_number":269,"context_line":"                  for agent_name, agent in self.agents.items()}"},{"line_number":270,"context_line":"        report[\u0027open_connections\u0027] \u003d utils.execute("},{"line_number":271,"context_line":"            [\u0027lsof\u0027, \u0027-i@%s\u0027 % self.local_ip],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_dd3833a2","line":268,"updated":"2016-07-14 21:26:38.000000000","message":"We can probably add the host\u0027s hostname here.","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1a24e1a498985cdea3935e6e2c848b4e13ebeb1b","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    @common.safe_report"},{"line_number":267,"context_line":"    def get_host_report(self):"},{"line_number":268,"context_line":"        report \u003d {agent_name: agent.get_agent_report()"},{"line_number":269,"context_line":"                  for agent_name, agent in self.agents.items()}"},{"line_number":270,"context_line":"        report[\u0027open_connections\u0027] \u003d utils.execute("},{"line_number":271,"context_line":"            [\u0027lsof\u0027, \u0027-i@%s\u0027 % self.local_ip],"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_9fde9e6b","line":268,"in_reply_to":"1aa78d24_dd3833a2","updated":"2016-07-19 09:59:42.000000000","message":"Done","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"}],"neutron/tests/fullstack/resources/process.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6ae984aa87e965a95f76b1cdb9ac77682823423c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.process.stop(block\u003dTrue, kill_signal\u003dself.kill_signal)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @common.safe_report"},{"line_number":72,"context_line":"    def get_process_report(self):"},{"line_number":73,"context_line":"        return {"},{"line_number":74,"context_line":"            \u0027process_name\u0027: self.process_name,"},{"line_number":75,"context_line":"            \u0027exec_name\u0027: self.exec_name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_7d95bf86","line":72,"updated":"2016-07-14 21:26:38.000000000","message":"Can we use the same name for all \u0027get_%s_report\u0027 functions? Makes it a bit easier to use.","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1a24e1a498985cdea3935e6e2c848b4e13ebeb1b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.process.stop(block\u003dTrue, kill_signal\u003dself.kill_signal)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @common.safe_report"},{"line_number":72,"context_line":"    def get_process_report(self):"},{"line_number":73,"context_line":"        return {"},{"line_number":74,"context_line":"            \u0027process_name\u0027: self.process_name,"},{"line_number":75,"context_line":"            \u0027exec_name\u0027: self.exec_name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_bfe1e29c","line":72,"in_reply_to":"1aa78d24_7d95bf86","updated":"2016-07-19 09:59:42.000000000","message":"Done","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"6ae984aa87e965a95f76b1cdb9ac77682823423c","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    def get_agent_report(self):"},{"line_number":158,"context_line":"        return {"},{"line_number":159,"context_line":"            \u0027process\u0027: self.process_fixture.get_process_report(),"},{"line_number":160,"context_line":"            \u0027neutron_config\u0027: self.neutron_config,"},{"line_number":161,"context_line":"            \u0027agent_config\u0027: self.agent_config,"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_d24b0285","line":160,"updated":"2016-07-14 21:26:38.000000000","message":"L3 agent is missing:\nself.neutron_config \u003d self.neutron_cfg_fixture.config\n\nSo this is returning an error:\n\"l3\": \"Report get_agent_report raised an exception \u0027L3AgentFixture\u0027 object has no attribute \u0027neutron_config\u0027\"\n\nWhat do you think about iterating over the object\u0027s variables and returning anything that inherits from ConfigFixture or ProcessFixture.","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1a24e1a498985cdea3935e6e2c848b4e13ebeb1b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    def get_agent_report(self):"},{"line_number":158,"context_line":"        return {"},{"line_number":159,"context_line":"            \u0027process\u0027: self.process_fixture.get_process_report(),"},{"line_number":160,"context_line":"            \u0027neutron_config\u0027: self.neutron_config,"},{"line_number":161,"context_line":"            \u0027agent_config\u0027: self.agent_config,"},{"line_number":162,"context_line":"        }"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_3f27b113","line":160,"in_reply_to":"1aa78d24_d24b0285","updated":"2016-07-19 09:59:42.000000000","message":"Done","commit_id":"2b059705e655bf4611763931cbd49d02b8582cd1"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"453865a52a6e915c9df59fc55770fcd1c2f70327","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        utils.execute(cmd, run_as_root\u003dTrue)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class ServiceFixture(fixtures.Fixture):"},{"line_number":110,"context_line":"    @common.safe_report"},{"line_number":111,"context_line":"    def get_report(self):"},{"line_number":112,"context_line":"        report \u003d {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_34b3b40b","line":109,"updated":"2016-07-21 22:48:59.000000000","message":"Neato :)","commit_id":"82622b6f662efb1e6cc2166e90f3cb428f8989c4"}]}
