)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"43be981b7f354082f2163e45e489bef4eb304e3f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"use test the actual rule information to be"},{"line_number":11,"context_line":"updated. This patch takes care of the same."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"TrivialFix"},{"line_number":14,"context_line":"Closes-Bug: 1676877"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I50ccb9e9237f7e3b2f5c66d1fc3b539905fa0281"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"df140735_80748aff","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":10},"updated":"2017-06-02 07:41:01.000000000","message":"This patch is solving a bug, it\u0027s not a trivial fix","commit_id":"58e07d2041b51cdcc4685b58448dd32f07f362dd"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"6617fd49dd7a71604e6bf7c9e93b756314b6565f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Improve Qos Update Policy Rule test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The current update policy rule test does not"},{"line_number":10,"context_line":"use test the actual rule information to be"},{"line_number":11,"context_line":"updated. This patch takes care of the same."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1676877"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f2577a7_f59bec6f","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":3},"updated":"2017-09-15 17:40:28.000000000","message":"not needed. Remove","commit_id":"8629ecfc3f11d67515f36360352cc62cfad6af3b"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cbe574ef87fae63730c9b923d6398619ca170e8b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     reedip \u003creedip.banerjee@nectechnologies.in\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-17 13:56:11 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve Qos Update Policy Rule test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The current update policy rule test does not"},{"line_number":10,"context_line":"test the actual rule information to be"},{"line_number":11,"context_line":"updated. This patch takes care of the same."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1676877"},{"line_number":14,"context_line":"Change-Id: I50ccb9e9237f7e3b2f5c66d1fc3b539905fa0281"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"df87a7cf_47053e0f","line":11,"range":{"start_line":7,"start_character":0,"end_line":11,"end_character":43},"updated":"2017-12-19 13:31:40.000000000","message":"Don\u0027t we need to update this description? I see that test_create_policy_rule is also being modified","commit_id":"f6682a7d531b4bd3004c749bcff4f74aea9862eb"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e5782c885f0dbedee46620bdaea45d5146c22fc0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve Qos Policy Rule test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The current policy rule tests do not test the actual "},{"line_number":10,"context_line":"rule information involved in the test."},{"line_number":11,"context_line":"This patch takes care of the same."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"df87a7cf_9a794afd","line":9,"range":{"start_line":9,"start_character":52,"end_line":9,"end_character":53},"updated":"2017-12-20 08:26:54.000000000","message":"please remove this trailing space","commit_id":"2033477d42ee5ad89fad883e9666a5f7a6471764"}],"neutron/tests/unit/services/qos/test_qos_plugin.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"12f9334f564e582cf970e61e0e0d215b292da2e8","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        self.dscp_rule \u003d rule_object.QosDscpMarkingRule("},{"line_number":87,"context_line":"            self.ctxt, **self.rule_data[\u0027dscp_marking_rule\u0027])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _validate_driver_params(self, method_name):"},{"line_number":90,"context_line":"        method \u003d getattr(self.qos_plugin.notification_driver_manager,"},{"line_number":91,"context_line":"                         method_name)"},{"line_number":92,"context_line":"        self.assertTrue(method.called)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_f4ab9572","line":89,"updated":"2017-04-14 08:42:23.000000000","message":"This function should be improved a lot.\n\nFirst of all, avoid changing anything related with \"qos_plugin.notification_driver_manager\". We will get rid of it in https://review.openstack.org/#/c/441177/\n\nSecond, test properly the call made.\n\n    def _validate_driver_params(self, method_name, ctxt, policy):\n        _call \u003d self.qos_plugin.driver_manager.call.call_args[0]\n        self.assertTrue(self.qos_plugin.driver_manager.call.called)\n        self.assertEqual(_call[0], method_name)\n        self.assertEqual(_call[1], ctxt)\n        self.assertEqual(_call[2], policy)\n\nIn \u0027create_policy\u0027, because the policy object is created inside qos_plugin.QoSPlugin.create_policy function, you should mock policy_obj.create() and pass this mock as the policy argument.\n\n\nBTW, doing this, you should change all _validate_driver_params calls in this file.","commit_id":"df679ec23b11a605f12f21bb30f908c9e3048c31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertTrue(self.qos_plugin.driver_manager.call.called)"},{"line_number":104,"context_line":"        self.assertEqual(call[0], method_name)"},{"line_number":105,"context_line":"        self.assertEqual(call[1], ctxt)"},{"line_number":106,"context_line":"        self.assertIsInstance(call[2], policy_object.QosPolicy)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def test_get_ports_with_policy(self):"},{"line_number":109,"context_line":"        network_ports \u003d ["}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_13442046","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":63},"updated":"2017-08-30 09:02:00.000000000","message":"My previous comment said that instead of checking the 3rd parameter is a QosPolicy object, check exactly which parameter is passed, by adding a new variable to the function including the QosPolicy data.\n\nBut because this is a function direct call, I don\u0027t think this is a must.","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":411,"context_line":"    def test_create_policy_rule(self):"},{"line_number":412,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":413,"context_line":"                        return_value\u003dself.policy), mock.patch("},{"line_number":414,"context_line":"            \u0027neutron.objects.qos.qos_policy_validator\u0027"},{"line_number":415,"context_line":"            \u0027.check_bandwidth_rule_conflict\u0027, return_value\u003dNone):"},{"line_number":416,"context_line":"            self.qos_plugin.create_policy_bandwidth_limit_rule("},{"line_number":417,"context_line":"                self.ctxt, self.policy.id, self.rule_data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_33f27c9b","line":414,"updated":"2017-08-30 09:02:00.000000000","message":"Indent this line","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":413,"context_line":"                        return_value\u003dself.policy), mock.patch("},{"line_number":414,"context_line":"            \u0027neutron.objects.qos.qos_policy_validator\u0027"},{"line_number":415,"context_line":"            \u0027.check_bandwidth_rule_conflict\u0027, return_value\u003dNone):"},{"line_number":416,"context_line":"            self.qos_plugin.create_policy_bandwidth_limit_rule("},{"line_number":417,"context_line":"                self.ctxt, self.policy.id, self.rule_data)"},{"line_number":418,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_13ed40b6","line":415,"updated":"2017-08-30 09:02:00.000000000","message":"ditto","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":416,"context_line":"            self.qos_plugin.create_policy_bandwidth_limit_rule("},{"line_number":417,"context_line":"                self.ctxt, self.policy.id, self.rule_data)"},{"line_number":418,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def test_create_policy_rule_check_rule_min_less_than_max(self):"},{"line_number":421,"context_line":"        _policy \u003d self._get_policy()"},{"line_number":422,"context_line":"        setattr(_policy, \"rules\", [self.rule])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_339ddc65","line":419,"updated":"2017-08-30 09:02:00.000000000","message":"This test should also check the calls order, like in L485-L493","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":435,"context_line":"                        return_value\u003d_policy) as mock_qos_get_obj:"},{"line_number":436,"context_line":"            self.qos_plugin.create_policy_bandwidth_limit_rule("},{"line_number":437,"context_line":"                self.ctxt, _policy.id, self.rule_data)"},{"line_number":438,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":439,"context_line":"            self.mock_qos_load_attr.assert_called_once_with(\u0027rules\u0027)"},{"line_number":440,"context_line":"            mock_qos_get_obj.assert_called_once_with(self.ctxt, id\u003d_policy.id)"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_f3df540a","line":438,"range":{"start_line":438,"start_character":12,"end_line":438,"end_character":57},"updated":"2017-08-30 09:02:00.000000000","message":"self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            \u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":477,"context_line":"            return_value\u003d_policy):"},{"line_number":478,"context_line":"            self.rule_data[\u0027bandwidth_limit_rule\u0027][\u0027max_kbps\u0027] \u003d 1"},{"line_number":479,"context_line":"            rule.update_fields(rule_data, reset_changes\u003dTrue)"},{"line_number":480,"context_line":"            self.policy.obj_load_attr(\u0027rules\u0027)"},{"line_number":481,"context_line":"            self.qos_plugin.update_policy_bandwidth_limit_rule("},{"line_number":482,"context_line":"                self.ctxt, self.rule.id, self.policy.id, self.rule_data)"},{"line_number":483,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_d3c1f855","line":480,"range":{"start_line":479,"start_character":0,"end_line":480,"end_character":46},"updated":"2017-08-30 09:02:00.000000000","message":"This is not needed.\n1) rule is not assigned.\n2) we don\u0027t need to update policy, policy object will be modified in \"update_policy_bandwidth_limit_rule\"","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            self.qos_plugin.update_policy_bandwidth_limit_rule("},{"line_number":501,"context_line":"                self.ctxt, self.rule.id, self.policy.id, self.rule_data)"},{"line_number":502,"context_line":"            self.mock_qos_load_attr.assert_called_once_with(\u0027rules\u0027)"},{"line_number":503,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        rules \u003d [self.rule, self.min_rule]"},{"line_number":506,"context_line":"        setattr(_policy, \"rules\", rules)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_3376fc3f","line":503,"range":{"start_line":503,"start_character":12,"end_line":503,"end_character":57},"updated":"2017-08-30 09:02:00.000000000","message":"self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":511,"context_line":"                self.ctxt, self.min_rule.id,"},{"line_number":512,"context_line":"                self.policy.id, self.rule_data)"},{"line_number":513,"context_line":"            self.mock_qos_load_attr.assert_called_once_with(\u0027rules\u0027)"},{"line_number":514,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"    def test_update_policy_rule_check_rule_bwlimit_less_than_minbw(self):"},{"line_number":517,"context_line":"        _policy \u003d self._get_policy()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_33ab9c75","line":514,"range":{"start_line":514,"start_character":12,"end_line":514,"end_character":57},"updated":"2017-08-30 09:02:00.000000000","message":"self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":521,"context_line":"            self.qos_plugin.update_policy_bandwidth_limit_rule("},{"line_number":522,"context_line":"                self.ctxt, self.rule.id, self.policy.id, self.rule_data)"},{"line_number":523,"context_line":"            self.mock_qos_load_attr.assert_called_once_with(\u0027rules\u0027)"},{"line_number":524,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":525,"context_line":"        self.rule_data[\u0027minimum_bandwidth_rule\u0027][\u0027min_kbps\u0027] \u003d 1000"},{"line_number":526,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":527,"context_line":"                        return_value\u003d_policy):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_13a660ac","line":524,"range":{"start_line":524,"start_character":12,"end_line":524,"end_character":57},"updated":"2017-08-30 09:02:00.000000000","message":"self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"741a7b04e2e52fab38707aebdd196e9934f04f1a","unresolved":false,"context_lines":[{"line_number":539,"context_line":"            self.qos_plugin.update_policy_minimum_bandwidth_rule("},{"line_number":540,"context_line":"                self.ctxt, self.min_rule.id, self.policy.id, self.rule_data)"},{"line_number":541,"context_line":"            self.mock_qos_load_attr.assert_called_once_with(\u0027rules\u0027)"},{"line_number":542,"context_line":"            self._validate_driver_params(\u0027update_policy\u0027)"},{"line_number":543,"context_line":"        self.rule_data[\u0027bandwidth_limit_rule\u0027][\u0027max_kbps\u0027] \u003d 1"},{"line_number":544,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":545,"context_line":"                        return_value\u003d_policy):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_33c4bc3f","line":542,"range":{"start_line":542,"start_character":12,"end_line":542,"end_character":57},"updated":"2017-08-30 09:02:00.000000000","message":"self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)","commit_id":"3ecdfc4983ececebdce5efa4a047de6e7884cb31"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"593b29416d9424f87e79e90823b409fae3436e11","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.ctxt, **self.rule_data[\u0027minimum_bandwidth_rule\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def _validate_driver_params(self, method_name, ctxt):"},{"line_number":102,"context_line":"        call \u003d self.qos_plugin.driver_manager.call.call_args[0]"},{"line_number":103,"context_line":"        self.assertTrue(self.qos_plugin.driver_manager.call.called)"},{"line_number":104,"context_line":"        self.assertEqual(call[0], method_name)"},{"line_number":105,"context_line":"        self.assertEqual(call[1], ctxt)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_99d8681e","line":102,"updated":"2017-09-15 14:00:33.000000000","message":"can it be maybe named \"call_args\"? now it\u0027s little bit confusing for me","commit_id":"8629ecfc3f11d67515f36360352cc62cfad6af3b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a68f997b0d0ff9071e7fbbf0169ed6660d87da03","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            mock_manager.mock_calls.index(delete_precommit_mock_call) \u003c"},{"line_number":409,"context_line":"            mock_manager.mock_calls.index(delete_mock_call))"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    @mock.patch.object(policy_object.QosPolicy, \u0027create\u0027)"},{"line_number":412,"context_line":"    def test_create_policy_rule(self, mock_qos_policy_create):"},{"line_number":413,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":414,"context_line":"        mock_manager.attach_mock(mock_qos_policy_create, \u0027create\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_285a4082","line":411,"range":{"start_line":411,"start_character":4,"end_line":411,"end_character":57},"updated":"2017-09-15 09:52:48.000000000","message":"@mock.patch.object(rule_object.QosBandwidthLimitRule, \u0027create\u0027)","commit_id":"8629ecfc3f11d67515f36360352cc62cfad6af3b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a68f997b0d0ff9071e7fbbf0169ed6660d87da03","unresolved":false,"context_lines":[{"line_number":408,"context_line":"            mock_manager.mock_calls.index(delete_precommit_mock_call) \u003c"},{"line_number":409,"context_line":"            mock_manager.mock_calls.index(delete_mock_call))"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    @mock.patch.object(policy_object.QosPolicy, \u0027create\u0027)"},{"line_number":412,"context_line":"    def test_create_policy_rule(self, mock_qos_policy_create):"},{"line_number":413,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":414,"context_line":"        mock_manager.attach_mock(mock_qos_policy_create, \u0027create\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_088664dc","line":411,"updated":"2017-09-15 09:52:48.000000000","message":"This test is to verify when a rule is created, not a policy","commit_id":"8629ecfc3f11d67515f36360352cc62cfad6af3b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a68f997b0d0ff9071e7fbbf0169ed6660d87da03","unresolved":false,"context_lines":[{"line_number":409,"context_line":"            mock_manager.mock_calls.index(delete_mock_call))"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    @mock.patch.object(policy_object.QosPolicy, \u0027create\u0027)"},{"line_number":412,"context_line":"    def test_create_policy_rule(self, mock_qos_policy_create):"},{"line_number":413,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":414,"context_line":"        mock_manager.attach_mock(mock_qos_policy_create, \u0027create\u0027)"},{"line_number":415,"context_line":"        mock_manager.reset_mock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_085f8472","line":412,"range":{"start_line":412,"start_character":38,"end_line":412,"end_character":60},"updated":"2017-09-15 09:52:48.000000000","message":"mock_qos_rule_create","commit_id":"8629ecfc3f11d67515f36360352cc62cfad6af3b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a68f997b0d0ff9071e7fbbf0169ed6660d87da03","unresolved":false,"context_lines":[{"line_number":411,"context_line":"    @mock.patch.object(policy_object.QosPolicy, \u0027create\u0027)"},{"line_number":412,"context_line":"    def test_create_policy_rule(self, mock_qos_policy_create):"},{"line_number":413,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":414,"context_line":"        mock_manager.attach_mock(mock_qos_policy_create, \u0027create\u0027)"},{"line_number":415,"context_line":"        mock_manager.reset_mock()"},{"line_number":416,"context_line":"        with mock.patch(\u0027neutron.objects.qos.policy.QosPolicy.get_object\u0027,"},{"line_number":417,"context_line":"                        return_value\u003dself.policy), mock.patch("}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_e8579857","line":414,"range":{"start_line":414,"start_character":8,"end_line":414,"end_character":66},"updated":"2017-09-15 09:52:48.000000000","message":"mock_manager.attach_mock(mock_rule_create, \u0027create\u0027)\nmock_manager.attach_mock(self.qos_plugin.driver_manager, \u0027driver\u0027)","commit_id":"8629ecfc3f11d67515f36360352cc62cfad6af3b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a68f997b0d0ff9071e7fbbf0169ed6660d87da03","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                mock_manager.mock_calls.index(policy_create_mock_call) \u003c"},{"line_number":430,"context_line":"                mock_manager.mock_calls.index(create_precommit_mock_call) \u003c"},{"line_number":431,"context_line":"                mock_manager.mock_calls.index(create_mock_call))"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    def test_create_policy_rule_check_rule_min_less_than_max(self):"},{"line_number":434,"context_line":"        _policy \u003d self._get_policy()"},{"line_number":435,"context_line":"        setattr(_policy, \"rules\", [self.rule])"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f2577a7_28cfe029","line":432,"updated":"2017-09-15 09:52:48.000000000","message":"Well, it\u0027s better if I send you the whole function:\n\n\n\n    @mock.patch.object(policy_object.QosPolicy, \"get_object\")\n    @mock.patch.object(rule_object.QosBandwidthLimitRule, \u0027create\u0027)\n    def test_create_policy_rule(self, mock_qos_rule_create,\n                                mock_qos_policy_get):\n        mock_qos_policy_get.return_value \u003d self.policy\n        mock_manager \u003d mock.Mock()\n        mock_manager.attach_mock(mock_qos_rule_create, \u0027create\u0027)\n        mock_manager.attach_mock(self.qos_plugin.driver_manager, \u0027driver\u0027)\n        mock_manager.reset_mock()\n\n        with mock.patch(\n                \u0027neutron.objects.qos.qos_policy_validator\u0027\n                \u0027.check_bandwidth_rule_conflict\u0027, return_value\u003dNone):\n            self.qos_plugin.create_policy_bandwidth_limit_rule(\n                self.ctxt, self.policy.id, self.rule_data)\n            self._validate_driver_params(\u0027update_policy\u0027, self.ctxt)\n\n            rule_create_mock_call \u003d mock.call.create()\n            update_precommit_mock_call \u003d mock.call.driver.call(\n                \u0027update_policy_precommit\u0027, self.ctxt, mock.ANY)\n            update_mock_call \u003d mock.call.driver.call(\n                \u0027update_policy\u0027, self.ctxt, mock.ANY)\n            self.assertTrue(\n                mock_manager.mock_calls.index(rule_create_mock_call) \u003c\n                mock_manager.mock_calls.index(update_precommit_mock_call) \u003c\n                mock_manager.mock_calls.index(update_mock_call))","commit_id":"8629ecfc3f11d67515f36360352cc62cfad6af3b"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cbe574ef87fae63730c9b923d6398619ca170e8b","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        mock_manager.reset_mock()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        self.qos_plugin.create_policy(self.ctxt, self.policy_data)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        policy_mock_call \u003d mock.call.QosPolicy().create()"},{"line_number":331,"context_line":"        create_precommit_mock_call \u003d mock.call.driver.call("},{"line_number":332,"context_line":"            \u0027create_policy_precommit\u0027, self.ctxt, mock.ANY)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df87a7cf_87282686","side":"PARENT","line":329,"updated":"2017-12-19 13:31:40.000000000","message":"Unrelated change","commit_id":"bbaf7418bbffbffc93eae9a29c2ec1a80d492da9"}]}
