)]}'
{"rally/cli/commands/verify.py":[{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"df42822de81e2a09e902c968dea90f6e5c3b7e2a","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                        \"FAIL: %(name)s\\n\""},{"line_number":244,"context_line":"                        \"Time: %(time)s\" % {\"name\": test[\"name\"],"},{"line_number":245,"context_line":"                                            \"time\": test[\"time\"]})"},{"line_number":246,"context_line":"                    if test.get(\"failure\"):"},{"line_number":247,"context_line":"                        log \u003d test[\"failure\"][\"log\"]"},{"line_number":248,"context_line":"                    else:"},{"line_number":249,"context_line":"                        log \u003d test[\"traceback\"]"}],"source_content_type":"text/x-python","patch_set":30,"id":"da85f559_5a9a806f","line":246,"updated":"2015-11-11 15:05:12.000000000","message":"\u0027if \"failure\" in test\u0027\nlooks more pythonic","commit_id":"4c1f29fe4be4fa2692eec97e06d6ff65b83a7088"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"6508e497da510489731d3818fc34d6393d5ecc43","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                        \"FAIL: %(name)s\\n\""},{"line_number":244,"context_line":"                        \"Time: %(time)s\" % {\"name\": test[\"name\"],"},{"line_number":245,"context_line":"                                            \"time\": test[\"time\"]})"},{"line_number":246,"context_line":"                    if test.get(\"failure\"):"},{"line_number":247,"context_line":"                        log \u003d test[\"failure\"][\"log\"]"},{"line_number":248,"context_line":"                    else:"},{"line_number":249,"context_line":"                        log \u003d test[\"traceback\"]"}],"source_content_type":"text/x-python","patch_set":30,"id":"da85f559_f561073a","line":246,"in_reply_to":"da85f559_5a9a806f","updated":"2015-11-11 15:13:39.000000000","message":"oops, this code is left from previous patch-sets. We don\u0027t need this peace any more (all backward compatibility is done in rally.common.objects.Verification.get_results)","commit_id":"4c1f29fe4be4fa2692eec97e06d6ff65b83a7088"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        \"\"\"Display all verifications table, started and finished.\"\"\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        fields \u003d [\"UUID\", \"Deployment UUID\", \"Set name\", \"Tests\", \"Failures\","},{"line_number":147,"context_line":"                  \"Created at\", \"Duration\", \"Status\"]"},{"line_number":148,"context_line":"        verifications \u003d db.verification_list()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        for el in verifications:"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_90da09e7","line":147,"updated":"2015-11-11 16:09:13.000000000","message":"It looks like you should use objects instead of db here.","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        \"\"\"Display all verifications table, started and finished.\"\"\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        fields \u003d [\"UUID\", \"Deployment UUID\", \"Set name\", \"Tests\", \"Failures\","},{"line_number":147,"context_line":"                  \"Created at\", \"Duration\", \"Status\"]"},{"line_number":148,"context_line":"        verifications \u003d db.verification_list()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        for el in verifications:"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_2ecdf9b6","line":147,"in_reply_to":"da85f559_90da09e7","updated":"2015-11-11 16:29:42.000000000","message":"objects.Verification doesn\u0027t support listing all items now. We should add such method to rally.api and use it instead, but it doesn\u0027t relate to current change.","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"}],"rally/common/db/sqlalchemy/models.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"020ba27bf24a42fc21823ac1c665047a4f3b3fba","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    tests \u003d sa.Column(sa.Integer, default\u003d0)"},{"line_number":210,"context_line":"    # TODO(andreykurilin): remove this variable, when rally will support db"},{"line_number":211,"context_line":"    #   migrations. Reason: It doesn\u0027t used anywhere :)"},{"line_number":212,"context_line":"    errors \u003d sa.Column(sa.Integer, default\u003d0)"},{"line_number":213,"context_line":"    failures \u003d sa.Column(sa.Integer, default\u003d0)"},{"line_number":214,"context_line":"    time \u003d sa.Column(sa.Float, default\u003d0.0)"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_9191aaf3","line":211,"updated":"2015-11-11 16:42:46.000000000","message":"Please, fix typo.\n\nIt is not used anywhere","commit_id":"aeea596d2b8e69ed814d0df6bbe09b27dc871b0f"}],"rally/common/io/subunit_v2.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"7a41ebed2aa6e1419133321c2598ab4dacd0df7e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def inner(self, test_id\u003dNone, test_status\u003dNone, test_tags\u003dNone,"},{"line_number":47,"context_line":"              runnable\u003dTrue, file_name\u003dNone, file_bytes\u003dNone, eof\u003dFalse,"},{"line_number":48,"context_line":"              mime_type\u003dNone, route_code\u003dNone, timestamp\u003dNone):"},{"line_number":49,"context_line":"        # NOTE(andreykurilin): Variables \u0027runnable\u0027, \u0027eof\u0027, \u0027route_code\u0027 do"},{"line_number":50,"context_line":"        # not used in parser. Variable \u0027test_tags\u0027 is used to store workers"},{"line_number":51,"context_line":"        # info, which is not helpful in parser."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_f13442fc","line":49,"updated":"2015-08-14 13:25:19.000000000","message":"s/do/are/","commit_id":"848fbc35b91abc2af9b4deb6b7870d68638d6c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"34ec5e20b6208ad460f6b28c8a3f05b234d5b9dc","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def inner(self, test_id\u003dNone, test_status\u003dNone, test_tags\u003dNone,"},{"line_number":47,"context_line":"              runnable\u003dTrue, file_name\u003dNone, file_bytes\u003dNone, eof\u003dFalse,"},{"line_number":48,"context_line":"              mime_type\u003dNone, route_code\u003dNone, timestamp\u003dNone):"},{"line_number":49,"context_line":"        # NOTE(andreykurilin): Variables \u0027runnable\u0027, \u0027eof\u0027, \u0027route_code\u0027 do"},{"line_number":50,"context_line":"        # not used in parser. Variable \u0027test_tags\u0027 is used to store workers"},{"line_number":51,"context_line":"        # info, which is not helpful in parser."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_820b052b","line":49,"in_reply_to":"1a4dcd0f_f13442fc","updated":"2015-08-16 09:57:59.000000000","message":"Done","commit_id":"848fbc35b91abc2af9b4deb6b7870d68638d6c7f"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"7a41ebed2aa6e1419133321c2598ab4dacd0df7e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def tests(self):"},{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id in self._tests:"},{"line_number":99,"context_line":"                    if (id.startswith(test_id) and"},{"line_number":100,"context_line":"                            self._tests[id][\"status\"] \u003d\u003d \"init\"):"},{"line_number":101,"context_line":"                        self._tests[id][\"status\"] \u003d ("}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_d12fc6a5","line":98,"updated":"2015-08-14 13:25:19.000000000","message":"s/id/id_/  # shadows built-in","commit_id":"848fbc35b91abc2af9b4deb6b7870d68638d6c7f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"34ec5e20b6208ad460f6b28c8a3f05b234d5b9dc","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def tests(self):"},{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id in self._tests:"},{"line_number":99,"context_line":"                    if (id.startswith(test_id) and"},{"line_number":100,"context_line":"                            self._tests[id][\"status\"] \u003d\u003d \"init\"):"},{"line_number":101,"context_line":"                        self._tests[id][\"status\"] \u003d ("}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_e213e963","line":98,"in_reply_to":"1a4dcd0f_d12fc6a5","updated":"2015-08-16 09:57:59.000000000","message":"Done","commit_id":"848fbc35b91abc2af9b4deb6b7870d68638d6c7f"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from subunit import v2"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_status_map \u003d {"},{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_d8870d11","line":21,"updated":"2015-09-12 23:11:56.000000000","message":"Global constants should be all capitals.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"378e166a32926cc7cca3e3310d90cdb2d8dfc613","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from subunit import v2"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_status_map \u003d {"},{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_f5b64b89","line":21,"in_reply_to":"ba15a1d1_d8870d11","updated":"2015-11-09 20:07:42.000000000","message":"Done","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def parse_input_data(func):"},{"line_number":46,"context_line":"    def inner(self, test_id\u003dNone, test_status\u003dNone, test_tags\u003dNone,"},{"line_number":47,"context_line":"              runnable\u003dTrue, file_name\u003dNone, file_bytes\u003dNone, eof\u003dFalse,"},{"line_number":48,"context_line":"              mime_type\u003dNone, route_code\u003dNone, timestamp\u003dNone):"},{"line_number":49,"context_line":"        # NOTE(andreykurilin): Variables \u0027runnable\u0027, \u0027eof\u0027, \u0027route_code\u0027 are"}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_3398ff74","line":46,"updated":"2015-09-12 23:11:56.000000000","message":"Please wrap it in functools.wraps.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"378e166a32926cc7cca3e3310d90cdb2d8dfc613","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def parse_input_data(func):"},{"line_number":46,"context_line":"    def inner(self, test_id\u003dNone, test_status\u003dNone, test_tags\u003dNone,"},{"line_number":47,"context_line":"              runnable\u003dTrue, file_name\u003dNone, file_bytes\u003dNone, eof\u003dFalse,"},{"line_number":48,"context_line":"              mime_type\u003dNone, route_code\u003dNone, timestamp\u003dNone):"},{"line_number":49,"context_line":"        # NOTE(andreykurilin): Variables \u0027runnable\u0027, \u0027eof\u0027, \u0027route_code\u0027 are"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_fea86ddd","line":46,"in_reply_to":"da20952f_3398ff74","updated":"2015-11-09 20:07:42.000000000","message":"Why? decorator `parse_input_data` wraps inner method(status) which should not be called outside this module","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        if not test_id:"},{"line_number":54,"context_line":"            return"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if (test_id.startswith(\"setUpClass (\") or"},{"line_number":57,"context_line":"                test_id.startswith(\"tearDown (\")):"},{"line_number":58,"context_line":"            test_id \u003d test_id[test_id.find(\"(\") + 1:-1]"},{"line_number":59,"context_line":"        if test_id.find(\"[\") \u003e -1:"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_f8d77121","line":56,"updated":"2015-09-12 23:11:56.000000000","message":"Please use regexps here.\n\n MIME_TYPE_CHARSET_RE \u003d re.compile(\"charset\u003d\\\"?(?P\u003ccharset\u003e[\\w\\d_-]+)\\\"?\")\n\n  charset \u003d None\n  if mime_type:\n     group \u003d MIME_TYPE_CHARSET_RE.search(mime_type)\n     if group:\n          charset \u003d group.group(\"charset\")","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            test_id \u003d test_id[test_id.find(\"(\") + 1:-1]"},{"line_number":59,"context_line":"        if test_id.find(\"[\") \u003e -1:"},{"line_number":60,"context_line":"            test_id, tags \u003d test_id.split(\"[\")"},{"line_number":61,"context_line":"            test_tags \u003d tags[:-1].split(\",\")"},{"line_number":62,"context_line":"        else:"},{"line_number":63,"context_line":"            test_tags \u003d []"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_3a13345e","line":61,"updated":"2015-09-12 23:11:56.000000000","message":"The `test_tags\u0027 mean a different thing. Please don\u0027t change semantics of the variable -- it gives people outside of your scope (i.e. anyone else) hard times guessing why there is no original values in `test_tags\u0027 and where your parsed values do come from.\n\nBetter yet, introduce a different variable and use it.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"378e166a32926cc7cca3e3310d90cdb2d8dfc613","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            test_id \u003d test_id[test_id.find(\"(\") + 1:-1]"},{"line_number":59,"context_line":"        if test_id.find(\"[\") \u003e -1:"},{"line_number":60,"context_line":"            test_id, tags \u003d test_id.split(\"[\")"},{"line_number":61,"context_line":"            test_tags \u003d tags[:-1].split(\",\")"},{"line_number":62,"context_line":"        else:"},{"line_number":63,"context_line":"            test_tags \u003d []"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_352cd301","line":61,"in_reply_to":"da20952f_3a13345e","updated":"2015-11-09 20:07:42.000000000","message":"Done","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        else:"},{"line_number":63,"context_line":"            test_tags \u003d []"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        if mime_type:"},{"line_number":66,"context_line":"            mime_type, charset \u003d mime_type.split(\"; \")[:2]"},{"line_number":67,"context_line":"            charset \u003d charset.split(\"\u003d\")[1]"},{"line_number":68,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_98dc3548","line":65,"updated":"2015-09-12 23:11:56.000000000","message":"Please use regexps here.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \"xfail\": 0}"},{"line_number":89,"context_line":"        self._timestaps \u003d {}"},{"line_number":90,"context_line":"        # let\u0027s save unknown entities and process them after main test case"},{"line_number":91,"context_line":"        self._unknown_entities \u003d {}"},{"line_number":92,"context_line":"        self._loaded \u003d False"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_f8a531b5","line":91,"updated":"2015-09-12 23:11:56.000000000","message":"Please call this `_maybe_tests\u0027.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"378e166a32926cc7cca3e3310d90cdb2d8dfc613","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \"xfail\": 0}"},{"line_number":89,"context_line":"        self._timestaps \u003d {}"},{"line_number":90,"context_line":"        # let\u0027s save unknown entities and process them after main test case"},{"line_number":91,"context_line":"        self._unknown_entities \u003d {}"},{"line_number":92,"context_line":"        self._loaded \u003d False"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_352db346","line":91,"in_reply_to":"ba15a1d1_f8a531b5","updated":"2015-11-09 20:07:42.000000000","message":"It is not tests. Subunit splits info of each test and send it by chunks. This variable stores such kind of chunks.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @property"},{"line_number":95,"context_line":"    def tests(self):"},{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id_ in self._tests:"},{"line_number":99,"context_line":"                    if (id_.startswith(test_id) and"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_38ee49ed","line":96,"updated":"2015-09-12 23:11:56.000000000","message":"I don\u0027t like this `_loaded\u0027 name. You actually fixing (and merging) values. Please rename it accordingly.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"378e166a32926cc7cca3e3310d90cdb2d8dfc613","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @property"},{"line_number":95,"context_line":"    def tests(self):"},{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id_ in self._tests:"},{"line_number":99,"context_line":"                    if (id_.startswith(test_id) and"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_5530779e","line":96,"in_reply_to":"ba15a1d1_38ee49ed","updated":"2015-11-09 20:07:42.000000000","message":"Done","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    @property"},{"line_number":95,"context_line":"    def tests(self):"},{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id_ in self._tests:"},{"line_number":99,"context_line":"                    if (id_.startswith(test_id) and"},{"line_number":100,"context_line":"                            self._tests[id_][\"status\"] \u003d\u003d \"init\"):"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_38c5e95a","line":97,"updated":"2015-09-12 23:11:56.000000000","message":"Please move this code out to a separate method.\n\nI propose name \u0027_fix_tests\u0027.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"378e166a32926cc7cca3e3310d90cdb2d8dfc613","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    @property"},{"line_number":95,"context_line":"    def tests(self):"},{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id_ in self._tests:"},{"line_number":99,"context_line":"                    if (id_.startswith(test_id) and"},{"line_number":100,"context_line":"                            self._tests[id_][\"status\"] \u003d\u003d \"init\"):"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_5ebad924","line":97,"in_reply_to":"ba15a1d1_38c5e95a","updated":"2015-11-09 20:07:42.000000000","message":"Done","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"bf31977359e9179947f342cdf84694b7de5f0461","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id_ in self._tests:"},{"line_number":99,"context_line":"                    if (id_.startswith(test_id) and"},{"line_number":100,"context_line":"                            self._tests[id_][\"status\"] \u003d\u003d \"init\"):"},{"line_number":101,"context_line":"                        self._tests[id_][\"status\"] \u003d ("},{"line_number":102,"context_line":"                            self._unknown_entities[test_id][\"status\"])"}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_3946027c","line":99,"updated":"2015-09-09 19:11:10.000000000","message":"This if should be written like that:\n\n if not id_.startswith(test_id): continue\n\nOtherwise reason and traceback are overrided with unrelated values.\n\nOverall, I don\u0027t like this O(N^2) scheme, we can and should do better.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"378e166a32926cc7cca3e3310d90cdb2d8dfc613","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id_ in self._tests:"},{"line_number":99,"context_line":"                    if (id_.startswith(test_id) and"},{"line_number":100,"context_line":"                            self._tests[id_][\"status\"] \u003d\u003d \"init\"):"},{"line_number":101,"context_line":"                        self._tests[id_][\"status\"] \u003d ("},{"line_number":102,"context_line":"                            self._unknown_entities[test_id][\"status\"])"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_15b8afe4","line":99,"in_reply_to":"da20952f_2b3f6426","updated":"2015-11-09 20:07:42.000000000","message":"\u003eBTW, here you should use \u003d\u003d, not .startswith, since the latter will join \u0027test_abc\u0027 with \u0027test_abcd\u0027. So, no nested cycles are even required.\n\nIt doesn\u0027t correct. I\u0027ll add note with a reason for this code.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        if not self._loaded:"},{"line_number":97,"context_line":"            for test_id in self._unknown_entities:"},{"line_number":98,"context_line":"                for id_ in self._tests:"},{"line_number":99,"context_line":"                    if (id_.startswith(test_id) and"},{"line_number":100,"context_line":"                            self._tests[id_][\"status\"] \u003d\u003d \"init\"):"},{"line_number":101,"context_line":"                        self._tests[id_][\"status\"] \u003d ("},{"line_number":102,"context_line":"                            self._unknown_entities[test_id][\"status\"])"}],"source_content_type":"text/x-python","patch_set":24,"id":"da20952f_2b3f6426","line":99,"in_reply_to":"da20952f_3946027c","updated":"2015-09-12 23:11:56.000000000","message":"http://paste.openstack.org/show/455144/\n^^^ sample implementation ^^^\n\nSpeed gain is not very big so nested cycles can be used for a while, will just leave it as an example.\n\nBTW, here you should use \u003d\u003d, not .startswith, since the latter will join \u0027test_abc\u0027 with \u0027test_abcd\u0027. So, no nested cycles are even required.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                        self._tests[test_id][file_name] +\u003d file_bytes"},{"line_number":161,"context_line":"        else:"},{"line_number":162,"context_line":"            self._unknown_entities.setdefault(test_id, {\"name\": test_id,"},{"line_number":163,"context_line":"                                                        \"status\": \"init\","},{"line_number":164,"context_line":"                                                        \"reason\": \"\","},{"line_number":165,"context_line":"                                                        \"traceback\": \"\"})"},{"line_number":166,"context_line":"            self._unknown_entities[test_id][\"status\"] \u003d test_status"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_1876e53e","line":163,"updated":"2015-09-12 23:11:56.000000000","message":"This field will be overwritten soon. No need for it.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from subunit import v2"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_STATUS_MAP \u003d {"},{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_34a59aa1","line":21,"updated":"2015-11-10 10:32:03.000000000","message":"\"error\" is missing.","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7a26a944bff458988ef79f477cf80439ffc65999","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from subunit import v2"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_STATUS_MAP \u003d {"},{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_ff07eb19","line":21,"in_reply_to":"da85f559_34a59aa1","updated":"2015-11-10 10:50:08.000000000","message":"It missed everywhere:) It looks like it doesn\u0027t exit in subunit at all[*].\n\n[*] - https://github.com/testing-cabal/subunit/blob/master/python/subunit/v2.py#L85-L93","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2988925af3d7354eed600809888fb2baeac49bd2","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from subunit import v2"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_STATUS_MAP \u003d {"},{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_babdf169","line":21,"in_reply_to":"da85f559_ff07eb19","updated":"2015-11-10 12:45:52.000000000","message":"After small investigation, it looks like \"error\" status is used in unittest library, but since we don\u0027t use it, this status can be ignored.","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_STATUS_MAP \u003d {"},{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","},{"line_number":25,"context_line":"    \"xfail\": \"xFAIL\","},{"line_number":26,"context_line":"    \"skip\": \"SKIP\""}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_abd4c91f","line":23,"updated":"2015-11-10 10:32:03.000000000","message":"I think it should be UX-OK","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2988925af3d7354eed600809888fb2baeac49bd2","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_STATUS_MAP \u003d {"},{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","},{"line_number":25,"context_line":"    \"xfail\": \"xFAIL\","},{"line_number":26,"context_line":"    \"skip\": \"SKIP\""}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_875f71e4","line":23,"in_reply_to":"da85f559_abd4c91f","updated":"2015-11-10 12:45:52.000000000","message":"not sure that we need change \"real\" statuses to something else.","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    \"success\": \"OK\","},{"line_number":23,"context_line":"    \"uxsuccess\": \"uxSUCCESS\","},{"line_number":24,"context_line":"    \"fail\": \"FAIL\","},{"line_number":25,"context_line":"    \"xfail\": \"xFAIL\","},{"line_number":26,"context_line":"    \"skip\": \"SKIP\""},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_4b92fd58","line":25,"updated":"2015-11-10 10:32:03.000000000","message":"I think it should be X-FAIL","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        # https://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds"},{"line_number":40,"context_line":"        s \u003d (td.microseconds +"},{"line_number":41,"context_line":"             (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10.0 ** 6"},{"line_number":42,"context_line":"    return \"%.8f\" % s"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def preparse_input_args(func):"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_6b6ee102","line":42,"updated":"2015-11-10 10:32:03.000000000","message":"Why do we need such precision? I think setting precision to 4 will be enough.","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7a26a944bff458988ef79f477cf80439ffc65999","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        # https://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds"},{"line_number":40,"context_line":"        s \u003d (td.microseconds +"},{"line_number":41,"context_line":"             (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10.0 ** 6"},{"line_number":42,"context_line":"    return \"%.8f\" % s"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def preparse_input_args(func):"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_5adac579","line":42,"in_reply_to":"da85f559_6b6ee102","updated":"2015-11-10 10:50:08.000000000","message":"will decrease to 5","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        self._tests[test_id][file_name] \u003d file_bytes"},{"line_number":168,"context_line":"                        # TODO(andreykurilin): use mime_type to decode final"},{"line_number":169,"context_line":"                        #   file_bytes"},{"line_number":170,"context_line":"                        # self._tests[test_id][\"mime_type\"] \u003d mime_type"},{"line_number":171,"context_line":"                    else:"},{"line_number":172,"context_line":"                        self._tests[test_id][file_name] +\u003d file_bytes"},{"line_number":173,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_ae32970e","line":170,"updated":"2015-11-10 10:32:03.000000000","message":"What is the reason to keep this line commented?","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7a26a944bff458988ef79f477cf80439ffc65999","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        self._tests[test_id][file_name] \u003d file_bytes"},{"line_number":168,"context_line":"                        # TODO(andreykurilin): use mime_type to decode final"},{"line_number":169,"context_line":"                        #   file_bytes"},{"line_number":170,"context_line":"                        # self._tests[test_id][\"mime_type\"] \u003d mime_type"},{"line_number":171,"context_line":"                    else:"},{"line_number":172,"context_line":"                        self._tests[test_id][file_name] +\u003d file_bytes"},{"line_number":173,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_5a93a5a3","line":170,"in_reply_to":"da85f559_ae32970e","updated":"2015-11-10 10:50:08.000000000","message":"removed","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    with open(filename, \"rb\") as source:"},{"line_number":198,"context_line":"        results \u003d SubunitV2StreamResult()"},{"line_number":199,"context_line":"        v2.ByteStreamToStreamResult(source\u003dsource,"},{"line_number":200,"context_line":"                                    non_subunit_name\u003dTrue).run(results)"},{"line_number":201,"context_line":"        return results"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_191d2fbd","line":200,"updated":"2015-11-10 10:32:03.000000000","message":"It looks like non_subunit_name should be a str, not boolean.","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7a26a944bff458988ef79f477cf80439ffc65999","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    with open(filename, \"rb\") as source:"},{"line_number":198,"context_line":"        results \u003d SubunitV2StreamResult()"},{"line_number":199,"context_line":"        v2.ByteStreamToStreamResult(source\u003dsource,"},{"line_number":200,"context_line":"                                    non_subunit_name\u003dTrue).run(results)"},{"line_number":201,"context_line":"        return results"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_1a8d1d7b","line":200,"in_reply_to":"da85f559_191d2fbd","updated":"2015-11-10 10:50:08.000000000","message":"you are right. fixed.","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"}],"rally/common/objects/verification.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def finish_verification(self, total, test_cases):"},{"line_number":59,"context_line":"        # update verification db object"},{"line_number":60,"context_line":"        self._update(status\u003dconsts.TaskStatus.FINISHED,"},{"line_number":61,"context_line":"                     tests\u003dtotal[\"tests\"],"},{"line_number":62,"context_line":"                     errors\u003dtotal[\"errors\"],"},{"line_number":63,"context_line":"                     failures\u003d(total[\"failures\"] + total[\"expected_failures\"]),"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_99a35f4f","line":60,"updated":"2015-11-10 10:32:03.000000000","message":"What about \"success\", \"uxsuccess\", \"skipped\" here?","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7a26a944bff458988ef79f477cf80439ffc65999","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def finish_verification(self, total, test_cases):"},{"line_number":59,"context_line":"        # update verification db object"},{"line_number":60,"context_line":"        self._update(status\u003dconsts.TaskStatus.FINISHED,"},{"line_number":61,"context_line":"                     tests\u003dtotal[\"tests\"],"},{"line_number":62,"context_line":"                     errors\u003dtotal[\"errors\"],"},{"line_number":63,"context_line":"                     failures\u003d(total[\"failures\"] + total[\"expected_failures\"]),"}],"source_content_type":"text/x-python","patch_set":27,"id":"da85f559_5f3cf72e","line":60,"in_reply_to":"da85f559_99a35f4f","updated":"2015-11-10 10:50:08.000000000","message":"It is impossible now(until rally will support db migration). Please look at db model for more details - https://github.com/openstack/rally/blob/master/rally/common/db/sqlalchemy/models.py#L186-L209","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            return None"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if \"errors\" in results:"},{"line_number":84,"context_line":"            # NOTE(andreykurilin): there are no \"error\" status in verification"},{"line_number":85,"context_line":"            # and this key presents only in old format."},{"line_number":86,"context_line":"            for test in results[\"test_cases\"].keys():"},{"line_number":87,"context_line":"                old_status \u003d results[\"test_cases\"][test][\"status\"]"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_f0191589","line":84,"updated":"2015-11-11 16:09:13.000000000","message":"there IS no \"error\" status in verification ...","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            return None"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if \"errors\" in results:"},{"line_number":84,"context_line":"            # NOTE(andreykurilin): there are no \"error\" status in verification"},{"line_number":85,"context_line":"            # and this key presents only in old format."},{"line_number":86,"context_line":"            for test in results[\"test_cases\"].keys():"},{"line_number":87,"context_line":"                old_status \u003d results[\"test_cases\"][test][\"status\"]"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_4e395da3","line":84,"in_reply_to":"da85f559_f0191589","updated":"2015-11-11 16:29:42.000000000","message":"typo, will be fixed.","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"020ba27bf24a42fc21823ac1c665047a4f3b3fba","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            return None"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if \"errors\" in results:"},{"line_number":84,"context_line":"            # NOTE(andreykurilin): there in no \"error\" status in verification"},{"line_number":85,"context_line":"            # and this key presents only in old format, so it can be used as"},{"line_number":86,"context_line":"            # an identifier for old format."},{"line_number":87,"context_line":"            for test in results[\"test_cases\"].keys():"}],"source_content_type":"text/x-python","patch_set":32,"id":"da85f559_7406741e","line":84,"updated":"2015-11-11 16:42:46.000000000","message":"\"there IS ...\" instead of \"there IN ...\" :)","commit_id":"aeea596d2b8e69ed814d0df6bbe09b27dc871b0f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"33a5c93b7b7d569b2870efb1f3ec25383c5ad06d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # update verification db object"},{"line_number":67,"context_line":"        self._update(status\u003dconsts.TaskStatus.FINISHED,"},{"line_number":68,"context_line":"                     tests\u003dtotal[\"tests\"],"},{"line_number":69,"context_line":"                     failures\u003d(total[\"failures\"] + total[\"expected_failures\"]),"},{"line_number":70,"context_line":"                     time\u003dtotal[\"time\"])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # create db object for results"}],"source_content_type":"text/x-python","patch_set":33,"id":"da85f559_82adc89c","line":69,"updated":"2015-11-11 22:17:51.000000000","message":"I think we should describe the reason why we merge it.","commit_id":"cc4a87cadeb7914f7c7d4d520e8db2973c3d6716"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"33a5c93b7b7d569b2870efb1f3ec25383c5ad06d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                if \"failure\" in results[\"test_cases\"][test]:"},{"line_number":94,"context_line":"                    results[\"test_cases\"][test][\"traceback\"] \u003d results["},{"line_number":95,"context_line":"                        \"test_cases\"][test][\"failure\"][\"log\"]"},{"line_number":96,"context_line":"                    results[\"test_cases\"][test].pop(\"traceback\")"},{"line_number":97,"context_line":"            results[\"unexpected_success\"] \u003d 0"},{"line_number":98,"context_line":"            results[\"expected_failures\"] \u003d 0"},{"line_number":99,"context_line":"        return results"}],"source_content_type":"text/x-python","patch_set":33,"id":"da85f559_5f081b28","line":96,"updated":"2015-11-11 22:17:51.000000000","message":"del results[\"test_cases\"][test][\"FAILURE\"], not \"traceback\". Isn\u0027t it?","commit_id":"cc4a87cadeb7914f7c7d4d520e8db2973c3d6716"}],"rally/ui/templates/verification/report.mako":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"80412f7a6f24b27cbf151ae6157dbea4cd768e92","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    table td { padding:4px 8px; word-wrap:break-word; word-break:break-all }"},{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    .status-ok, .status-ok td { color:green }"},{"line_number":25,"context_line":"    .status-xfail, .status-xfail td { color:#FF4C4C}"},{"line_number":26,"context_line":"\u003c/%block\u003e"},{"line_number":27,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"ba3cc151_411b2973","line":24,"updated":"2015-07-10 09:45:13.000000000","message":"Why don\u0027t use/extend styles from base template? https://github.com/openstack/rally/blob/master/rally/ui/templates/base.mako#L30-L32","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"65b2ba6ef939730d2aedfbfc512a108d9babf542","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    table td { padding:4px 8px; word-wrap:break-word; word-break:break-all }"},{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    .status-ok, .status-ok td { color:green }"},{"line_number":25,"context_line":"    .status-xfail, .status-xfail td { color:#FF4C4C}"},{"line_number":26,"context_line":"\u003c/%block\u003e"},{"line_number":27,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"ba3cc151_a670e074","line":24,"in_reply_to":"ba3cc151_38ecef91","updated":"2015-07-10 10:39:30.000000000","message":"in python? it redundant to iterate all results and map change statuses each time\n\nin template? one css line is better than \n\n    if(task[\"status\"] \u003d \"ok\"){\n        \u003ctr id\u003d\"${test[\u0027id\u0027]}\" class\u003d\"test-row status-pass\"\u003e\n    }else{\n        \u003ctr id\u003d\"${test[\u0027id\u0027]}\" class\u003d\"test-row status-${test[\u0027status\u0027]}\"\u003e\n    }\n\nIf there is a better way, please tell me. I\u0027m not web-guru:(","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"53db45ded1fd0d4648fb6896de8a5fb426e1d965","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    table td { padding:4px 8px; word-wrap:break-word; word-break:break-all }"},{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    .status-ok, .status-ok td { color:green }"},{"line_number":25,"context_line":"    .status-xfail, .status-xfail td { color:#FF4C4C}"},{"line_number":26,"context_line":"\u003c/%block\u003e"},{"line_number":27,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"ba3cc151_98673bb7","line":24,"in_reply_to":"ba3cc151_411b2973","updated":"2015-07-10 10:00:20.000000000","message":"This page is verification specific. It generated based on parsed junit(subunit) output, so I prefer to use the correct status names. Also, xfail doesn\u0027t have alternative in base template.\n\nSince \"ok\" and \"xfail\" statuses are subunit(junit) specific, imo, we don\u0027t need it in base template.","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"43803d60afcd2043a79e5ed615124f9eae83b37c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    table td { padding:4px 8px; word-wrap:break-word; word-break:break-all }"},{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    .status-ok, .status-ok td { color:green }"},{"line_number":25,"context_line":"    .status-xfail, .status-xfail td { color:#FF4C4C}"},{"line_number":26,"context_line":"\u003c/%block\u003e"},{"line_number":27,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"1a4dcd0f_b5faa273","line":24,"in_reply_to":"ba3cc151_86711c47","updated":"2015-08-06 11:54:21.000000000","message":"let\u0027s do it, when we will switch to use jinja2 ;)","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"4b76a4756aee3f48e6ae13bd40b044eeccc88fe4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    table td { padding:4px 8px; word-wrap:break-word; word-break:break-all }"},{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    .status-ok, .status-ok td { color:green }"},{"line_number":25,"context_line":"    .status-xfail, .status-xfail td { color:#FF4C4C}"},{"line_number":26,"context_line":"\u003c/%block\u003e"},{"line_number":27,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"ba3cc151_38ecef91","line":24,"in_reply_to":"ba3cc151_98673bb7","updated":"2015-07-10 10:10:48.000000000","message":"simply map \"ok\" to \"success\"","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"fd32423e698e544b526c17edf71e2a37ecf6204f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    table td { padding:4px 8px; word-wrap:break-word; word-break:break-all }"},{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    .status-ok, .status-ok td { color:green }"},{"line_number":25,"context_line":"    .status-xfail, .status-xfail td { color:#FF4C4C}"},{"line_number":26,"context_line":"\u003c/%block\u003e"},{"line_number":27,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":22,"id":"ba3cc151_86711c47","line":24,"in_reply_to":"ba3cc151_a670e074","updated":"2015-07-10 10:45:56.000000000","message":"I believe sometimes I replace mako with jinja2 and do this easily on template level","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":65,"context_line":"          \u003ctd\u003e${report[\u0027expected_failures\u0027]}"},{"line_number":66,"context_line":"          \u003ctd\u003e${report[\u0027unexpected_success\u0027]}"},{"line_number":67,"context_line":"          \u003ctd\u003e${report[\u0027errors\u0027]}"},{"line_number":68,"context_line":"          \u003ctd\u003e${report[\u0027skipped\u0027]}"},{"line_number":69,"context_line":"        \u003c/tr\u003e"},{"line_number":70,"context_line":"      \u003c/tbody\u003e"},{"line_number":71,"context_line":"    \u003c/table\u003e"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"da85f559_34435a44","line":68,"updated":"2015-11-10 10:32:03.000000000","message":"What about adding total time here?","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    \u003c/table\u003e"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    \u003cdiv class\u003d\"nav\"\u003e"},{"line_number":74,"context_line":"      \u003cspan data-navselector\u003d\".test-row\"\u003eall\u003c/span\u003e"},{"line_number":75,"context_line":"      \u003cspan data-navselector\u003d\".status-ok\"\u003esuccess\u003c/span\u003e"},{"line_number":76,"context_line":"      \u003cspan data-navselector\u003d\".status-fail\"\u003efailed\u003c/span\u003e"},{"line_number":77,"context_line":"      \u003cspan data-navselector\u003d\".status-uxsuccess\"\u003euxsuccess\u003c/span\u003e"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"da85f559_ffba8b22","line":74,"updated":"2015-11-10 10:32:03.000000000","message":"I think we should leave it as it was before. I mean \n\n    ALL\n    SUCCESS \n    FAILED\n    UXSUCCESS\n    XFAILED\n    SKIPPED","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7a26a944bff458988ef79f477cf80439ffc65999","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    \u003c/table\u003e"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    \u003cdiv class\u003d\"nav\"\u003e"},{"line_number":74,"context_line":"      \u003cspan data-navselector\u003d\".test-row\"\u003eall\u003c/span\u003e"},{"line_number":75,"context_line":"      \u003cspan data-navselector\u003d\".status-ok\"\u003esuccess\u003c/span\u003e"},{"line_number":76,"context_line":"      \u003cspan data-navselector\u003d\".status-fail\"\u003efailed\u003c/span\u003e"},{"line_number":77,"context_line":"      \u003cspan data-navselector\u003d\".status-uxsuccess\"\u003euxsuccess\u003c/span\u003e"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"da85f559_1f466fbf","line":74,"in_reply_to":"da85f559_ffba8b22","updated":"2015-11-10 10:50:08.000000000","message":"Why we need to underscore it?","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0b134cf3c55516ab5dde54e442d0424de7b2b9e6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"      \u003cspan data-navselector\u003d\".status-fail\"\u003efailed\u003c/span\u003e"},{"line_number":77,"context_line":"      \u003cspan data-navselector\u003d\".status-uxsuccess\"\u003euxsuccess\u003c/span\u003e"},{"line_number":78,"context_line":"      \u003cspan data-navselector\u003d\".status-xfail\"\u003exfailed\u003c/span\u003e"},{"line_number":79,"context_line":"      \u003cspan data-navselector\u003d\".status-skip\"\u003eskipped\u003c/span\u003e"},{"line_number":80,"context_line":"    \u003c/div\u003e"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    \u003ctable id\u003d\"tests\"\u003e"}],"source_content_type":"application/octet-stream","patch_set":27,"id":"da85f559_5f9397a3","line":79,"updated":"2015-11-10 10:32:03.000000000","message":"ERRORS is missing here.","commit_id":"d1052b5b659c7cbaa7391e486a4e807df1949666"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":"    td.not_break_column {word-break:keep-all}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    .status-success, .status-success td { color:green }"},{"line_number":26,"context_line":"    .status-xfail, .status-xfail td { color:#CCCC00}"},{"line_number":27,"context_line":"\u003c/%block\u003e"},{"line_number":28,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_8bc3b888","line":25,"updated":"2015-11-11 16:09:13.000000000","message":"It looks like it should be\n\n    status-uxsuccess, .status-uxsuccess td { color:orange }","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    table.stat { width:auto; margin:0 0 15px }"},{"line_number":23,"context_line":"    td.not_break_column {word-break:keep-all}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    .status-success, .status-success td { color:green }"},{"line_number":26,"context_line":"    .status-xfail, .status-xfail td { color:#CCCC00}"},{"line_number":27,"context_line":"\u003c/%block\u003e"},{"line_number":28,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_ce046d4b","line":25,"in_reply_to":"da85f559_8bc3b888","updated":"2015-11-11 16:29:42.000000000","message":"Done","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    td.not_break_column {word-break:keep-all}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    .status-success, .status-success td { color:green }"},{"line_number":26,"context_line":"    .status-xfail, .status-xfail td { color:#CCCC00}"},{"line_number":27,"context_line":"\u003c/%block\u003e"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"\u003c%block name\u003d\"css_content_wrap\"\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_abb31c99","line":26,"updated":"2015-11-11 16:09:13.000000000","message":"I think we can use \"darkkhaki\" color here. It will look much more cleaner than #CCCC00.","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    td.not_break_column {word-break:keep-all}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    .status-success, .status-success td { color:green }"},{"line_number":26,"context_line":"    .status-xfail, .status-xfail td { color:#CCCC00}"},{"line_number":27,"context_line":"\u003c/%block\u003e"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"\u003c%block name\u003d\"css_content_wrap\"\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_aea56947","line":26,"in_reply_to":"da85f559_abb31c99","updated":"2015-11-11 16:29:42.000000000","message":"not sure that darkkhaki is a better color:) let\u0027s use #CCCC00 now and change it in next patch if needed, since this patch is more about parsing and less about how to display results","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a0f2c2239bf51914901b609f79b077ebac0fe107","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    td.not_break_column {word-break:keep-all}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    .status-success, .status-success td { color:green }"},{"line_number":26,"context_line":"    .status-xfail, .status-xfail td { color:#CCCC00}"},{"line_number":27,"context_line":"\u003c/%block\u003e"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"\u003c%block name\u003d\"css_content_wrap\"\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_718f662a","line":26,"in_reply_to":"da85f559_aea56947","updated":"2015-11-11 16:35:14.000000000","message":"np, I don\u0027t insist :)","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":64,"context_line":"          \u003ctd\u003e${report[\u0027time\u0027]}"},{"line_number":65,"context_line":"          \u003ctd\u003e${report[\u0027success\u0027]}"},{"line_number":66,"context_line":"          \u003ctd\u003e${report[\u0027failures\u0027]}"},{"line_number":67,"context_line":"          \u003ctd\u003e${report[\u0027expected_failures\u0027]}"},{"line_number":68,"context_line":"          \u003ctd\u003e${report[\u0027unexpected_success\u0027]}"},{"line_number":69,"context_line":"          \u003ctd\u003e${report[\u0027skipped\u0027]}"},{"line_number":70,"context_line":"        \u003c/tr\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_ab579c58","line":67,"updated":"2015-11-11 16:09:13.000000000","message":"We should keep consistency\n\n    report[\u0027total\u0027]\n    report[\u0027time\u0027]\n\n    report[\u0027success\u0027]\n    report[\u0027failures\u0027]\n\n    report[\u0027unexpected_success\u0027]\n    report[\u0027expected_failures\u0027]\n\n    report[\u0027skipped\u0027]\n\nI mean we need to swap report[\u0027expected_failures\u0027] and report[\u0027unexpected_success\u0027].","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":64,"context_line":"          \u003ctd\u003e${report[\u0027time\u0027]}"},{"line_number":65,"context_line":"          \u003ctd\u003e${report[\u0027success\u0027]}"},{"line_number":66,"context_line":"          \u003ctd\u003e${report[\u0027failures\u0027]}"},{"line_number":67,"context_line":"          \u003ctd\u003e${report[\u0027expected_failures\u0027]}"},{"line_number":68,"context_line":"          \u003ctd\u003e${report[\u0027unexpected_success\u0027]}"},{"line_number":69,"context_line":"          \u003ctd\u003e${report[\u0027skipped\u0027]}"},{"line_number":70,"context_line":"        \u003c/tr\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_4ec95d25","line":67,"in_reply_to":"da85f559_ab579c58","updated":"2015-11-11 16:29:42.000000000","message":"np. fixed.","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    \u003cdiv class\u003d\"nav\"\u003e"},{"line_number":75,"context_line":"      \u003cspan data-navselector\u003d\".test-row\"\u003eall\u003c/span\u003e"},{"line_number":76,"context_line":"      \u003cspan data-navselector\u003d\".status-success\"\u003esuccess\u003c/span\u003e"},{"line_number":77,"context_line":"      \u003cspan data-navselector\u003d\".status-fail\"\u003efailed\u003c/span\u003e"},{"line_number":78,"context_line":"      \u003cspan data-navselector\u003d\".status-uxsuccess\"\u003euxsuccess\u003c/span\u003e"},{"line_number":79,"context_line":"      \u003cspan data-navselector\u003d\".status-xfail\"\u003exfailed\u003c/span\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_2bf08c90","line":76,"updated":"2015-11-11 16:09:13.000000000","message":"To keep consistency we can use \"succeeded\" instead of \"success\".","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    \u003cdiv class\u003d\"nav\"\u003e"},{"line_number":75,"context_line":"      \u003cspan data-navselector\u003d\".test-row\"\u003eall\u003c/span\u003e"},{"line_number":76,"context_line":"      \u003cspan data-navselector\u003d\".status-success\"\u003esuccess\u003c/span\u003e"},{"line_number":77,"context_line":"      \u003cspan data-navselector\u003d\".status-fail\"\u003efailed\u003c/span\u003e"},{"line_number":78,"context_line":"      \u003cspan data-navselector\u003d\".status-uxsuccess\"\u003euxsuccess\u003c/span\u003e"},{"line_number":79,"context_line":"      \u003cspan data-navselector\u003d\".status-xfail\"\u003exfailed\u003c/span\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_8e1e65b9","line":76,"in_reply_to":"da85f559_2bf08c90","updated":"2015-11-11 16:29:42.000000000","message":"I want to leave names of statuses as it exists in subunit/testtools","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a0f2c2239bf51914901b609f79b077ebac0fe107","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    \u003cdiv class\u003d\"nav\"\u003e"},{"line_number":75,"context_line":"      \u003cspan data-navselector\u003d\".test-row\"\u003eall\u003c/span\u003e"},{"line_number":76,"context_line":"      \u003cspan data-navselector\u003d\".status-success\"\u003esuccess\u003c/span\u003e"},{"line_number":77,"context_line":"      \u003cspan data-navselector\u003d\".status-fail\"\u003efailed\u003c/span\u003e"},{"line_number":78,"context_line":"      \u003cspan data-navselector\u003d\".status-uxsuccess\"\u003euxsuccess\u003c/span\u003e"},{"line_number":79,"context_line":"      \u003cspan data-navselector\u003d\".status-xfail\"\u003exfailed\u003c/span\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_11ae1a81","line":76,"in_reply_to":"da85f559_8e1e65b9","updated":"2015-11-11 16:35:14.000000000","message":"OK, np.","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":75,"context_line":"      \u003cspan data-navselector\u003d\".test-row\"\u003eall\u003c/span\u003e"},{"line_number":76,"context_line":"      \u003cspan data-navselector\u003d\".status-success\"\u003esuccess\u003c/span\u003e"},{"line_number":77,"context_line":"      \u003cspan data-navselector\u003d\".status-fail\"\u003efailed\u003c/span\u003e"},{"line_number":78,"context_line":"      \u003cspan data-navselector\u003d\".status-uxsuccess\"\u003euxsuccess\u003c/span\u003e"},{"line_number":79,"context_line":"      \u003cspan data-navselector\u003d\".status-xfail\"\u003exfailed\u003c/span\u003e"},{"line_number":80,"context_line":"      \u003cspan data-navselector\u003d\".status-skip\"\u003eskipped\u003c/span\u003e"},{"line_number":81,"context_line":"    \u003c/div\u003e"}],"source_content_type":"application/octet-stream","patch_set":31,"id":"da85f559_ab323c5c","line":78,"updated":"2015-11-11 16:09:13.000000000","message":"ditto","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"}],"rally/verification/common/subunit_parser.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"3e18705a4d4e2c0c5ec75a9b4994f1633cfe74fd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        # this method"},{"line_number":57,"context_line":"        if hasattr(td, \"total_seconds\"):"},{"line_number":58,"context_line":"            return td.total_seconds()"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            return (td.microseconds +"},{"line_number":61,"context_line":"                    (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10.0 ** 6"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afb71cf_98471377","line":59,"updated":"2015-06-08 12:22:42.000000000","message":"This `else\u0027 can be deleted since there is `return\u0027 above","commit_id":"9bb0a93e65f422889d6fe465957c0f0a1a2c81f8"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"3e18705a4d4e2c0c5ec75a9b4994f1633cfe74fd","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            return td.total_seconds()"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            return (td.microseconds +"},{"line_number":61,"context_line":"                    (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10.0 ** 6"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def stopTestRun(self):"},{"line_number":64,"context_line":"        if self._first_time and self._last_time:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afb71cf_d32e8cf9","line":61,"updated":"2015-06-08 12:22:42.000000000","message":"`* 10 ** 6) / 10.0 ** 6\u0027 makes no sense\n\nThis looks more compact:\n\n return td.days * 86400 + td.seconds + td.microseconds / 1000000.","commit_id":"9bb0a93e65f422889d6fe465957c0f0a1a2c81f8"}],"rally/verification/tempest/diff.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"80412f7a6f24b27cbf151ae6157dbea4cd768e92","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        fields \u003d [\"status\", \"time\", \"output\", \"reason\"]"},{"line_number":73,"context_line":"        diffs \u003d []"},{"line_number":74,"context_line":"        for field in fields:"},{"line_number":75,"context_line":"            val1 \u003d result1.get(field)"},{"line_number":76,"context_line":"            val2 \u003d result2.get(field)"},{"line_number":77,"context_line":"            if val1 !\u003d val2:"},{"line_number":78,"context_line":"                if field \u003d\u003d \"time\":"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba3cc151_81229150","line":75,"updated":"2015-07-10 09:45:13.000000000","message":"Why we replace [field] with get(field) here?\n\nIf `field\u0027 is missed then we will have TypeError at L79","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"53db45ded1fd0d4648fb6896de8a5fb426e1d965","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        fields \u003d [\"status\", \"time\", \"output\", \"reason\"]"},{"line_number":73,"context_line":"        diffs \u003d []"},{"line_number":74,"context_line":"        for field in fields:"},{"line_number":75,"context_line":"            val1 \u003d result1.get(field)"},{"line_number":76,"context_line":"            val2 \u003d result2.get(field)"},{"line_number":77,"context_line":"            if val1 !\u003d val2:"},{"line_number":78,"context_line":"                if field \u003d\u003d \"time\":"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba3cc151_18856b06","line":75,"in_reply_to":"ba3cc151_81229150","updated":"2015-07-10 10:00:20.000000000","message":"\"output\" and \"reason\" fields are optional  and I prefer to not store empty data just to not use get methods. \n\nthe same test can be launched successfully(\"output\" and \"reason\" fields will be not used) at one verification and the can be skipped at the other (field \"reason\" will be added and \"output\" will be not used).","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"43803d60afcd2043a79e5ed615124f9eae83b37c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        fields \u003d [\"status\", \"time\", \"output\", \"reason\"]"},{"line_number":73,"context_line":"        diffs \u003d []"},{"line_number":74,"context_line":"        for field in fields:"},{"line_number":75,"context_line":"            val1 \u003d result1.get(field)"},{"line_number":76,"context_line":"            val2 \u003d result2.get(field)"},{"line_number":77,"context_line":"            if val1 !\u003d val2:"},{"line_number":78,"context_line":"                if field \u003d\u003d \"time\":"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_95d686ef","line":75,"in_reply_to":"ba3cc151_81229150","updated":"2015-08-06 11:54:21.000000000","message":"\u003eIf `field\u0027 is missed then we will have TypeError at L79 \n\nFixed","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        fields \u003d [\"status\", \"time\", \"output\", \"reason\"]"},{"line_number":73,"context_line":"        diffs \u003d []"},{"line_number":74,"context_line":"        for field in fields:"},{"line_number":75,"context_line":"            val1 \u003d result1.get(field, 0)"},{"line_number":76,"context_line":"            val2 \u003d result2.get(field, 0)"},{"line_number":77,"context_line":"            if val1 !\u003d val2:"},{"line_number":78,"context_line":"                if field \u003d\u003d \"time\":"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba15a1d1_df5cccef","line":75,"updated":"2015-09-12 23:11:56.000000000","message":"I have no idea what it does and at this point I\u0027m too afraid to ask...","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        return diffs"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _diff_values(self, name, result1, result2):"},{"line_number":69,"context_line":"        fields \u003d [\"status\", \"time\", \"reason\"]"},{"line_number":70,"context_line":"        diffs \u003d []"},{"line_number":71,"context_line":"        for field in fields:"},{"line_number":72,"context_line":"            val1 \u003d result1.get(field, 0)"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_eb32840f","line":69,"updated":"2015-11-11 16:09:13.000000000","message":"We may have different tracebackes for the same tests. What about to add it here?","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        return diffs"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _diff_values(self, name, result1, result2):"},{"line_number":69,"context_line":"        fields \u003d [\"status\", \"time\", \"reason\"]"},{"line_number":70,"context_line":"        diffs \u003d []"},{"line_number":71,"context_line":"        for field in fields:"},{"line_number":72,"context_line":"            val1 \u003d result1.get(field, 0)"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_ee5db147","line":69,"in_reply_to":"da85f559_eb32840f","updated":"2015-11-11 16:29:42.000000000","message":"Done","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"33a5c93b7b7d569b2870efb1f3ec25383c5ad06d","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        Typical test case json schema:"},{"line_number":44,"context_line":"            \"test_case_key\": {"},{"line_number":45,"context_line":"                \"traceback\": \"\","},{"line_number":46,"context_line":"                \"name\": \"\","},{"line_number":47,"context_line":"                \"status\": \"\","},{"line_number":48,"context_line":"                \"time\": 0.0"}],"source_content_type":"text/x-python","patch_set":33,"id":"da85f559_ff4f8f31","line":45,"updated":"2015-11-11 22:17:51.000000000","message":"\"reason\" should be added here.","commit_id":"cc4a87cadeb7914f7c7d4d520e8db2973c3d6716"}],"rally/verification/tempest/json2html.py":[{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"073adef99d5b4c092b5fd7834ee4b5a9f341e6ef","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        tests \u003d []"},{"line_number":36,"context_line":"        for i, name in enumerate(sorted(self.results)):"},{"line_number":37,"context_line":"            test \u003d self.results[name]"},{"line_number":38,"context_line":"            if test.get(\"failure\"):"},{"line_number":39,"context_line":"                log \u003d test.get(\"failure\").get(\"log\", \"\")"},{"line_number":40,"context_line":"            elif test.get(\"reason\"):"},{"line_number":41,"context_line":"                log \u003d test[\"reason\"]"},{"line_number":42,"context_line":"            else:"},{"line_number":43,"context_line":"                log \u003d \"\""},{"line_number":44,"context_line":"            status \u003d STATUS_MAP.get(test[\"status\"])"},{"line_number":45,"context_line":"            tests.append({\"id\": i,"},{"line_number":46,"context_line":"                          \"time\": test[\"time\"],"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_3e001d01","line":43,"range":{"start_line":38,"start_character":0,"end_line":43,"end_character":24},"updated":"2015-05-13 11:37:14.000000000","message":"test is type of dict.\nso \nif \"failure\" in test:\n    ...\nelif \"reason\" in test:\n    ...\n...","commit_id":"eaf8718c296b30e1fad5634d0fc7f9a54ec625d1"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"dc4d53732f0113f0afca53861fda23fdf3a1a009","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            elif test.get(\"reason\"):"},{"line_number":41,"context_line":"                log \u003d test[\"reason\"]"},{"line_number":42,"context_line":"            else:"},{"line_number":43,"context_line":"                log \u003d \"\""},{"line_number":44,"context_line":"            status \u003d STATUS_MAP.get(test[\"status\"])"},{"line_number":45,"context_line":"            tests.append({\"id\": i,"},{"line_number":46,"context_line":"                          \"time\": test[\"time\"],"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_0e30bd55","line":43,"in_reply_to":"9a0c5dc1_3e001d01","updated":"2015-05-14 13:29:09.000000000","message":"Done","commit_id":"eaf8718c296b30e1fad5634d0fc7f9a54ec625d1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"8c89fb3c3d8810b9afeb19ffedefbb3b740be6c4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                output +\u003d test[\"traceback\"]"},{"line_number":32,"context_line":"            elif \"reason\" in test:"},{"line_number":33,"context_line":"                output +\u003d test[\"reason\"]"},{"line_number":34,"context_line":"            elif \"output\" in test:"},{"line_number":35,"context_line":"                output +\u003d test[\"output\"]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"            tests.append({\"id\": i,"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_8bef37e8","line":34,"updated":"2015-11-11 16:09:13.000000000","message":"Typical test case json schema:\n    \"test_case_key\": {\n        \"traceback\": \"\",\n        \"name\": \"\",\n        \"status\": \"\",\n        \"time\": 0.0\n    }\n\nWhy is \"output\" present here?","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"26c90d6718faa25739389fde79b519ec773eedb1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                output +\u003d test[\"traceback\"]"},{"line_number":32,"context_line":"            elif \"reason\" in test:"},{"line_number":33,"context_line":"                output +\u003d test[\"reason\"]"},{"line_number":34,"context_line":"            elif \"output\" in test:"},{"line_number":35,"context_line":"                output +\u003d test[\"output\"]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"            tests.append({\"id\": i,"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_d13c12ca","line":34,"in_reply_to":"da85f559_8bef37e8","updated":"2015-11-11 16:29:42.000000000","message":"Done","commit_id":"35d0cd4326ef5ce4b327af4c3ea382487a73667e"}],"rally/verification/tempest/subunit2json.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"b32e991e9ae708a5ec118ef8f4e96876beac018b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"ba15a1d1_3f6ce89b","line":1,"updated":"2015-09-12 23:11:56.000000000","message":"These.\n\nI like to review these. Please more of these.","commit_id":"6f11327f26fc1a091c3cca62f88e9167f3e1ba1e"}],"tests/unit/common/io/test_subunit_v2.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"80412f7a6f24b27cbf151ae6157dbea4cd768e92","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                          \"time\": \"0.00005200\", \"name\": failed_test},"},{"line_number":62,"context_line":"                         failed_tests[failed_test])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_filter_results(self):"},{"line_number":65,"context_line":"        results \u003d subunit_v2.SubunitV2StreamResult()"},{"line_number":66,"context_line":"        results._tests \u003d {"},{"line_number":67,"context_line":"            \"failed_test_1\": {\"status\": \"FAIL\"},"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba3cc151_d0a29dfb","line":64,"updated":"2015-07-10 09:45:13.000000000","message":"It looks convenient to implement this test with ddt","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"4b76a4756aee3f48e6ae13bd40b044eeccc88fe4","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                          \"time\": \"0.00005200\", \"name\": failed_test},"},{"line_number":62,"context_line":"                         failed_tests[failed_test])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_filter_results(self):"},{"line_number":65,"context_line":"        results \u003d subunit_v2.SubunitV2StreamResult()"},{"line_number":66,"context_line":"        results._tests \u003d {"},{"line_number":67,"context_line":"            \"failed_test_1\": {\"status\": \"FAIL\"},"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba3cc151_f838c7f0","line":64,"in_reply_to":"ba3cc151_58077381","updated":"2015-07-10 10:10:48.000000000","message":"This looks approprite:\n\n @ddt.data(\n     {\"status\": \"ERROR\", \"expected\": ...},\n     {\"status\": \"FAIL\", \"expected\": ...},\n     {\"status\": \"OK\", \"expected\": ...})\n\n\nAlso test name seems to be `test_filter_tests\u0027","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"53db45ded1fd0d4648fb6896de8a5fb426e1d965","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                          \"time\": \"0.00005200\", \"name\": failed_test},"},{"line_number":62,"context_line":"                         failed_tests[failed_test])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_filter_results(self):"},{"line_number":65,"context_line":"        results \u003d subunit_v2.SubunitV2StreamResult()"},{"line_number":66,"context_line":"        results._tests \u003d {"},{"line_number":67,"context_line":"            \"failed_test_1\": {\"status\": \"FAIL\"},"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba3cc151_58077381","line":64,"in_reply_to":"ba3cc151_d0a29dfb","updated":"2015-07-10 10:00:20.000000000","message":"no, we don\u0027t need ddt here. it can help if we need to launch a single test with different parameters. this test are launched only fro one situation.","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"65b2ba6ef939730d2aedfbfc512a108d9babf542","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                          \"time\": \"0.00005200\", \"name\": failed_test},"},{"line_number":62,"context_line":"                         failed_tests[failed_test])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_filter_results(self):"},{"line_number":65,"context_line":"        results \u003d subunit_v2.SubunitV2StreamResult()"},{"line_number":66,"context_line":"        results._tests \u003d {"},{"line_number":67,"context_line":"            \"failed_test_1\": {\"status\": \"FAIL\"},"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba3cc151_9b53b539","line":64,"in_reply_to":"ba3cc151_f838c7f0","updated":"2015-07-10 10:39:30.000000000","message":"Imo, we should use ddt only to reduce number of equal tests, where difference only in input parameters. Also, I dislike big constructions in decorators:\n\n  # looks ok for me\n  @ddt.data(\u0027first_value\u0027, \u0027second_value\u0027)\n  # looks ugly for me\n  @ddt.data({\"status\": \"FAIL\", \"expected\": [\n       {\"status\": \"FAIL\"},\n       {\"status\": \"FAIL\"}]})\n\nIf I use ddt here, the number of lines will be increase, readability(imho) will be worse.","commit_id":"05ea2dcbc7fb1af77bcf747090da251a9add33fd"}],"tests/unit/common/objects/test_verification.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"33a5c93b7b7d569b2870efb1f3ec25383c5ad06d","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        expected_values \u003d {\"status\": \"finished\"}"},{"line_number":91,"context_line":"        expected_values.update(fake_results[\"total\"])"},{"line_number":92,"context_line":"        # expected_failures should be merged with failures"},{"line_number":93,"context_line":"        expected_values.pop(\"expected_failures\")"},{"line_number":94,"context_line":"        mock_verification_update.assert_called_with("},{"line_number":95,"context_line":"            self.db_obj[\"uuid\"], expected_values)"}],"source_content_type":"text/x-python","patch_set":33,"id":"da85f559_22fdfcb3","line":92,"updated":"2015-11-11 22:17:51.000000000","message":"I think we should describe the reason here why it should be merged.","commit_id":"cc4a87cadeb7914f7c7d4d520e8db2973c3d6716"}],"tests/unit/verification/test_tempest.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"3e18705a4d4e2c0c5ec75a9b4994f1633cfe74fd","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def test__save_results_with_log_file(self, mock_isfile, mock_parse):"},{"line_number":160,"context_line":"        results \u003d mock.MagicMock()"},{"line_number":161,"context_line":"        results.total \u003d \"some\""},{"line_number":162,"context_line":"        results.tests \u003d \"some_tests\""},{"line_number":163,"context_line":"        mock_parse.side_effect \u003d lambda x: results"},{"line_number":164,"context_line":"        self.verifier.log_file_raw \u003d os.path.join("},{"line_number":165,"context_line":"            os.path.dirname(__file__), \"subunit.stream\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afb71cf_e509bf2d","line":162,"updated":"2015-06-08 12:22:42.000000000","message":"L160-162:\n\n results \u003d mock.MagicMock(total\u003d\"some\", tests\u003d\"some_tests\")","commit_id":"9bb0a93e65f422889d6fe465957c0f0a1a2c81f8"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"3e18705a4d4e2c0c5ec75a9b4994f1633cfe74fd","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        results \u003d mock.MagicMock()"},{"line_number":161,"context_line":"        results.total \u003d \"some\""},{"line_number":162,"context_line":"        results.tests \u003d \"some_tests\""},{"line_number":163,"context_line":"        mock_parse.side_effect \u003d lambda x: results"},{"line_number":164,"context_line":"        self.verifier.log_file_raw \u003d os.path.join("},{"line_number":165,"context_line":"            os.path.dirname(__file__), \"subunit.stream\")"},{"line_number":166,"context_line":"        self.verifier._save_results()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afb71cf_7326b8cf","line":163,"updated":"2015-06-08 12:22:42.000000000","message":"Why not `return_value\u0027 ?","commit_id":"9bb0a93e65f422889d6fe465957c0f0a1a2c81f8"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"3e18705a4d4e2c0c5ec75a9b4994f1633cfe74fd","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        verification \u003d self.verifier.verification"},{"line_number":171,"context_line":"        verification.finish_verification.assert_called_once_with("},{"line_number":172,"context_line":"            total\u003dresults.total, test_cases\u003dresults.tests)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"class TempestInstallAndUninstallTestCase(BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afb71cf_85920b9e","line":172,"updated":"2015-06-08 12:22:42.000000000","message":"object `results\u0027 can be modified, it is safer to compare with exact values \"some\" and \"some_tests\"","commit_id":"9bb0a93e65f422889d6fe465957c0f0a1a2c81f8"}]}
