)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"2358c38d1afa06cce5248c8b20944c9c5f8b7743","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     chen-li \u003cshchenli@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-17 20:58:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add class \u0027StatisticsiMixin\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I7930d52c083c7089382583d657a77ac9969b46ff"},{"line_number":10,"context_line":"Implements: blueprint stats-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1ac06dbe_b46c1cd1","line":7,"updated":"2016-08-23 02:52:36.000000000","message":"Should this be \"StatisticsMixin\" or \"StatsMixin\" maybe?","commit_id":"235cdb78e05db7455156a6964a3b8eebee8e171a"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"4ea714b2de4c87c2cf76806640a33936ab6aabd1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     chen-li \u003cshchenli@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-17 20:58:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add class \u0027StatisticsiMixin\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I7930d52c083c7089382583d657a77ac9969b46ff"},{"line_number":10,"context_line":"Implements: blueprint stats-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1ac06dbe_3adad317","line":7,"in_reply_to":"1ac06dbe_b46c1cd1","updated":"2016-08-23 03:28:17.000000000","message":"Done","commit_id":"235cdb78e05db7455156a6964a3b8eebee8e171a"}],"octavia/api/v1/controllers/listener_statistics.py":[{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"5b95dbbc858fb7e15e8a413a3bf70236e306573a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    @wsme_pecan.wsexpose(ls_types.ListenerStatisticsResponse)"},{"line_number":31,"context_line":"    def get_all(self):"},{"line_number":32,"context_line":"        \"\"\"Gets a single listener\u0027s statistics details.\"\"\""},{"line_number":33,"context_line":"        # NOTE(sbalukoff): since a listener can only have one set of"},{"line_number":34,"context_line":"        # listener statistics we are using the get_all method to only get"},{"line_number":35,"context_line":"        # the single set of stats"},{"line_number":36,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":37,"context_line":"        return self._convert_db_to_type("},{"line_number":38,"context_line":"            self._get_listener(context.session, self.listener_id),"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_5780418b","line":35,"range":{"start_line":33,"start_character":8,"end_line":35,"end_character":33},"updated":"2016-08-17 12:48:51.000000000","message":"Shouldn\u0027t this note be moved to the _get_listener method?","commit_id":"8272565df10f4cccaed1bfcc1bb6a1c7f0c52178"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"95437fa83563232459cff6327ddf54e9c32ae817","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    @wsme_pecan.wsexpose(ls_types.ListenerStatisticsResponse)"},{"line_number":31,"context_line":"    def get_all(self):"},{"line_number":32,"context_line":"        \"\"\"Gets a single listener\u0027s statistics details.\"\"\""},{"line_number":33,"context_line":"        # NOTE(sbalukoff): since a listener can only have one set of"},{"line_number":34,"context_line":"        # listener statistics we are using the get_all method to only get"},{"line_number":35,"context_line":"        # the single set of stats"},{"line_number":36,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":37,"context_line":"        return self._convert_db_to_type("},{"line_number":38,"context_line":"            self._get_listener(context.session, self.listener_id),"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_23df21da","line":35,"range":{"start_line":33,"start_character":8,"end_line":35,"end_character":33},"in_reply_to":"3ac371cc_5780418b","updated":"2016-08-18 01:57:03.000000000","message":"I think this note are actually explaining the method name \u0027get_all\u0027.","commit_id":"8272565df10f4cccaed1bfcc1bb6a1c7f0c52178"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"5b95dbbc858fb7e15e8a413a3bf70236e306573a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # the single set of stats"},{"line_number":36,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":37,"context_line":"        return self._convert_db_to_type("},{"line_number":38,"context_line":"            self._get_listener(context.session, self.listener_id),"},{"line_number":39,"context_line":"            ls_types.ListenerStatisticsResponse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_52616fd2","line":38,"range":{"start_line":38,"start_character":12,"end_line":38,"end_character":66},"updated":"2016-08-17 12:48:51.000000000","message":"Calling a method and immediately passing its return value to another method makes debugging more difficult.","commit_id":"8272565df10f4cccaed1bfcc1bb6a1c7f0c52178"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"95437fa83563232459cff6327ddf54e9c32ae817","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # the single set of stats"},{"line_number":36,"context_line":"        context \u003d pecan.request.context.get(\u0027octavia_context\u0027)"},{"line_number":37,"context_line":"        return self._convert_db_to_type("},{"line_number":38,"context_line":"            self._get_listener(context.session, self.listener_id),"},{"line_number":39,"context_line":"            ls_types.ListenerStatisticsResponse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_c3d3add3","line":38,"range":{"start_line":38,"start_character":12,"end_line":38,"end_character":66},"in_reply_to":"3ac371cc_52616fd2","updated":"2016-08-18 01:57:03.000000000","message":"Done","commit_id":"8272565df10f4cccaed1bfcc1bb6a1c7f0c52178"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"be9fc8d333d5feb9d853124ea42244536bbc987d","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ListenerStatisticsController(base.BaseController,"},{"line_number":24,"context_line":"                                   stats.StatisticsiMixin):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, listener_id):"},{"line_number":27,"context_line":"        super(ListenerStatisticsController, self).__init__()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_7428e486","line":24,"updated":"2016-08-23 02:50:05.000000000","message":"I noticed \"StatisticsiMixin\" in the title of the spec commit, and I thought it was a typo -- but I\u0027m seeing it in a lot more places now. so maybe it isn\u0027t...\n\nI believe this should be \"StatisticsMixin\", or maybe just \"StatsMixin\" would be OK?","commit_id":"235cdb78e05db7455156a6964a3b8eebee8e171a"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"2358c38d1afa06cce5248c8b20944c9c5f8b7743","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ListenerStatisticsController(base.BaseController,"},{"line_number":24,"context_line":"                                   stats.StatisticsiMixin):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, listener_id):"},{"line_number":27,"context_line":"        super(ListenerStatisticsController, self).__init__()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_d440b836","line":24,"in_reply_to":"1ac06dbe_7428e486","updated":"2016-08-23 02:52:36.000000000","message":"Err, sorry, I meant the title of this commit, and by a lot more places, I guess I meant \"here\". \u003c_\u003c","commit_id":"235cdb78e05db7455156a6964a3b8eebee8e171a"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"20102315b7386d2e770398c9139a85eee16b5920","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ListenerStatisticsController(base.BaseController,"},{"line_number":24,"context_line":"                                   stats.StatisticsiMixin):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, listener_id):"},{"line_number":27,"context_line":"        super(ListenerStatisticsController, self).__init__()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_5a54effd","line":24,"in_reply_to":"1ac06dbe_d440b836","updated":"2016-08-23 03:16:35.000000000","message":"oop, sorry!","commit_id":"235cdb78e05db7455156a6964a3b8eebee8e171a"}],"octavia/common/data_models.py":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"4564f7cfe0d6ea56430ca97a712a8f1d317cf432","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        }"},{"line_number":154,"context_line":"        return stats"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def __iadd__(self, other):"},{"line_number":157,"context_line":"        self.bytes_in +\u003d other.bytes_in"},{"line_number":158,"context_line":"        self.bytes_out +\u003d other.bytes_out"},{"line_number":159,"context_line":"        self.request_errors +\u003d other.request_errors"}],"source_content_type":"text/x-python","patch_set":20,"id":"9a89bdaa_5be58d06","line":156,"range":{"start_line":156,"start_character":17,"end_line":156,"end_character":30},"updated":"2016-09-08 15:35:02.000000000","message":"I would prefer to see here type verification because we should add only two types of objects","commit_id":"69add3e6aa52aeb430b1a2f449446705bad812aa"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"50933b3630831d885f26bec9403753e839aee107","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        return stats"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def __iadd__(self, other):"},{"line_number":157,"context_line":"        if other.__class__.__name__ in [\u0027ListenerStatistics\u0027]:"},{"line_number":158,"context_line":"            self.bytes_in +\u003d other.bytes_in"},{"line_number":159,"context_line":"            self.bytes_out +\u003d other.bytes_out"},{"line_number":160,"context_line":"            self.request_errors +\u003d other.request_errors"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a89bdaa_fb3614e6","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":62},"updated":"2016-09-09 19:24:33.000000000","message":"In python we have isinstance method","commit_id":"035700dee5e6ff91b5d7a0c1c5b1067bb705ce51"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"3eb8dd688fbcda56a65ae37d074c19b468209476","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        return stats"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def __iadd__(self, other):"},{"line_number":157,"context_line":"        if other.__class__.__name__ in [\u0027ListenerStatistics\u0027]:"},{"line_number":158,"context_line":"            self.bytes_in +\u003d other.bytes_in"},{"line_number":159,"context_line":"            self.bytes_out +\u003d other.bytes_out"},{"line_number":160,"context_line":"            self.request_errors +\u003d other.request_errors"}],"source_content_type":"text/x-python","patch_set":21,"id":"7a8ec9b2_21c5813b","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":62},"in_reply_to":"9a89bdaa_c1a067a8","updated":"2016-09-21 01:27:48.000000000","message":"Another issue is :\n\noctavia.db.models import octavia.common.data_models, so we can not import the octavia.db.model inside octavia.common.data_models, it will cause a loop.","commit_id":"035700dee5e6ff91b5d7a0c1c5b1067bb705ce51"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"6601f15953d8fd8fb3eaf7236ccadb4dba5f71f2","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        return stats"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def __iadd__(self, other):"},{"line_number":157,"context_line":"        if other.__class__.__name__ in [\u0027ListenerStatistics\u0027]:"},{"line_number":158,"context_line":"            self.bytes_in +\u003d other.bytes_in"},{"line_number":159,"context_line":"            self.bytes_out +\u003d other.bytes_out"},{"line_number":160,"context_line":"            self.request_errors +\u003d other.request_errors"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a89bdaa_c1a067a8","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":62},"in_reply_to":"9a89bdaa_fb3614e6","updated":"2016-09-12 00:58:33.000000000","message":"I hope it can support both \u0027octavia.db.models.ListenerStatistics\u0027  \u0026 \u0027octavia.common.data_models.ListenerStatistics\u0027","commit_id":"035700dee5e6ff91b5d7a0c1c5b1067bb705ce51"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"f0cf31348d70e9779670278bef50820913a29946","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def __iadd__(self, other):"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        if other.__class__.__name__ in [\u0027ListenerStatistics\u0027]:"},{"line_number":162,"context_line":"            self.bytes_in +\u003d other.bytes_in"},{"line_number":163,"context_line":"            self.bytes_out +\u003d other.bytes_out"},{"line_number":164,"context_line":"            self.request_errors +\u003d other.request_errors"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa6399be_8366f927","line":161,"range":{"start_line":161,"start_character":8,"end_line":161,"end_character":62},"updated":"2016-10-14 18:26:56.000000000","message":"From my analyse and discussion with Brandon Logan - there is no problem with db/models.py. After getting data from repository you should never see any db models. They are just used in repository.\nIn octavia/db/base_models.py there is to_data_model method which converts all db models into data models. Because of that you just need to check isinstance for this class not any other","commit_id":"4364272e56ebe070dbdd20797dd8a3f82975fb6c"}],"octavia/common/stats.py":[{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"f225bd3ad727f3f4078af878163d411371b37ef6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.repo_listener_stats \u003d repo.ListenerStatisticsRepository()"},{"line_number":32,"context_line":"        self.repo_amphora \u003d repo.AmphoraRepository()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _get_listener_stats(self, session, listener_id):"},{"line_number":35,"context_line":"        \"\"\"Gets the listener statistics data_models object.\"\"\""},{"line_number":36,"context_line":"        db_ls \u003d self.repo_listener_stats.get_all("},{"line_number":37,"context_line":"            session, listener_id\u003dlistener_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_cf1b45c9","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":27},"updated":"2016-08-31 21:17:03.000000000","message":"Someone else can correct me if I\u0027m wrong, but by the nature of a mixin, this shouldn\u0027t be a private method.  You could remove the beginning \"_\"","commit_id":"2308521337dffcf30d83f0ab863f0652558aaab4"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"cd7e99ba2abd28493f3106d6b934ff978ea349b7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        if not db_ls:"},{"line_number":39,"context_line":"            LOG.info(_LI(\"Listener Statistics for Listener %s was not found\"),"},{"line_number":40,"context_line":"                     listener_id)"},{"line_number":41,"context_line":"            raise exceptions.NotFound("},{"line_number":42,"context_line":"                resource\u003ddata_models.ListenerStatistics._name(),"},{"line_number":43,"context_line":"                id\u003dlistener_id)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_2113a8b9","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":38},"updated":"2016-09-01 17:42:30.000000000","message":"I don\u0027t think you\u0027ve present got a test looking for stats on a listener that doesn\u0027t exist and would raise this exception. Please add one.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"725b9725716366f5286335fd35925efd7e183dc1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        if not db_ls:"},{"line_number":39,"context_line":"            LOG.info(_LI(\"Listener Statistics for Listener %s was not found\"),"},{"line_number":40,"context_line":"                     listener_id)"},{"line_number":41,"context_line":"            raise exceptions.NotFound("},{"line_number":42,"context_line":"                resource\u003ddata_models.ListenerStatistics._name(),"},{"line_number":43,"context_line":"                id\u003dlistener_id)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_6f690bf9","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":38},"in_reply_to":"fa7ab95a_2113a8b9","updated":"2016-09-02 01:31:45.000000000","message":"Test case added.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"d4d7a8aeae9c1e9eb59aefe0e9ba45a2a0032a47","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        if not db_ls:"},{"line_number":39,"context_line":"            LOG.info(_LI(\"Listener Statistics for Listener %s was not found\"),"},{"line_number":40,"context_line":"                     listener_id)"},{"line_number":41,"context_line":"            raise exceptions.NotFound("},{"line_number":42,"context_line":"                resource\u003ddata_models.ListenerStatistics._name(),"},{"line_number":43,"context_line":"                id\u003dlistener_id)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_0accea68","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":38},"in_reply_to":"fa7ab95a_6f690bf9","updated":"2016-09-02 03:58:55.000000000","message":"Looks like we do not need to actually checking here, because for listener, the id is already been checked in api, And, for a load balancer, it is possible that not all listener has stats in db at the beginning...\n\nSo, removed this exception.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"55fe37bdf9f8111604013c4d82c51d33410cac1a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        statistics \u003d data_models.ListenerStatistics(listener_id\u003dlistener_id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        for db_l in db_ls:"},{"line_number":45,"context_line":"            statistics.bytes_in +\u003d db_l.bytes_in"},{"line_number":46,"context_line":"            statistics.bytes_out +\u003d db_l.bytes_out"},{"line_number":47,"context_line":"            statistics.request_errors +\u003d db_l.request_errors"},{"line_number":48,"context_line":"            statistics.total_connections +\u003d db_l.total_connections"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"            amp \u003d self.repo_amphora.get(session, id\u003ddb_l.amphora_id)"},{"line_number":51,"context_line":"            if amp and amp.status \u003d\u003d constants.AMPHORA_ALLOCATED:"}],"source_content_type":"text/x-python","patch_set":18,"id":"da7fb54a_4493e0a3","line":48,"range":{"start_line":45,"start_character":12,"end_line":48,"end_character":66},"updated":"2016-09-02 16:05:19.000000000","message":"statistics +\u003d db_l","commit_id":"640c6a4b53db9799765d24fda4724a9ef83072ef"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"963ee6cfc68bc557b53fcaa9f1a32c24b77183e3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        statistics \u003d data_models.ListenerStatistics(listener_id\u003dlistener_id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        for db_l in db_ls:"},{"line_number":45,"context_line":"            statistics.bytes_in +\u003d db_l.bytes_in"},{"line_number":46,"context_line":"            statistics.bytes_out +\u003d db_l.bytes_out"},{"line_number":47,"context_line":"            statistics.request_errors +\u003d db_l.request_errors"},{"line_number":48,"context_line":"            statistics.total_connections +\u003d db_l.total_connections"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"            amp \u003d self.repo_amphora.get(session, id\u003ddb_l.amphora_id)"},{"line_number":51,"context_line":"            if amp and amp.status \u003d\u003d constants.AMPHORA_ALLOCATED:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a89bdaa_988b09c3","line":48,"range":{"start_line":45,"start_character":12,"end_line":48,"end_character":66},"in_reply_to":"9a89bdaa_6810b24f","updated":"2016-09-06 23:08:29.000000000","message":"This magic method must be first implemented by you.","commit_id":"640c6a4b53db9799765d24fda4724a9ef83072ef"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"3d2d6d9340b317fce474b969a291324de8fe854b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        statistics \u003d data_models.ListenerStatistics(listener_id\u003dlistener_id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        for db_l in db_ls:"},{"line_number":45,"context_line":"            statistics.bytes_in +\u003d db_l.bytes_in"},{"line_number":46,"context_line":"            statistics.bytes_out +\u003d db_l.bytes_out"},{"line_number":47,"context_line":"            statistics.request_errors +\u003d db_l.request_errors"},{"line_number":48,"context_line":"            statistics.total_connections +\u003d db_l.total_connections"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"            amp \u003d self.repo_amphora.get(session, id\u003ddb_l.amphora_id)"},{"line_number":51,"context_line":"            if amp and amp.status \u003d\u003d constants.AMPHORA_ALLOCATED:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a89bdaa_53ecbff2","line":48,"range":{"start_line":45,"start_character":12,"end_line":48,"end_character":66},"in_reply_to":"9a89bdaa_988b09c3","updated":"2016-09-08 01:34:00.000000000","message":"Done","commit_id":"640c6a4b53db9799765d24fda4724a9ef83072ef"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"5320a015a1ff392d5f611787a600cf68f9666bca","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        statistics \u003d data_models.ListenerStatistics(listener_id\u003dlistener_id)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        for db_l in db_ls:"},{"line_number":45,"context_line":"            statistics.bytes_in +\u003d db_l.bytes_in"},{"line_number":46,"context_line":"            statistics.bytes_out +\u003d db_l.bytes_out"},{"line_number":47,"context_line":"            statistics.request_errors +\u003d db_l.request_errors"},{"line_number":48,"context_line":"            statistics.total_connections +\u003d db_l.total_connections"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"            amp \u003d self.repo_amphora.get(session, id\u003ddb_l.amphora_id)"},{"line_number":51,"context_line":"            if amp and amp.status \u003d\u003d constants.AMPHORA_ALLOCATED:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a89bdaa_6810b24f","line":48,"range":{"start_line":45,"start_character":12,"end_line":48,"end_character":66},"in_reply_to":"da7fb54a_4493e0a3","updated":"2016-09-03 01:03:38.000000000","message":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nFAIL: octavia.tests.unit.common.test_stats.TestStatsMixin.test_get_listener_stats_with_amphora_deleted\ntags: worker-23\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"octavia/tests/unit/common/test_stats.py\", line 81, in test_get_listener_stats_with_amphora_deleted\n    ls_stats \u003d self.sm.get_listener_stats(self.session, self.listener_id)\n  File \"octavia/common/stats.py\", line 45, in get_listener_stats\n    statistics +\u003d db_l\nTypeError: unsupported operand type(s) for +\u003d: \u0027ListenerStatistics\u0027 and \u0027ListenerStatistics\u0027","commit_id":"640c6a4b53db9799765d24fda4724a9ef83072ef"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"9be1b8805a16e60ae7e852232d0f2086f6dbf8fb","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def __init__(self):"},{"line_number":29,"context_line":"        super(StatsMixin, self).__init__()"},{"line_number":30,"context_line":"        self.listener_stats_repo \u003d repo.ListenerStatisticsRepository()"},{"line_number":31,"context_line":"        self.repo_amphora \u003d repo.AmphoraRepository()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def get_listener_stats(self, session, listener_id):"},{"line_number":34,"context_line":"        \"\"\"Gets the listener statistics data_models object.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"da6895a0_46bb7c27","line":31,"range":{"start_line":30,"start_character":8,"end_line":31,"end_character":52},"updated":"2016-10-25 09:52:18.000000000","message":"Nit: \"listener_stats_repo\" and \"repo_amphora\" are using conflicting naming schemes. This probably isn\u0027t enough to block a merge here, but if you roll another version, using something more consistent here is a good idea. (Like \"listener_stats_repo\" and \"amphora_repo\")","commit_id":"8ee4def2b35f54cd428f556c453e933dce086b2e"}],"octavia/tests/unit/common/test_stats.py":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"e9b8698d88e9797ec4bb3b4b8cb6514e752d0efe","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.repo_listener_stats \u003d mock.MagicMock()"},{"line_number":36,"context_line":"        self.sm.repo_listener_stats \u003d self.repo_listener_stats"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.init_stats \u003d mock.MagicMock()"},{"line_number":39,"context_line":"        self.init_stats.listener_id \u003d None"},{"line_number":40,"context_line":"        self.init_stats.amphora_id \u003d None"},{"line_number":41,"context_line":"        self.init_stats.bytes_in \u003d 0"},{"line_number":42,"context_line":"        self.init_stats.bytes_out \u003d 0"},{"line_number":43,"context_line":"        self.init_stats.active_connections \u003d 0"},{"line_number":44,"context_line":"        self.init_stats.total_connections \u003d 0"},{"line_number":45,"context_line":"        self.init_stats.request_errors \u003d 0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.fake_stats \u003d mock.MagicMock()"},{"line_number":48,"context_line":"        self.fake_stats.listener_id \u003d self.listener_id"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_21eac80f","line":45,"range":{"start_line":38,"start_character":8,"end_line":45,"end_character":42},"updated":"2016-09-01 17:59:26.000000000","message":"Because of using that MagicMock you\u0027re not testing that class.\nIf you understand my perspective - refactor that stats class and change name listener_id for xxx_id and execute that tests. They will pass.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"2df2aff91a2066ee585285b8665831c103b6cdaa","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.repo_listener_stats \u003d mock.MagicMock()"},{"line_number":36,"context_line":"        self.sm.repo_listener_stats \u003d self.repo_listener_stats"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.init_stats \u003d mock.MagicMock()"},{"line_number":39,"context_line":"        self.init_stats.listener_id \u003d None"},{"line_number":40,"context_line":"        self.init_stats.amphora_id \u003d None"},{"line_number":41,"context_line":"        self.init_stats.bytes_in \u003d 0"},{"line_number":42,"context_line":"        self.init_stats.bytes_out \u003d 0"},{"line_number":43,"context_line":"        self.init_stats.active_connections \u003d 0"},{"line_number":44,"context_line":"        self.init_stats.total_connections \u003d 0"},{"line_number":45,"context_line":"        self.init_stats.request_errors \u003d 0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.fake_stats \u003d mock.MagicMock()"},{"line_number":48,"context_line":"        self.fake_stats.listener_id \u003d self.listener_id"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_c794cc8c","line":45,"range":{"start_line":38,"start_character":8,"end_line":45,"end_character":42},"in_reply_to":"fa7ab95a_21eac80f","updated":"2016-09-01 18:11:23.000000000","message":"I agree that there\u0027s no reason not to use an actual data model here since these don\u0027t have to be tied to the database.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"725b9725716366f5286335fd35925efd7e183dc1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.repo_listener_stats \u003d mock.MagicMock()"},{"line_number":36,"context_line":"        self.sm.repo_listener_stats \u003d self.repo_listener_stats"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.init_stats \u003d mock.MagicMock()"},{"line_number":39,"context_line":"        self.init_stats.listener_id \u003d None"},{"line_number":40,"context_line":"        self.init_stats.amphora_id \u003d None"},{"line_number":41,"context_line":"        self.init_stats.bytes_in \u003d 0"},{"line_number":42,"context_line":"        self.init_stats.bytes_out \u003d 0"},{"line_number":43,"context_line":"        self.init_stats.active_connections \u003d 0"},{"line_number":44,"context_line":"        self.init_stats.total_connections \u003d 0"},{"line_number":45,"context_line":"        self.init_stats.request_errors \u003d 0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.fake_stats \u003d mock.MagicMock()"},{"line_number":48,"context_line":"        self.fake_stats.listener_id \u003d self.listener_id"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_cfdcd7e6","line":45,"range":{"start_line":38,"start_character":8,"end_line":45,"end_character":42},"in_reply_to":"fa7ab95a_c794cc8c","updated":"2016-09-02 01:31:45.000000000","message":"Done","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"e9b8698d88e9797ec4bb3b4b8cb6514e752d0efe","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.init_stats.total_connections \u003d 0"},{"line_number":45,"context_line":"        self.init_stats.request_errors \u003d 0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.fake_stats \u003d mock.MagicMock()"},{"line_number":48,"context_line":"        self.fake_stats.listener_id \u003d self.listener_id"},{"line_number":49,"context_line":"        self.fake_stats.amphora_id \u003d self.amphora_id"},{"line_number":50,"context_line":"        self.fake_stats.bytes_in \u003d random.randrange(1000000000)"},{"line_number":51,"context_line":"        self.fake_stats.bytes_out \u003d random.randrange(1000000000)"},{"line_number":52,"context_line":"        self.fake_stats.active_connections \u003d random.randrange(1000000000)"},{"line_number":53,"context_line":"        self.fake_stats.total_connections \u003d random.randrange(1000000000)"},{"line_number":54,"context_line":"        self.fake_stats.request_errors \u003d random.randrange(1000000000)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.sm.repo_listener_stats.get_all.return_value \u003d [self.fake_stats]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_81f554ee","line":54,"range":{"start_line":47,"start_character":8,"end_line":54,"end_character":69},"updated":"2016-09-01 17:59:26.000000000","message":"Same here","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"c6056e2e1bec1f65e35b49ec5794879554b9c5ac","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.init_stats.total_connections \u003d 0"},{"line_number":45,"context_line":"        self.init_stats.request_errors \u003d 0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.fake_stats \u003d mock.MagicMock()"},{"line_number":48,"context_line":"        self.fake_stats.listener_id \u003d self.listener_id"},{"line_number":49,"context_line":"        self.fake_stats.amphora_id \u003d self.amphora_id"},{"line_number":50,"context_line":"        self.fake_stats.bytes_in \u003d random.randrange(1000000000)"},{"line_number":51,"context_line":"        self.fake_stats.bytes_out \u003d random.randrange(1000000000)"},{"line_number":52,"context_line":"        self.fake_stats.active_connections \u003d random.randrange(1000000000)"},{"line_number":53,"context_line":"        self.fake_stats.total_connections \u003d random.randrange(1000000000)"},{"line_number":54,"context_line":"        self.fake_stats.request_errors \u003d random.randrange(1000000000)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.sm.repo_listener_stats.get_all.return_value \u003d [self.fake_stats]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_c054a1ff","line":54,"range":{"start_line":47,"start_character":8,"end_line":54,"end_character":69},"in_reply_to":"fa7ab95a_0fe31fa5","updated":"2016-09-02 05:12:01.000000000","message":"We should create a real \"ListenerStatistics\" object here... \nwill update soon.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"725b9725716366f5286335fd35925efd7e183dc1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.init_stats.total_connections \u003d 0"},{"line_number":45,"context_line":"        self.init_stats.request_errors \u003d 0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.fake_stats \u003d mock.MagicMock()"},{"line_number":48,"context_line":"        self.fake_stats.listener_id \u003d self.listener_id"},{"line_number":49,"context_line":"        self.fake_stats.amphora_id \u003d self.amphora_id"},{"line_number":50,"context_line":"        self.fake_stats.bytes_in \u003d random.randrange(1000000000)"},{"line_number":51,"context_line":"        self.fake_stats.bytes_out \u003d random.randrange(1000000000)"},{"line_number":52,"context_line":"        self.fake_stats.active_connections \u003d random.randrange(1000000000)"},{"line_number":53,"context_line":"        self.fake_stats.total_connections \u003d random.randrange(1000000000)"},{"line_number":54,"context_line":"        self.fake_stats.request_errors \u003d random.randrange(1000000000)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.sm.repo_listener_stats.get_all.return_value \u003d [self.fake_stats]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_0fe31fa5","line":54,"range":{"start_line":47,"start_character":8,"end_line":54,"end_character":69},"in_reply_to":"fa7ab95a_47efdc1d","updated":"2016-09-02 01:31:45.000000000","message":"This is used as return value for db access. I think we need it.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"2df2aff91a2066ee585285b8665831c103b6cdaa","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.init_stats.total_connections \u003d 0"},{"line_number":45,"context_line":"        self.init_stats.request_errors \u003d 0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.fake_stats \u003d mock.MagicMock()"},{"line_number":48,"context_line":"        self.fake_stats.listener_id \u003d self.listener_id"},{"line_number":49,"context_line":"        self.fake_stats.amphora_id \u003d self.amphora_id"},{"line_number":50,"context_line":"        self.fake_stats.bytes_in \u003d random.randrange(1000000000)"},{"line_number":51,"context_line":"        self.fake_stats.bytes_out \u003d random.randrange(1000000000)"},{"line_number":52,"context_line":"        self.fake_stats.active_connections \u003d random.randrange(1000000000)"},{"line_number":53,"context_line":"        self.fake_stats.total_connections \u003d random.randrange(1000000000)"},{"line_number":54,"context_line":"        self.fake_stats.request_errors \u003d random.randrange(1000000000)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.sm.repo_listener_stats.get_all.return_value \u003d [self.fake_stats]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_47efdc1d","line":54,"range":{"start_line":47,"start_character":8,"end_line":54,"end_character":69},"in_reply_to":"fa7ab95a_81f554ee","updated":"2016-09-01 18:11:23.000000000","message":"+1","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"e9b8698d88e9797ec4bb3b4b8cb6514e752d0efe","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.sm.repo_amphora \u003d self.repo_amphora"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @mock.patch(\u0027octavia.common.data_models.ListenerStatistics\u0027)"},{"line_number":62,"context_line":"    def test_get_listener_stats(self, data_model_ls):"},{"line_number":63,"context_line":"        fake_amp \u003d mock.MagicMock()"},{"line_number":64,"context_line":"        fake_amp.status \u003d constants.AMPHORA_ALLOCATED"},{"line_number":65,"context_line":"        self.sm.repo_amphora.get.return_value \u003d fake_amp"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_c1f67c8e","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":31},"updated":"2016-09-01 17:59:26.000000000","message":"Mocking here keystoneauth1.session.Session we can really verify that our code is working without mocking everything and verifying that you\u0027re mock is working","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"725b9725716366f5286335fd35925efd7e183dc1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.sm.repo_amphora \u003d self.repo_amphora"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @mock.patch(\u0027octavia.common.data_models.ListenerStatistics\u0027)"},{"line_number":62,"context_line":"    def test_get_listener_stats(self, data_model_ls):"},{"line_number":63,"context_line":"        fake_amp \u003d mock.MagicMock()"},{"line_number":64,"context_line":"        fake_amp.status \u003d constants.AMPHORA_ALLOCATED"},{"line_number":65,"context_line":"        self.sm.repo_amphora.get.return_value \u003d fake_amp"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_2fe0e395","line":62,"range":{"start_line":62,"start_character":8,"end_line":62,"end_character":31},"in_reply_to":"fa7ab95a_c1f67c8e","updated":"2016-09-02 01:31:45.000000000","message":"Done","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"e9b8698d88e9797ec4bb3b4b8cb6514e752d0efe","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.assertIsNone(ls_stats.listener_id)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @mock.patch(\u0027octavia.common.data_models.ListenerStatistics\u0027)"},{"line_number":88,"context_line":"    def test_get_listener_stats_with_amphora_deleted(self, data_model_ls):"},{"line_number":89,"context_line":"        fake_amp \u003d mock.MagicMock()"},{"line_number":90,"context_line":"        fake_amp.status \u003d constants.DELETED"},{"line_number":91,"context_line":"        self.sm.repo_amphora.get.return_value \u003d fake_amp"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_8137144c","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":52},"updated":"2016-09-01 17:59:26.000000000","message":"The same here.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"725b9725716366f5286335fd35925efd7e183dc1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.assertIsNone(ls_stats.listener_id)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @mock.patch(\u0027octavia.common.data_models.ListenerStatistics\u0027)"},{"line_number":88,"context_line":"    def test_get_listener_stats_with_amphora_deleted(self, data_model_ls):"},{"line_number":89,"context_line":"        fake_amp \u003d mock.MagicMock()"},{"line_number":90,"context_line":"        fake_amp.status \u003d constants.DELETED"},{"line_number":91,"context_line":"        self.sm.repo_amphora.get.return_value \u003d fake_amp"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_4fefe786","line":88,"range":{"start_line":88,"start_character":8,"end_line":88,"end_character":52},"in_reply_to":"fa7ab95a_8137144c","updated":"2016-09-02 01:31:45.000000000","message":"Done","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"}],"octavia/tests/unit/controller/healthmanager/test_update_db.py":[{"author":{"_account_id":14591,"name":"Lubosz Kosnik (diltram)","email":"lubosz.kosnik@intel.com","username":"diltram"},"change_message_id":"e9b8698d88e9797ec4bb3b4b8cb6514e752d0efe","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        self.loadbalancer_id \u003d uuidutils.generate_uuid()"},{"line_number":468,"context_line":"        self.listener_id \u003d uuidutils.generate_uuid()"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        listener_stats \u003d mock.MagicMock()"},{"line_number":471,"context_line":"        listener_stats.get_stats.return_value \u003d {"},{"line_number":472,"context_line":"            \"request_errors\": self.request_errors,"},{"line_number":473,"context_line":"            \"active_connections\": self.active_conns,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_818554d0","line":470,"range":{"start_line":470,"start_character":8,"end_line":470,"end_character":41},"updated":"2016-09-01 17:59:26.000000000","message":"Why? You can create that object and execute real method which should be verified that is working.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"725b9725716366f5286335fd35925efd7e183dc1","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        self.loadbalancer_id \u003d uuidutils.generate_uuid()"},{"line_number":468,"context_line":"        self.listener_id \u003d uuidutils.generate_uuid()"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        listener_stats \u003d mock.MagicMock()"},{"line_number":471,"context_line":"        listener_stats.get_stats.return_value \u003d {"},{"line_number":472,"context_line":"            \"request_errors\": self.request_errors,"},{"line_number":473,"context_line":"            \"active_connections\": self.active_conns,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_8fb3af99","line":470,"range":{"start_line":470,"start_character":8,"end_line":470,"end_character":41},"in_reply_to":"fa7ab95a_818554d0","updated":"2016-09-02 01:31:45.000000000","message":"This is used for the return value for method \"self.sm.get_listener_stats\".\n\nSo I think we need this mock, other wise, it will go into method get_listener_stats and do staff like try to access db and so on.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"c6056e2e1bec1f65e35b49ec5794879554b9c5ac","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        self.loadbalancer_id \u003d uuidutils.generate_uuid()"},{"line_number":468,"context_line":"        self.listener_id \u003d uuidutils.generate_uuid()"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        listener_stats \u003d mock.MagicMock()"},{"line_number":471,"context_line":"        listener_stats.get_stats.return_value \u003d {"},{"line_number":472,"context_line":"            \"request_errors\": self.request_errors,"},{"line_number":473,"context_line":"            \"active_connections\": self.active_conns,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_003cc9c6","line":470,"range":{"start_line":470,"start_character":8,"end_line":470,"end_character":41},"in_reply_to":"fa7ab95a_8fb3af99","updated":"2016-09-02 05:12:01.000000000","message":"oops, understand you wrong. We should create a real \"ListenerStatistics\" object here... \nwill update soon.","commit_id":"932409ce4a954ebc1fa4034ea904dd2c20c39c7f"}]}
