)]}'
{"nova/tests/test_db_api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0447d5735608fec32c7b6638249908ac5457d0b","unresolved":false,"context_lines":[{"line_number":2328,"context_line":""},{"line_number":2329,"context_line":"class TestFixedIPGetByInstance(test.TestCase):"},{"line_number":2330,"context_line":"    def test_fixed_ip_found(self):"},{"line_number":2331,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":2332,"context_line":""},{"line_number":2333,"context_line":"        instance \u003d db.instance_create(ctxt, {})"},{"line_number":2334,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F01E%3D","line":2331,"updated":"2013-04-20 21:36:16.000000000","message":"Probably it will better to create ctxt in setUp method instead of creating it in each method","commit_id":"faac5a8fe793f420a8edd43491512514c3fe4470"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0447d5735608fec32c7b6638249908ac5457d0b","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"            instance_uuid\u003dinstance_uuid, address\u003dFIXED_IP_ADDRESS))"},{"line_number":2339,"context_line":""},{"line_number":2340,"context_line":"        ips_list \u003d db.fixed_ip_get_by_instance(ctxt, instance_uuid)"},{"line_number":2341,"context_line":"        self.assertEquals(1, len(ips_list))"},{"line_number":2342,"context_line":"        self.assertEquals(FIXED_IP_ADDRESS, ips_list[0].address)"},{"line_number":2343,"context_line":""},{"line_number":2344,"context_line":"    def test_fixed_ip_not_found__exception_should_be_raised(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F01A%3D","line":2341,"updated":"2013-04-20 21:36:16.000000000","message":"use ModelsObjectComparatorMixin for such situation.","commit_id":"faac5a8fe793f420a8edd43491512514c3fe4470"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c0447d5735608fec32c7b6638249908ac5457d0b","unresolved":false,"context_lines":[{"line_number":2341,"context_line":"        self.assertEquals(1, len(ips_list))"},{"line_number":2342,"context_line":"        self.assertEquals(FIXED_IP_ADDRESS, ips_list[0].address)"},{"line_number":2343,"context_line":""},{"line_number":2344,"context_line":"    def test_fixed_ip_not_found__exception_should_be_raised(self):"},{"line_number":2345,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":2346,"context_line":""},{"line_number":2347,"context_line":"        instance \u003d db.instance_create(ctxt, {})"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2F01I%3D","line":2344,"updated":"2013-04-20 21:36:16.000000000","message":"I think that this method should be called:\ntest_fixed_ip_not_found_exception","commit_id":"faac5a8fe793f420a8edd43491512514c3fe4470"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bb3e8432c1d7f41df2d35885e5c1e22a98fe05fa","unresolved":false,"context_lines":[{"line_number":2362,"context_line":"            instance_uuid\u003dinstance_uuid, address\u003dFIXED_IP_ADDRESS_2))"},{"line_number":2363,"context_line":""},{"line_number":2364,"context_line":"        ips_list \u003d db.fixed_ip_get_by_instance(self.ctxt, instance_uuid)"},{"line_number":2365,"context_line":"        self.assertEquals(2, len(ips_list))"},{"line_number":2366,"context_line":"        self._assertEqualListsOfPrimitivesAsSets("},{"line_number":2367,"context_line":"            [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2],"},{"line_number":2368,"context_line":"            [ips_list[0].address, ips_list[1].address])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2F0nc%3D","line":2365,"updated":"2013-04-21 17:41:28.000000000","message":"I think that you shouldn\u0027t assert length, because it will be checked in _assertEquealListsOfPrimitivesAsSets","commit_id":"d1e4b8b8cd332c179672f3a2e52f6bb2c658bfb5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bb3e8432c1d7f41df2d35885e5c1e22a98fe05fa","unresolved":false,"context_lines":[{"line_number":2380,"context_line":"            instance_uuid\u003danother_instance[\u0027uuid\u0027], address\u003d\"another_addr\"))"},{"line_number":2381,"context_line":""},{"line_number":2382,"context_line":"        ips_list \u003d db.fixed_ip_get_by_instance(self.ctxt, self.instance_uuid)"},{"line_number":2383,"context_line":"        self.assertEquals(2, len(ips_list))"},{"line_number":2384,"context_line":"        self._assertEqualListsOfPrimitivesAsSets("},{"line_number":2385,"context_line":"            [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2],"},{"line_number":2386,"context_line":"            [ips_list[0].address, ips_list[1].address])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2F0nY%3D","line":2383,"updated":"2013-04-21 17:41:28.000000000","message":"ditto","commit_id":"d1e4b8b8cd332c179672f3a2e52f6bb2c658bfb5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bb3e8432c1d7f41df2d35885e5c1e22a98fe05fa","unresolved":false,"context_lines":[{"line_number":2422,"context_line":"            virtual_interface_id\u003dself.vif.id, address\u003dFIXED_IP_ADDRESS_2))"},{"line_number":2423,"context_line":""},{"line_number":2424,"context_line":"        ips_list \u003d db.fixed_ips_by_virtual_interface(self.ctxt, self.vif.id)"},{"line_number":2425,"context_line":"        self.assertEquals(2, len(ips_list))"},{"line_number":2426,"context_line":"        self._assertEqualListsOfPrimitivesAsSets("},{"line_number":2427,"context_line":"            [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2],"},{"line_number":2428,"context_line":"            [ips_list[0].address, ips_list[1].address])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2F0nU%3D","line":2425,"updated":"2013-04-21 17:41:28.000000000","message":"ditto","commit_id":"d1e4b8b8cd332c179672f3a2e52f6bb2c658bfb5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bb3e8432c1d7f41df2d35885e5c1e22a98fe05fa","unresolved":false,"context_lines":[{"line_number":2441,"context_line":"            virtual_interface_id\u003danother_vif.id, address\u003d\"another_addr\"))"},{"line_number":2442,"context_line":""},{"line_number":2443,"context_line":"        ips_list \u003d db.fixed_ips_by_virtual_interface(self.ctxt, self.vif.id)"},{"line_number":2444,"context_line":"        self.assertEquals(2, len(ips_list))"},{"line_number":2445,"context_line":"        self._assertEqualListsOfPrimitivesAsSets("},{"line_number":2446,"context_line":"            [FIXED_IP_ADDRESS_1, FIXED_IP_ADDRESS_2],"},{"line_number":2447,"context_line":"            [ips_list[0].address, ips_list[1].address])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2F0nQ%3D","line":2444,"updated":"2013-04-21 17:41:28.000000000","message":"ditto","commit_id":"d1e4b8b8cd332c179672f3a2e52f6bb2c658bfb5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bbbdd62404a55ed1846107da1b5c12887db804ac","unresolved":false,"context_lines":[{"line_number":1767,"context_line":"        for o1 in objs1:"},{"line_number":1768,"context_line":"            self._assertEqualObjects(o1, objs2[o1[\u0027id\u0027]], ignored_keys)"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    def _assertEqualListsOfPrimitivesAsSets(self, primitives1, primitives2):"},{"line_number":1771,"context_line":"        self.assertEqual(len(primitives1), len(primitives2))"},{"line_number":1772,"context_line":"        for primitive in primitives1:"},{"line_number":1773,"context_line":"            self.assertTrue(primitive in primitives2)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2F0j4%3D","line":1770,"updated":"2013-04-21 21:14:17.000000000","message":"why is it not enough to check only that length are equal and all elements from primitives1 are in primitives2?","commit_id":"d0c5bb1f8c5fe2e398ab2685a71b40dd9f4eb5e2"},{"author":{"_account_id":7224,"name":"Dmitry Spikhalskiy","email":"dmitry@spikhalskiy.com","username":"Spikhalsky"},"change_message_id":"ecfe868e032f1cdc05d2cf686f649a169502e251","unresolved":false,"context_lines":[{"line_number":1767,"context_line":"        for o1 in objs1:"},{"line_number":1768,"context_line":"            self._assertEqualObjects(o1, objs2[o1[\u0027id\u0027]], ignored_keys)"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    def _assertEqualListsOfPrimitivesAsSets(self, primitives1, primitives2):"},{"line_number":1771,"context_line":"        self.assertEqual(len(primitives1), len(primitives2))"},{"line_number":1772,"context_line":"        for primitive in primitives1:"},{"line_number":1773,"context_line":"            self.assertTrue(primitive in primitives2)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2F0ig%3D","line":1770,"in_reply_to":"AAAAOn%2F%2F0j4%3D","updated":"2013-04-21 21:49:25.000000000","message":"Because in case of [\u00271\u0027, \u00271\u0027], [\u00271\u0027, \u00272\u0027] length are identical and all values from first list are in the second","commit_id":"d0c5bb1f8c5fe2e398ab2685a71b40dd9f4eb5e2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bbbdd62404a55ed1846107da1b5c12887db804ac","unresolved":false,"context_lines":[{"line_number":2274,"context_line":"        old \u003d timeout - datetime.timedelta(seconds\u003d5)"},{"line_number":2275,"context_line":"        new \u003d timeout + datetime.timedelta(seconds\u003d5)"},{"line_number":2276,"context_line":"        # should deallocate"},{"line_number":2277,"context_line":"        values \u003d {\u0027allocated\u0027: False,"},{"line_number":2278,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027],"},{"line_number":2279,"context_line":"                  \u0027network_id\u0027: net[\u0027id\u0027],"},{"line_number":2280,"context_line":"                  \u0027updated_at\u0027: old}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2F0i8%3D","line":2277,"updated":"2013-04-21 21:14:17.000000000","message":"You have 2 difference styles in this class. In one you are calling db methods with values variable and in other part you are putting it inline. I think that you should chose one style","commit_id":"d0c5bb1f8c5fe2e398ab2685a71b40dd9f4eb5e2"},{"author":{"_account_id":7224,"name":"Dmitry Spikhalskiy","email":"dmitry@spikhalskiy.com","username":"Spikhalsky"},"change_message_id":"ecfe868e032f1cdc05d2cf686f649a169502e251","unresolved":false,"context_lines":[{"line_number":2274,"context_line":"        old \u003d timeout - datetime.timedelta(seconds\u003d5)"},{"line_number":2275,"context_line":"        new \u003d timeout + datetime.timedelta(seconds\u003d5)"},{"line_number":2276,"context_line":"        # should deallocate"},{"line_number":2277,"context_line":"        values \u003d {\u0027allocated\u0027: False,"},{"line_number":2278,"context_line":"                  \u0027instance_uuid\u0027: instance[\u0027uuid\u0027],"},{"line_number":2279,"context_line":"                  \u0027network_id\u0027: net[\u0027id\u0027],"},{"line_number":2280,"context_line":"                  \u0027updated_at\u0027: old}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2F0ic%3D","line":2277,"in_reply_to":"AAAAOn%2F%2F0i8%3D","updated":"2013-04-21 21:49:25.000000000","message":"Done","commit_id":"d0c5bb1f8c5fe2e398ab2685a71b40dd9f4eb5e2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"bbbdd62404a55ed1846107da1b5c12887db804ac","unresolved":false,"context_lines":[{"line_number":2464,"context_line":"        PROJECT_ID \u003d \"project_id\""},{"line_number":2465,"context_line":"        instance_uuid \u003d self._create_instance(PROJECT_ID)"},{"line_number":2466,"context_line":""},{"line_number":2467,"context_line":"        FIXED_IP_ADDRESS_1 \u003d \u0027address_1\u0027"},{"line_number":2468,"context_line":"        db.fixed_ip_create(self.ctxt, dict("},{"line_number":2469,"context_line":"            instance_uuid\u003dinstance_uuid, address\u003dFIXED_IP_ADDRESS_1))"},{"line_number":2470,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2F0jM%3D","line":2467,"updated":"2013-04-21 21:14:17.000000000","message":"I am not sure that you should create variables that are only one time used.","commit_id":"d0c5bb1f8c5fe2e398ab2685a71b40dd9f4eb5e2"},{"author":{"_account_id":7224,"name":"Dmitry Spikhalskiy","email":"dmitry@spikhalskiy.com","username":"Spikhalsky"},"change_message_id":"ecfe868e032f1cdc05d2cf686f649a169502e251","unresolved":false,"context_lines":[{"line_number":2464,"context_line":"        PROJECT_ID \u003d \"project_id\""},{"line_number":2465,"context_line":"        instance_uuid \u003d self._create_instance(PROJECT_ID)"},{"line_number":2466,"context_line":""},{"line_number":2467,"context_line":"        FIXED_IP_ADDRESS_1 \u003d \u0027address_1\u0027"},{"line_number":2468,"context_line":"        db.fixed_ip_create(self.ctxt, dict("},{"line_number":2469,"context_line":"            instance_uuid\u003dinstance_uuid, address\u003dFIXED_IP_ADDRESS_1))"},{"line_number":2470,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2F0iM%3D","line":2467,"in_reply_to":"AAAAOn%2F%2F0jM%3D","updated":"2013-04-21 21:49:25.000000000","message":"Done","commit_id":"d0c5bb1f8c5fe2e398ab2685a71b40dd9f4eb5e2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"e97b4af8d34a85bf278a411827ac63c2108f807c","unresolved":false,"context_lines":[{"line_number":1770,"context_line":"    def _assertEqualListsOfPrimitivesAsSets(self, primitives1, primitives2):"},{"line_number":1771,"context_line":"        self.assertEqual(len(primitives1), len(primitives2))"},{"line_number":1772,"context_line":"        for primitive in primitives1:"},{"line_number":1773,"context_line":"            self.assertTrue(primitive in primitives2)"},{"line_number":1774,"context_line":""},{"line_number":1775,"context_line":"        for primitive in primitives2:"},{"line_number":1776,"context_line":"            self.assertTrue(primitive in primitives1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FzbU%3D","line":1773,"updated":"2013-04-22 20:26:50.000000000","message":"please use assertIn, not assertTrue, otherwise this is impossible to debug when it goes wrong.","commit_id":"de19b0e42d7ec7a135a09dd028f9b6eb081daf97"},{"author":{"_account_id":7224,"name":"Dmitry Spikhalskiy","email":"dmitry@spikhalskiy.com","username":"Spikhalsky"},"change_message_id":"451f4627130bf9244926f073be1a3c624bb30bbc","unresolved":false,"context_lines":[{"line_number":1770,"context_line":"    def _assertEqualListsOfPrimitivesAsSets(self, primitives1, primitives2):"},{"line_number":1771,"context_line":"        self.assertEqual(len(primitives1), len(primitives2))"},{"line_number":1772,"context_line":"        for primitive in primitives1:"},{"line_number":1773,"context_line":"            self.assertTrue(primitive in primitives2)"},{"line_number":1774,"context_line":""},{"line_number":1775,"context_line":"        for primitive in primitives2:"},{"line_number":1776,"context_line":"            self.assertTrue(primitive in primitives1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FzaE%3D","line":1773,"in_reply_to":"AAAAOn%2F%2FzbU%3D","updated":"2013-04-22 20:35:09.000000000","message":"Done","commit_id":"de19b0e42d7ec7a135a09dd028f9b6eb081daf97"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"a37efad06a0b3b2253966cf3abe2e5ac74ceee38","unresolved":false,"context_lines":[{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    def _assertEqualListsOfPrimitivesAsSets(self, primitives1, primitives2):"},{"line_number":1771,"context_line":"        self.assertEqual(len(primitives1), len(primitives2))"},{"line_number":1772,"context_line":"        for primitive in primitives1:"},{"line_number":1773,"context_line":"            self.assertIn(primitive, primitives2)"},{"line_number":1774,"context_line":""},{"line_number":1775,"context_line":"        for primitive in primitives2:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2Fwt8%3D","line":1772,"updated":"2013-04-24 12:48:33.000000000","message":"Consider \nself.assertEqual(set(primitives1), set(primitives2))","commit_id":"98990030c84ce9f377e581553ff49ae26de77c9f"}]}
