)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"87e3a2ef0121d1b9427200bd951e761cbf74c251","unresolved":false,"context_lines":[{"line_number":16,"context_line":"                \u0027%s !\u003d %s at tier %s\u0027 % ("},{"line_number":17,"context_line":"                    replicas_at_tier, self.replicas, tier_name))"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"I think we can encapsulate this code segment to a provite function and  "},{"line_number":20,"context_line":"replace those code segments with a function call"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I89439286b211f2c5ef19deffa77c202f48f07cf8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7f96bb07_69e175d0","line":19,"range":{"start_line":19,"start_character":50,"end_line":19,"end_character":57},"updated":"2018-01-15 11:47:36.000000000","message":"s/provite/private","commit_id":"47116da4bad502005ec4fafe4b69335e40f113ed"}],"swift/common/ring/builder.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"87e3a2ef0121d1b9427200bd951e761cbf74c251","unresolved":false,"context_lines":[{"line_number":1482,"context_line":"                tier \u003d dev_tier[:i]"},{"line_number":1483,"context_line":"                weighted_replicas_by_tier[tier] +\u003d assigned_replicanths"},{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"        # belts \u0026 suspenders/paranoia -  at every level, the sum of"},{"line_number":1486,"context_line":"        # weighted_replicas should be very close to the total number of"},{"line_number":1487,"context_line":"        # replicas for the ring"},{"line_number":1488,"context_line":"        self._validate_replicas_at_tier(weighted_replicas_by_tier)"},{"line_number":1489,"context_line":""},{"line_number":1490,"context_line":"        return weighted_replicas_by_tier"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_896e4193","line":1487,"range":{"start_line":1485,"start_character":8,"end_line":1487,"end_character":31},"updated":"2018-01-15 11:47:36.000000000","message":"nit: I would be happy to see this comment also moved into the method","commit_id":"47116da4bad502005ec4fafe4b69335e40f113ed"}],"test/unit/common/ring/test_builder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"adcbaeb80e313b7a192419edd8ab0316a7d1824f","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            is_validate \u003d True"},{"line_number":478,"context_line":"        except Exception:"},{"line_number":479,"context_line":"            is_validate \u003d False"},{"line_number":480,"context_line":"        self.assertTrue(is_validate)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        # validate wanted_replicas"},{"line_number":483,"context_line":"        is_validate \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_dce16a2c","line":480,"updated":"2018-01-04 18:30:18.000000000","message":"I would find this more readable if was a bit more terse and to the point:\n\n    @@ -474,13 +473,10 @@ class TestRingBuilder(unittest.TestCase):\n                              })\n             try:\n                 rb._validate_replicas_at_tier(weighted_replicas)\n    -            is_validate \u003d True\n    -        except Exception:\n    -            is_validate \u003d False\n    -        self.assertTrue(is_validate)\n    +        except Exception as e:\n    +            self.fail(\u0027validate weighted_replicas failed with %s\u0027 % e)\n     \n             # validate wanted_replicas\n    -        is_validate \u003d False\n             wanted_replicas \u003d \\\n                 defaultdict(float,\n                             {(0, 0): 1.0, (1,): 1.0, (2,): 1.0,\n\nReally just calling it is probably enough, if it raises an exception the test will error right there... in fact it would probably be an improvement if these scenarios were each their own test that could fail independently\n\n * test_validate_weighted_replicas\n * test_validate_wanted_replicas\n * test_validate_target_replicas\n * test_validate_target_replicas_with_overload\n * test_invalid_replicas_at_tier","commit_id":"9a68d36afff19435b8d42efaf73c2c6943b8d471"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"adcbaeb80e313b7a192419edd8ab0316a7d1824f","unresolved":false,"context_lines":[{"line_number":563,"context_line":"            is_validate \u003d True"},{"line_number":564,"context_line":"        except Exception:"},{"line_number":565,"context_line":"            is_validate \u003d False"},{"line_number":566,"context_line":"        self.assertFalse(is_validate)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    def test_multitier_partial(self):"},{"line_number":569,"context_line":"        # Multitier test, nothing full"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_1cf59283","line":566,"updated":"2018-01-04 18:30:18.000000000","message":"this should really use assertRaises\n\n    @@ -558,12 +548,9 @@ class TestRingBuilder(unittest.TestCase):\n                              (2, 2, \u0027127.0.0.1\u0027, 2): 1.0,\n                              (1, 1): 1.0, (0,): 1.0\n                              })\n    -        try:\n    +        with self.assertRaises(exceptions.RingValidationError) as ctx:\n                 rb._validate_replicas_at_tier(pseudo_replicas)\n    -            is_validate \u003d True\n    -        except Exception:\n    -            is_validate \u003d False\n    -        self.assertFalse(is_validate)\n    +        self.assertEqual(\u00273.1 !\u003d 3 at tier zones\u0027, str(ctx.exception))","commit_id":"9a68d36afff19435b8d42efaf73c2c6943b8d471"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"87e3a2ef0121d1b9427200bd951e761cbf74c251","unresolved":false,"context_lines":[{"line_number":458,"context_line":"        rb.rebalance()"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"        # validate weighted_replicas"},{"line_number":461,"context_line":"        weighted_replicas \u003d \\"},{"line_number":462,"context_line":"            defaultdict(float,"},{"line_number":463,"context_line":"                        {(0, 0): 1.0, (1,): 1.0,"},{"line_number":464,"context_line":"                         (2,): 0.9999999999999999,"},{"line_number":465,"context_line":"                         (0, 0, \u0027127.0.0.1\u0027, 0): 1.0,"},{"line_number":466,"context_line":"                         (1, 1, \u0027127.0.0.1\u0027, 1): 1.0,"},{"line_number":467,"context_line":"                         (0, 0, \u0027127.0.0.1\u0027): 1.0,"},{"line_number":468,"context_line":"                         (1, 1, \u0027127.0.0.1\u0027): 1.0, (): 3.0,"},{"line_number":469,"context_line":"                         (2, 2, \u0027127.0.0.1\u0027): 0.9999999999999999,"},{"line_number":470,"context_line":"                         (2, 2): 0.9999999999999999,"},{"line_number":471,"context_line":"                         (2, 2, \u0027127.0.0.1\u0027, 2): 0.9999999999999999,"},{"line_number":472,"context_line":"                         (1, 1): 1.0, (0,): 1.0"},{"line_number":473,"context_line":"                         })"},{"line_number":474,"context_line":"        try:"},{"line_number":475,"context_line":"            rb._validate_replicas_at_tier(weighted_replicas)"},{"line_number":476,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_f43c7cc0","line":473,"range":{"start_line":461,"start_character":0,"end_line":473,"end_character":27},"updated":"2018-01-15 11:47:36.000000000","message":"nit: this would be much easier to grok if structured to reflect the tier hierarchy:\n\n          weighted_replicas \u003d \\\n            defaultdict(float,\n                        {(): 3.0,\n                         (0,): 1.0,\n                         (1,): 1.0,\n                         (2,): 0.9999999999999999,\n                         (0, 0): 1.0,\n                         (1, 1): 1.0,\n                         (2, 2): 0.9999999999999999,\n                         (0, 0, \u0027127.0.0.1\u0027): 1.0,\n                         (1, 1, \u0027127.0.0.1\u0027): 1.0,\n                         (2, 2, \u0027127.0.0.1\u0027): 0.9999999999999999,\n                         (0, 0, \u0027127.0.0.1\u0027, 0): 1.0,\n                         (1, 1, \u0027127.0.0.1\u0027, 1): 1.0,\n                         (2, 2, \u0027127.0.0.1\u0027, 2): 0.9999999999999999,\n                         })","commit_id":"47116da4bad502005ec4fafe4b69335e40f113ed"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"87e3a2ef0121d1b9427200bd951e761cbf74c251","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            self.fail(\u0027wanted_replicas is invalid for %s\u0027 % e)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        # validate target_replicas"},{"line_number":497,"context_line":"        target_replicas \u003d \\"},{"line_number":498,"context_line":"            defaultdict(float,"},{"line_number":499,"context_line":"                        {(0, 0): 1.0, (1,): 1.0,"},{"line_number":500,"context_line":"                         (2,): 0.9999999999999999,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_af31bdee","line":497,"range":{"start_line":497,"start_character":8,"end_line":497,"end_character":23},"updated":"2018-01-15 11:47:36.000000000","message":"this looks to be the same as weighted_replicas","commit_id":"47116da4bad502005ec4fafe4b69335e40f113ed"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"87e3a2ef0121d1b9427200bd951e761cbf74c251","unresolved":false,"context_lines":[{"line_number":513,"context_line":"            self.fail(\u0027target_replicas is invalid for %s\u0027 % e)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        # set overload to 10%"},{"line_number":516,"context_line":"        rb.set_overload(0.1)"},{"line_number":517,"context_line":"        rb.rebalance()"},{"line_number":518,"context_line":"        # validate target_replicas"},{"line_number":519,"context_line":"        target_replicas \u003d \\"},{"line_number":520,"context_line":"            defaultdict(float,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_6f7ad588","line":517,"range":{"start_line":516,"start_character":0,"end_line":517,"end_character":22},"updated":"2018-01-15 11:47:36.000000000","message":"what is the significance of this?","commit_id":"47116da4bad502005ec4fafe4b69335e40f113ed"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"87e3a2ef0121d1b9427200bd951e761cbf74c251","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        rb.set_overload(0.1)"},{"line_number":517,"context_line":"        rb.rebalance()"},{"line_number":518,"context_line":"        # validate target_replicas"},{"line_number":519,"context_line":"        target_replicas \u003d \\"},{"line_number":520,"context_line":"            defaultdict(float,"},{"line_number":521,"context_line":"                        {(0, 0): 1.0, (1,): 1.0, (2,): 1.0,"},{"line_number":522,"context_line":"                         (0, 0, \u0027127.0.0.1\u0027, 0): 1.0,"},{"line_number":523,"context_line":"                         (1, 1, \u0027127.0.0.1\u0027, 1): 1.0,"},{"line_number":524,"context_line":"                         (0, 0, \u0027127.0.0.1\u0027): 1.0,"},{"line_number":525,"context_line":"                         (1, 1, \u0027127.0.0.1\u0027): 1.0,"},{"line_number":526,"context_line":"                         (2, 2, \u0027127.0.0.1\u0027): 1.0, (2, 2): 1.0, (): 3.0,"},{"line_number":527,"context_line":"                         (2, 2, \u0027127.0.0.1\u0027, 2): 1.0,"},{"line_number":528,"context_line":"                         (1, 1): 1.0, (0,): 1.0"},{"line_number":529,"context_line":"                         })"},{"line_number":530,"context_line":"        try:"},{"line_number":531,"context_line":"            rb._validate_replicas_at_tier(target_replicas)"},{"line_number":532,"context_line":"        except Exception as e:"},{"line_number":533,"context_line":"            self.fail(\u0027target_replicas is invalid after overload for %s\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_cf6a09b2","line":530,"range":{"start_line":519,"start_character":0,"end_line":530,"end_character":3},"updated":"2018-01-15 11:47:36.000000000","message":"this looks to be the same as wanted_replicas","commit_id":"47116da4bad502005ec4fafe4b69335e40f113ed"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"87e3a2ef0121d1b9427200bd951e761cbf74c251","unresolved":false,"context_lines":[{"line_number":548,"context_line":"                         })"},{"line_number":549,"context_line":"        with self.assertRaises(exceptions.RingValidationError) as ctx:"},{"line_number":550,"context_line":"            rb._validate_replicas_at_tier(pseudo_replicas)"},{"line_number":551,"context_line":"        self.assertEqual(\u00273.1 !\u003d 3 at tier zones\u0027, str(ctx.exception))"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def test_multitier_partial(self):"},{"line_number":554,"context_line":"        # Multitier test, nothing full"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_0fa6b111","line":551,"updated":"2018-01-15 11:47:36.000000000","message":"the tests only check that a discrepancy at the zones tier is checked. It would be good to check that an exception is raised for a discrepancy at each tier.","commit_id":"47116da4bad502005ec4fafe4b69335e40f113ed"}]}
