)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3c019ee900c47d734ba723170aa5f75f82853228","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"dea1a683_e3847326","updated":"2026-10-27 17:04:07.000000000","message":"I like the idea but think this will fail","commit_id":"f52bc9149f6261f1de0edacf55192d539588e3c7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a40b563d3a9c31eda96972a2767f6dffa5ae9b56","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"5e2c3f1b_e9d57131","updated":"2026-10-29 15:36:51.000000000","message":"This adds voting functional tests for sqlalchemy backend so let\u0027s get this in.","commit_id":"609be924b16cb3c5d731dcb1ac55ed0c12361568"}],"osprofiler/drivers/sqlalchemy_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3c019ee900c47d734ba723170aa5f75f82853228","unresolved":true,"context_lines":[{"line_number":137,"context_line":"                        \"project\": trace.project,"},{"line_number":138,"context_line":"                        \"host\": trace.host,"},{"line_number":139,"context_line":"                        \"service\": trace.service,"},{"line_number":140,"context_line":"                        \"name\": trace.name,"},{"line_number":141,"context_line":"                    }"},{"line_number":142,"context_line":"                )"},{"line_number":143,"context_line":"                self._append_results("}],"source_content_type":"text/x-python","patch_set":9,"id":"16dfa049_5ed16b1d","line":140,"updated":"2026-10-27 17:04:07.000000000","message":"nit: would be helpful if these were in the same order as lines 83-91 above","commit_id":"f52bc9149f6261f1de0edacf55192d539588e3c7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bca682210f47ab0642527228dd2ac18b645bddda","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                        \"project\": trace.project,"},{"line_number":138,"context_line":"                        \"host\": trace.host,"},{"line_number":139,"context_line":"                        \"service\": trace.service,"},{"line_number":140,"context_line":"                        \"name\": trace.name,"},{"line_number":141,"context_line":"                    }"},{"line_number":142,"context_line":"                )"},{"line_number":143,"context_line":"                self._append_results("}],"source_content_type":"text/x-python","patch_set":9,"id":"978c7e30_84977d77","line":140,"in_reply_to":"16dfa049_5ed16b1d","updated":"2026-10-27 18:01:22.000000000","message":"Done","commit_id":"f52bc9149f6261f1de0edacf55192d539588e3c7"}],"osprofiler/tests/functional/test_driver.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8f5ba9d9302f3f455657452f010222ce5c977b74","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import logging"},{"line_number":18,"context_line":"import tempfile"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":6,"id":"3744b761_b0af271c","line":17,"updated":"2026-10-26 16:35:12.000000000","message":"pep8: H306: imports not in alphabetical order (os, logging)","commit_id":"e9242cec3851a96ef8623c3aeb8f3031ca98d9c9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"a15fa1570b24d6f62a94d4f07c9e26cfd1b3d46b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import logging"},{"line_number":18,"context_line":"import tempfile"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":7,"id":"01ca7bda_75854e34","line":17,"updated":"2026-10-26 17:31:06.000000000","message":"pep8: H306: imports not in alphabetical order (os, logging)","commit_id":"4ba6bb363fb12001161c8dab1e5c02c1d1ca5b68"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3c019ee900c47d734ba723170aa5f75f82853228","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        exp_raw[\"name\"] \u003d f\"{name}-stop\""},{"line_number":89,"context_line":"        self._assert_dict(raw_stop, **exp_raw)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_get_report(self):"},{"line_number":92,"context_line":"        # initialize profiler notifier (the same way as in services)"},{"line_number":93,"context_line":"        initializer.init_from_conf("},{"line_number":94,"context_line":"            CONF, {}, self.PROJECT, self.SERVICE, \"host\""}],"source_content_type":"text/x-python","patch_set":9,"id":"37d29fe1_5eaf7cbf","line":91,"updated":"2026-10-27 17:04:07.000000000","message":"I could be wrong but I think this will still run since unittest only care about method names, not class names. You might need to remove `test.FunctionalTestCase` from the class and write this as a mixin...","commit_id":"f52bc9149f6261f1de0edacf55192d539588e3c7"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bca682210f47ab0642527228dd2ac18b645bddda","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        exp_raw[\"name\"] \u003d f\"{name}-stop\""},{"line_number":89,"context_line":"        self._assert_dict(raw_stop, **exp_raw)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_get_report(self):"},{"line_number":92,"context_line":"        # initialize profiler notifier (the same way as in services)"},{"line_number":93,"context_line":"        initializer.init_from_conf("},{"line_number":94,"context_line":"            CONF, {}, self.PROJECT, self.SERVICE, \"host\""}],"source_content_type":"text/x-python","patch_set":9,"id":"796be5f4_b78e4c63","line":91,"in_reply_to":"37d29fe1_5eaf7cbf","updated":"2026-10-27 18:01:22.000000000","message":"Oh yes. Fixed it.","commit_id":"f52bc9149f6261f1de0edacf55192d539588e3c7"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        raise NotImplementedError()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def setUp(self):"},{"line_number":50,"context_line":"        super().setUp()"},{"line_number":51,"context_line":"        self.config_fixture.config("},{"line_number":52,"context_line":"            connection_string\u003dself.connection_string,"},{"line_number":53,"context_line":"            group\u003d\u0027profiler\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"504c1711_96a73519","line":50,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"setUp\" undefined in superclass  [misc]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def setUp(self):"},{"line_number":50,"context_line":"        super().setUp()"},{"line_number":51,"context_line":"        self.config_fixture.config("},{"line_number":52,"context_line":"            connection_string\u003dself.connection_string,"},{"line_number":53,"context_line":"            group\u003d\u0027profiler\u0027,"},{"line_number":54,"context_line":"            enabled\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ecb1186c_aa374c3b","line":51,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"config_fixture\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            hmac_keys\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":"        CONF.register_opts(transport._transport_opts)"},{"line_number":59,"context_line":"        self.config_fixture.config("},{"line_number":60,"context_line":"            transport_url\u003d\u0027rabbit://localhost:5672/\u0027,"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"b4134eb7_0fd122a1","line":59,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"config_fixture\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _assert_dict(self, info, **kwargs):"},{"line_number":64,"context_line":"        self.assertLess(kwargs.items(), info.items())"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _assert_child_dict(self, child, base_id, parent_id, name, fn_name):"},{"line_number":67,"context_line":"        self.assertEqual(parent_id, child[\"parent_id\"])"}],"source_content_type":"text/x-python","patch_set":10,"id":"553f5eff_78ab2707","line":64,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertLess\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.assertLess(kwargs.items(), info.items())"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _assert_child_dict(self, child, base_id, parent_id, name, fn_name):"},{"line_number":67,"context_line":"        self.assertEqual(parent_id, child[\"parent_id\"])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        exp_info \u003d {"},{"line_number":70,"context_line":"            \"name\": \"rpc\","}],"source_content_type":"text/x-python","patch_set":10,"id":"f809fc5c_8aec76d0","line":67,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertEqual\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self._assert_dict(child[\"info\"], **exp_info)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        raw_start \u003d child[\"info\"][f\"meta.raw_payload.{name}-start\"]"},{"line_number":77,"context_line":"        self.assertEqual(fn_name, raw_start[\"info\"][\"function\"][\"name\"])"},{"line_number":78,"context_line":"        exp_raw \u003d {"},{"line_number":79,"context_line":"            \"name\": f\"{name}-start\","},{"line_number":80,"context_line":"            \"service\": self.SERVICE,"}],"source_content_type":"text/x-python","patch_set":10,"id":"93a87f28_5ebe35fd","line":77,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertEqual\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        report \u003d engine.get_report(base_id)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # verify the report"},{"line_number":120,"context_line":"        self.assertEqual(\"total\", report[\"info\"][\"name\"])"},{"line_number":121,"context_line":"        self.assertEqual(2, report[\"stats\"][\"rpc\"][\"count\"])"},{"line_number":122,"context_line":"        self.assertEqual(1, len(report[\"children\"]))"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"c5f57528_df193903","line":120,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertEqual\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # verify the report"},{"line_number":120,"context_line":"        self.assertEqual(\"total\", report[\"info\"][\"name\"])"},{"line_number":121,"context_line":"        self.assertEqual(2, report[\"stats\"][\"rpc\"][\"count\"])"},{"line_number":122,"context_line":"        self.assertEqual(1, len(report[\"children\"]))"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        cbar \u003d report[\"children\"][0]"}],"source_content_type":"text/x-python","patch_set":10,"id":"e62bf2fb_1410cd60","line":121,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertEqual\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        # verify the report"},{"line_number":120,"context_line":"        self.assertEqual(\"total\", report[\"info\"][\"name\"])"},{"line_number":121,"context_line":"        self.assertEqual(2, report[\"stats\"][\"rpc\"][\"count\"])"},{"line_number":122,"context_line":"        self.assertEqual(1, len(report[\"children\"]))"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        cbar \u003d report[\"children\"][0]"},{"line_number":125,"context_line":"        self._assert_child_dict("}],"source_content_type":"text/x-python","patch_set":10,"id":"ff6a1e90_731ae758","line":122,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertEqual\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            \"osprofiler.tests.functional.test_driver.Foo.bar\","},{"line_number":131,"context_line":"        )"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        self.assertEqual(1, len(cbar[\"children\"]))"},{"line_number":134,"context_line":"        cbaz \u003d cbar[\"children\"][0]"},{"line_number":135,"context_line":"        self._assert_child_dict("},{"line_number":136,"context_line":"            cbaz,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ab86f8a9_02fdc457","line":133,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertEqual\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        try:"},{"line_number":170,"context_line":"            traces \u003d engine.list_traces()"},{"line_number":171,"context_line":"        except NotImplementedError:"},{"line_number":172,"context_line":"            self.skipTest(\u0027list_traces is not supported\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        # ensure trace with base_id is in the list of traces"},{"line_number":175,"context_line":"        self.assertIn(base_id, [t[\"base_id\"] for t in traces])"}],"source_content_type":"text/x-python","patch_set":10,"id":"baf4160f_78e2ba79","line":172,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"skipTest\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b1af6da13c8853fe007c3fc932dfd0c1a9373b5e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            self.skipTest(\u0027list_traces is not supported\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        # ensure trace with base_id is in the list of traces"},{"line_number":175,"context_line":"        self.assertIn(base_id, [t[\"base_id\"] for t in traces])"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class MessagingDriverTestCase(test.FunctionalTestCase, _DriverTestMixin):"}],"source_content_type":"text/x-python","patch_set":10,"id":"79bd0566_eda34f9f","line":175,"updated":"2026-10-27 19:36:06.000000000","message":"pep8: error: \"_DriverTestMixin\" has no attribute \"assertIn\"  [attr-defined]","commit_id":"03f342261a45ff6e006f1863846f090629df928a"}]}
