)]}'
{"rally-jobs/rally-neutron.yaml":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b1aefc30240d2d7905540f8bb3c3dc53a1df86fe","unresolved":false,"context_lines":[{"line_number":971,"context_line":"      runner:"},{"line_number":972,"context_line":"        type: \"constant\""},{"line_number":973,"context_line":"        times: 2"},{"line_number":974,"context_line":"        concurrency: 1"},{"line_number":975,"context_line":"      context:"},{"line_number":976,"context_line":"        users:"},{"line_number":977,"context_line":"          tenants: 1"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7a016987_0e3776e4","line":974,"updated":"2015-05-27 08:52:27.000000000","message":"Better to increase concurrency to check how it works with parallelization","commit_id":"fdb91963eb88196fdedc3cfdaf4892e28756e3e9"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"18e049ced0d189ce2b3a0e01e8d43240e62d1a1e","unresolved":false,"context_lines":[{"line_number":971,"context_line":"      runner:"},{"line_number":972,"context_line":"        type: \"constant\""},{"line_number":973,"context_line":"        times: 2"},{"line_number":974,"context_line":"        concurrency: 1"},{"line_number":975,"context_line":"      context:"},{"line_number":976,"context_line":"        users:"},{"line_number":977,"context_line":"          tenants: 1"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7a016987_572f25a1","line":974,"in_reply_to":"7a016987_0e3776e4","updated":"2015-05-27 21:00:15.000000000","message":"Done","commit_id":"fdb91963eb88196fdedc3cfdaf4892e28756e3e9"}],"rally/plugins/openstack/scenarios/swift/objects.py":[{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"46f6485aa95895c256136f5771b23fad3a44d661","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    @validation.required_services(consts.Service.SWIFT)"},{"line_number":143,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":144,"context_line":"    @scenario.configure(context\u003d{\"swift_objects\": {}})"},{"line_number":145,"context_line":"    def download_objects(self):"},{"line_number":146,"context_line":"        \"\"\"Download all objects.\"\"\""},{"line_number":147,"context_line":"        containers \u003d self._list_containers()[1]"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5a2ca52d_36ddcd42","line":145,"updated":"2015-10-14 02:34:48.000000000","message":"since you have count atomic timer on list objects, so the scenario function here should be list_and_download_objects","commit_id":"2d7fa9b973f34404d0730619c56d7c61a9227a46"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"97460cf58fa6e658d6fdfe00042a95e0b2ab783c","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    @validation.required_services(consts.Service.SWIFT)"},{"line_number":143,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":144,"context_line":"    @scenario.configure(context\u003d{\"swift_objects\": {}})"},{"line_number":145,"context_line":"    def download_objects(self):"},{"line_number":146,"context_line":"        \"\"\"Download all objects.\"\"\""},{"line_number":147,"context_line":"        containers \u003d self._list_containers()[1]"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a29b11f_46533717","line":145,"in_reply_to":"5a2ca52d_36ddcd42","updated":"2015-10-23 01:34:45.000000000","message":"Done","commit_id":"2d7fa9b973f34404d0730619c56d7c61a9227a46"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"03bf81f5cbe19305d4c150d44bb639645e657b39","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if len(containers) \u003e 1:"},{"line_number":136,"context_line":"            key_prefix \u003d \"swift.%i_\" % len(containers)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        with atomic.ActionTimer(self, \"%slist_objects\" % key_prefix):"},{"line_number":139,"context_line":"            for container in containers:"},{"line_number":140,"context_line":"                self._list_objects(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_74f5a8c9","line":138,"updated":"2015-10-23 13:36:07.000000000","message":"\"swift.5_list_objects\" is not a very intuitive timer name. Could we make it instead be something like \"swift.list_objects_in_5_containers\"? That\u0027s a bit long-winded, but \"5_list_objects\" a) isn\u0027t remotely grammatical; and b) doesn\u0027t express that it\u0027s not listing 5 objects, but rather is listing objects in 5 containers.","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"2a21945cf778f3c3aeec9b785d5aaba11bf9d274","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if len(containers) \u003e 1:"},{"line_number":136,"context_line":"            key_prefix \u003d \"swift.%i_\" % len(containers)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        with atomic.ActionTimer(self, \"%slist_objects\" % key_prefix):"},{"line_number":139,"context_line":"            for container in containers:"},{"line_number":140,"context_line":"                self._list_objects(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1a26ad4f_865fc171","line":138,"in_reply_to":"1a26ad4f_2a123e63","updated":"2015-10-28 22:39:19.000000000","message":"Let\u0027s do it correctly in this patch, and then submit a follow-up patch to fix it elsewhere as well. Thanks!","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"294f947b8dea0a735181ce5c98e604722eb0c321","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if len(containers) \u003e 1:"},{"line_number":136,"context_line":"            key_prefix \u003d \"swift.%i_\" % len(containers)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        with atomic.ActionTimer(self, \"%slist_objects\" % key_prefix):"},{"line_number":139,"context_line":"            for container in containers:"},{"line_number":140,"context_line":"                self._list_objects(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_998a561a","line":138,"in_reply_to":"1a26ad4f_865fc171","updated":"2015-11-11 08:15:52.000000000","message":"Done","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"21a7f1097c7e5f124fc3b9946cf16b5fc9e741b4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if len(containers) \u003e 1:"},{"line_number":136,"context_line":"            key_prefix \u003d \"swift.%i_\" % len(containers)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        with atomic.ActionTimer(self, \"%slist_objects\" % key_prefix):"},{"line_number":139,"context_line":"            for container in containers:"},{"line_number":140,"context_line":"                self._list_objects(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1a26ad4f_2a123e63","line":138,"in_reply_to":"3a29b11f_5b817efa","updated":"2015-10-28 14:09:15.000000000","message":"Thanks Chris and Kun.  I\u0027m fine either way, addressing previous grammatical error in this patch also or create another patch to fix the previous mistake.  Please let me know whichever way makes more sense.","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"ffd63078788d1471f3789d26caf6a26c96c56f89","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        if len(containers) \u003e 1:"},{"line_number":136,"context_line":"            key_prefix \u003d \"swift.%i_\" % len(containers)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        with atomic.ActionTimer(self, \"%slist_objects\" % key_prefix):"},{"line_number":139,"context_line":"            for container in containers:"},{"line_number":140,"context_line":"                self._list_objects(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_5b817efa","line":138,"in_reply_to":"3a29b11f_74f5a8c9","updated":"2015-10-27 02:37:45.000000000","message":"Actually I don\u0027t like this either, but his key_suffix has been merged already. I think we could address this in another patch :)","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"03bf81f5cbe19305d4c150d44bb639645e657b39","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            list_key_prefix \u003d \"swift.%i_\" % len(containers)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        objects_dict \u003d {}"},{"line_number":154,"context_line":"        with atomic.ActionTimer(self, \"%slist_objects\" % list_key_prefix):"},{"line_number":155,"context_line":"            for container in containers:"},{"line_number":156,"context_line":"                container_name \u003d container[\"name\"]"},{"line_number":157,"context_line":"                objects_dict[container_name] \u003d self._list_objects("}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_34edf0ef","line":154,"updated":"2015-10-23 13:36:07.000000000","message":"Same here.","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"294f947b8dea0a735181ce5c98e604722eb0c321","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            list_key_prefix \u003d \"swift.%i_\" % len(containers)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        objects_dict \u003d {}"},{"line_number":154,"context_line":"        with atomic.ActionTimer(self, \"%slist_objects\" % list_key_prefix):"},{"line_number":155,"context_line":"            for container in containers:"},{"line_number":156,"context_line":"                container_name \u003d container[\"name\"]"},{"line_number":157,"context_line":"                objects_dict[container_name] \u003d self._list_objects("}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_79853205","line":154,"in_reply_to":"3a29b11f_34edf0ef","updated":"2015-11-11 08:15:52.000000000","message":"Done","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"}],"tests/unit/plugins/openstack/scenarios/swift/test_objects.py":[{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"8ff8f15150d945da57a8e9e262cb5d54b667c5e3","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertEqual(5, scenario._list_objects.call_count)"},{"line_number":97,"context_line":"        con_calls \u003d [mock.call(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":98,"context_line":"                     for container in con_list]"},{"line_number":99,"context_line":"        scenario._list_objects.assert_has_calls(con_calls)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":102,"context_line":"                                       \"swift.5_list_objects\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_dd960094","line":99,"updated":"2015-07-20 14:42:30.000000000","message":"IMO, you should do more strict check here and bottom, like:\n\n\u003e\u003e\u003e\n\nself.assertEqual(con_calls, scenario._list_objects.mock_calls)","commit_id":"69b9c5c9249751f5240e76f6445dbb8164b26d80"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"41ec8e63d6d1e572d63e82a95472b135d195247e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertEqual(5, scenario._list_objects.call_count)"},{"line_number":97,"context_line":"        con_calls \u003d [mock.call(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":98,"context_line":"                     for container in con_list]"},{"line_number":99,"context_line":"        scenario._list_objects.assert_has_calls(con_calls)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":102,"context_line":"                                       \"swift.5_list_objects\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_f75ae229","line":99,"in_reply_to":"3a50d1a3_dd960094","updated":"2015-07-20 22:19:26.000000000","message":"Done","commit_id":"69b9c5c9249751f5240e76f6445dbb8164b26d80"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"03bf81f5cbe19305d4c150d44bb639645e657b39","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertEqual(5, scenario._list_objects.call_count)"},{"line_number":97,"context_line":"        con_calls \u003d [mock.call(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":98,"context_line":"                     for container in con_list]"},{"line_number":99,"context_line":"        self.assertEqual(con_calls, scenario._list_objects.mock_calls)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":102,"context_line":"                                       \"swift.5_list_objects\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_d4b4bcd5","line":99,"updated":"2015-10-23 13:36:07.000000000","message":"You can use assert_has_calls() instead of checking call_count and mock_calls separately.","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"294f947b8dea0a735181ce5c98e604722eb0c321","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertEqual(5, scenario._list_objects.call_count)"},{"line_number":97,"context_line":"        con_calls \u003d [mock.call(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":98,"context_line":"                     for container in con_list]"},{"line_number":99,"context_line":"        self.assertEqual(con_calls, scenario._list_objects.mock_calls)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":102,"context_line":"                                       \"swift.5_list_objects\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_af334713","line":99,"in_reply_to":"3a29b11f_bb93f24e","updated":"2015-11-11 08:15:52.000000000","message":"Done","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"ffd63078788d1471f3789d26caf6a26c96c56f89","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertEqual(5, scenario._list_objects.call_count)"},{"line_number":97,"context_line":"        con_calls \u003d [mock.call(container[\"name\"], atomic_action\u003dFalse)"},{"line_number":98,"context_line":"                     for container in con_list]"},{"line_number":99,"context_line":"        self.assertEqual(con_calls, scenario._list_objects.mock_calls)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":102,"context_line":"                                       \"swift.5_list_objects\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_bb93f24e","line":99,"in_reply_to":"3a29b11f_d4b4bcd5","updated":"2015-10-27 02:37:45.000000000","message":"+1 to Chris\u0027 point","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"03bf81f5cbe19305d4c150d44bb639645e657b39","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        scenario.list_and_download_objects()"},{"line_number":114,"context_line":"        scenario._list_containers.assert_called_once_with()"},{"line_number":115,"context_line":"        self.assertEqual(1, scenario._list_objects.call_count)"},{"line_number":116,"context_line":"        self.assertEqual(1, scenario._download_object.call_count)"},{"line_number":117,"context_line":"        obj_calls \u003d [mock.call(con[\"name\"], obj[\"name\"], atomic_action\u003dFalse)]"},{"line_number":118,"context_line":"        self.assertEqual(obj_calls, scenario._download_object.mock_calls)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_54f74c8c","line":115,"updated":"2015-10-23 13:36:07.000000000","message":"You never check what the call to _list_objects() actually is. Use assert_called_once_with() here instead.","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"294f947b8dea0a735181ce5c98e604722eb0c321","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        scenario.list_and_download_objects()"},{"line_number":114,"context_line":"        scenario._list_containers.assert_called_once_with()"},{"line_number":115,"context_line":"        self.assertEqual(1, scenario._list_objects.call_count)"},{"line_number":116,"context_line":"        self.assertEqual(1, scenario._download_object.call_count)"},{"line_number":117,"context_line":"        obj_calls \u003d [mock.call(con[\"name\"], obj[\"name\"], atomic_action\u003dFalse)]"},{"line_number":118,"context_line":"        self.assertEqual(obj_calls, scenario._download_object.mock_calls)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_b5287a87","line":115,"in_reply_to":"3a29b11f_54f74c8c","updated":"2015-11-11 08:15:52.000000000","message":"Done","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"03bf81f5cbe19305d4c150d44bb639645e657b39","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        self.assertEqual(1, scenario._list_objects.call_count)"},{"line_number":116,"context_line":"        self.assertEqual(1, scenario._download_object.call_count)"},{"line_number":117,"context_line":"        obj_calls \u003d [mock.call(con[\"name\"], obj[\"name\"], atomic_action\u003dFalse)]"},{"line_number":118,"context_line":"        self.assertEqual(obj_calls, scenario._download_object.mock_calls)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":121,"context_line":"                                       \"swift.list_objects\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_34c0902a","line":118,"updated":"2015-10-23 13:36:07.000000000","message":"assert_has_calls()","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"294f947b8dea0a735181ce5c98e604722eb0c321","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        self.assertEqual(1, scenario._list_objects.call_count)"},{"line_number":116,"context_line":"        self.assertEqual(1, scenario._download_object.call_count)"},{"line_number":117,"context_line":"        obj_calls \u003d [mock.call(con[\"name\"], obj[\"name\"], atomic_action\u003dFalse)]"},{"line_number":118,"context_line":"        self.assertEqual(obj_calls, scenario._download_object.mock_calls)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":121,"context_line":"                                       \"swift.list_objects\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_4f5e5b45","line":118,"in_reply_to":"3a29b11f_34c0902a","updated":"2015-11-11 08:15:52.000000000","message":"Done","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"03bf81f5cbe19305d4c150d44bb639645e657b39","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        scenario.list_and_download_objects()"},{"line_number":136,"context_line":"        scenario._list_containers.assert_called_once_with()"},{"line_number":137,"context_line":"        self.assertEqual(2, scenario._list_objects.call_count)"},{"line_number":138,"context_line":"        self.assertEqual(6, scenario._download_object.call_count)"},{"line_number":139,"context_line":"        obj_calls \u003d []"},{"line_number":140,"context_line":"        for container in con_list:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_f42e98f9","line":137,"updated":"2015-10-23 13:36:07.000000000","message":"You don\u0027t check what the calls to _list_objects() are.","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"294f947b8dea0a735181ce5c98e604722eb0c321","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        scenario.list_and_download_objects()"},{"line_number":136,"context_line":"        scenario._list_containers.assert_called_once_with()"},{"line_number":137,"context_line":"        self.assertEqual(2, scenario._list_objects.call_count)"},{"line_number":138,"context_line":"        self.assertEqual(6, scenario._download_object.call_count)"},{"line_number":139,"context_line":"        obj_calls \u003d []"},{"line_number":140,"context_line":"        for container in con_list:"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_d52dfe95","line":137,"in_reply_to":"3a29b11f_f42e98f9","updated":"2015-11-11 08:15:52.000000000","message":"Done","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"03bf81f5cbe19305d4c150d44bb639645e657b39","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                obj_calls.append(mock.call(container[\"name\"], obj[\"name\"],"},{"line_number":143,"context_line":"                                           atomic_action\u003dFalse))"},{"line_number":144,"context_line":"        self.assertEqual(obj_calls,"},{"line_number":145,"context_line":"                         sorted(scenario._download_object.mock_calls))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":148,"context_line":"                                       \"swift.2_list_objects\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_94e5e4dd","line":145,"updated":"2015-10-23 13:36:07.000000000","message":"assert_has_calls()","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"},{"author":{"_account_id":15029,"name":"John Wu","email":"weiwu@cisco.com","username":"johnwwu"},"change_message_id":"294f947b8dea0a735181ce5c98e604722eb0c321","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                obj_calls.append(mock.call(container[\"name\"], obj[\"name\"],"},{"line_number":143,"context_line":"                                           atomic_action\u003dFalse))"},{"line_number":144,"context_line":"        self.assertEqual(obj_calls,"},{"line_number":145,"context_line":"                         sorted(scenario._download_object.mock_calls))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":148,"context_line":"                                       \"swift.2_list_objects\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"da85f559_2f619705","line":145,"in_reply_to":"3a29b11f_94e5e4dd","updated":"2015-11-11 08:15:52.000000000","message":"Done","commit_id":"2c53be2a080bd79efd70fb0b5d0898e44d3a0661"}]}
