)]}'
{"tests/unit/test.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"9c474cd5df83bf5b0a958f9a478ae610614e2ca9","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        key \u003d (client_type, version, admin)"},{"line_number":100,"context_line":"        return key in self._clients"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def get_client_mocks(self):"},{"line_number":103,"context_line":"        self._clients \u003d {}"},{"line_number":104,"context_line":"        base_path \u003d \"rally.plugins.openstack\""},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_58e52ba6","line":102,"updated":"2015-10-13 16:26:55.000000000","message":"Since this sets self._clients as a side-effect, I\u0027d like a docstring here. (You might also consider moving that assignment out of this function, but that\u0027s your call.)","commit_id":"44120ff203d1d81c14bb544cf3197f8780046de8"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"9c474cd5df83bf5b0a958f9a478ae610614e2ca9","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            except AttributeError:"},{"line_number":177,"context_line":"                return lambda version\u003dNone: self.mock_client(name, version)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def context_client(self, endpoint):"},{"line_number":180,"context_line":"        if endpoint not in self._adapters:"},{"line_number":181,"context_line":"            self._adapters[endpoint] \u003d self.ContextClientAdapter("},{"line_number":182,"context_line":"                endpoint, self._clients)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_18bc936b","line":179,"updated":"2015-10-13 16:26:55.000000000","message":"This has an important precondition -- that get_client_mocks() has been called at least once -- that should be documented in a docstring. Or, you could move the self._clients and self._adapters assignments out of get_client_mocks() and into setUp().","commit_id":"44120ff203d1d81c14bb544cf3197f8780046de8"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"9c474cd5df83bf5b0a958f9a478ae610614e2ca9","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                endpoint, self._clients)"},{"line_number":183,"context_line":"        return self._adapters[endpoint]"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_client_mocks(self):"},{"line_number":186,"context_line":"        self._clients \u003d {}"},{"line_number":187,"context_line":"        self._adapters \u003d {}"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a2ca52d_78a7c74f","line":185,"updated":"2015-10-13 16:26:55.000000000","message":"The side effects of assigning _clients and _adapters should be documented here, or moved into setUp().","commit_id":"44120ff203d1d81c14bb544cf3197f8780046de8"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"03d4320510b31d8fcdef09eb438a85fb57c962e0","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def __getattr__(self, name):"},{"line_number":173,"context_line":"        try:"},{"line_number":174,"context_line":"            return object.__getattr__(self, name)"},{"line_number":175,"context_line":"        except AttributeError:"},{"line_number":176,"context_line":"            return lambda version\u003dNone: self.mock_client(name, version)"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_464c4242","line":174,"updated":"2015-11-10 01:13:02.000000000","message":"object has no __getattr__","commit_id":"32a659195b6f116a4fb128e616bbf225589cccd0"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"08ea204f5c2770b14e4106b37776a6196b2f83a4","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        return lambda version\u003dNone: self.mock_client(name, version)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class ContextTestCase(ScenarioTestCase):"},{"line_number":179,"context_line":"    def setUp(self):"},{"line_number":180,"context_line":"        super(ContextTestCase, self).setUp()"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba8a016a_e0c41993","line":178,"updated":"2015-11-24 03:05:38.000000000","message":"So previously we used just this approach:\n\nhttps://github.com/openstack/rally/blob/master/tests/unit/plugins/openstack/context/cinder/test_volumes.py#L28\n\nI am not sure what is the benefit of having these 2 classes...","commit_id":"1358ad398e689a2986d2761bf148441bdf0addcc"}]}
