)]}'
{"test/unit/common/ring/test_ring.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e996d7387f9be34d5e1da4934d2ad01e3e1e0a03","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class TestRingBase(unittest.TestCase):"},{"line_number":38,"context_line":"    longMessage \u003d True"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def setUp(self):"},{"line_number":41,"context_line":"        self._orig_hash_suffix \u003d utils.HASH_PATH_SUFFIX"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_54ce362d","line":38,"updated":"2017-04-27 17:39:06.000000000","message":"This should help address Clay\u0027s concern about the assertion failure message. Failures now look like\n\n FAIL: test_get_more_nodes_with_zero_weight_region (test.unit.common.ring.test_ring.TestRing)\n ----------------------------------------------------------------------\n Traceback (most recent call last):\n   File \"/vagrant/swift/test/unit/common/ring/test_ring.py\", line 934, in test_get_more_nodes_with_zero_weight_region\n     histogram)\n AssertionError: 4 not less than 4 : {5: 154, 6: 27, 7: 41, 9: 20, 10: 5, 11: 3, 13: 1, 17: 1, 21: 2, 25: 1, 29: 1}\n     \"\"\"Fail immediately, with the given message.\"\"\"\n \u003e\u003e  raise self.failureException(\u00274 not less than 4 : {5: 154, 6: 27, 7: 41, 9: 20, 10: 5, 11: 3, 13: 1, 17: 1, 21: 2, 25: 1, 29: 1}\u0027)","commit_id":"91a5c22803df2b45f17a4952ba9b2d48832b6368"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e996d7387f9be34d5e1da4934d2ad01e3e1e0a03","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                \u0027handoff differs at position %d\\n%s\\n%s\u0027 % ("},{"line_number":848,"context_line":"                    index, dev_ids[index:], exp_handoffs[index:]))"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def test_get_more_nodes_with_zero_weight_region(self):"},{"line_number":851,"context_line":"        rb \u003d ring.RingBuilder(8, 3, 1)"},{"line_number":852,"context_line":"        devs \u003d ["},{"line_number":853,"context_line":"            ring_utils.parse_add_value(v) for v in ["}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_974e006d","line":850,"updated":"2017-04-27 17:39:06.000000000","message":"Dropped the repeating, since it didn\u0027t seem like we could come up with a good trade-off between adequate sampling and wall time.","commit_id":"91a5c22803df2b45f17a4952ba9b2d48832b6368"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e996d7387f9be34d5e1da4934d2ad01e3e1e0a03","unresolved":false,"context_lines":[{"line_number":925,"context_line":"        self.assertGreater(sum(histogram.get(x, 0) for x in range(8)), 160,"},{"line_number":926,"context_line":"                           histogram)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"        # Want 90% confidence that it\u0027ll happen within two partitions"},{"line_number":929,"context_line":"        self.assertGreater(sum(histogram.get(x, 0) for x in range(12)), 230,"},{"line_number":930,"context_line":"                           histogram)"},{"line_number":931,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_b47a1ab7","line":928,"updated":"2017-04-27 17:39:06.000000000","message":"Dropping from 95% to 90% should help the flakiness -- I ran this for about a half-hour (57,000 cycles), with only one failure. As a result, I\u0027ll put up a new patchset upping the tolerance for going out 5 or more partitions.","commit_id":"91a5c22803df2b45f17a4952ba9b2d48832b6368"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"74365655b2305f7d69baae2d8d6bf12a8be4daac","unresolved":false,"context_lines":[{"line_number":930,"context_line":"                           histogram)"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"        # Tail should fall off fairly quickly"},{"line_number":933,"context_line":"        self.assertLess(sum(histogram.get(x, 0) for x in range(20, 100)), 5,"},{"line_number":934,"context_line":"                        histogram)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        # Hard limit at 50 (we\u0027ve seen as bad as 41, 45)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_1a59f033","line":933,"updated":"2017-04-27 19:45:00.000000000","message":"Addresses the failure that came up in the last set of comments...","commit_id":"469801f316bf904adcb5b1ccb534da9b431421fb"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"74365655b2305f7d69baae2d8d6bf12a8be4daac","unresolved":false,"context_lines":[{"line_number":934,"context_line":"                        histogram)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        # Hard limit at 50 (we\u0027ve seen as bad as 41, 45)"},{"line_number":937,"context_line":"        self.assertEqual(sum(histogram.get(x, 0) for x in range(50, 100)), 0,"},{"line_number":938,"context_line":"                         histogram)"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_3a6dcccb","line":937,"updated":"2017-04-27 19:45:00.000000000","message":"...and after the above change, I ran it for ~2 hours, eventually prompting me to ease this constraint as well.","commit_id":"469801f316bf904adcb5b1ccb534da9b431421fb"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"788281a8e08790cd8a0ba4ebe757bbfa55906410","unresolved":false,"context_lines":[{"line_number":847,"context_line":"                \u0027handoff differs at position %d\\n%s\\n%s\u0027 % ("},{"line_number":848,"context_line":"                    index, dev_ids[index:], exp_handoffs[index:]))"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def test_get_more_nodes_with_zero_weight_region(self):"},{"line_number":851,"context_line":"        rb \u003d ring.RingBuilder(8, 3, 1)"},{"line_number":852,"context_line":"        devs \u003d ["},{"line_number":853,"context_line":"            ring_utils.parse_add_value(v) for v in ["}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_fd6e17c7","line":850,"updated":"2017-08-15 13:44:46.000000000","message":"note to self: this test was added here https://review.openstack.org/#/c/268305 and relates to this change https://review.openstack.org/#/c/267273/","commit_id":"0d4d9402431ac7f5d6c7148b8aea6cddaa7d3a67"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"788281a8e08790cd8a0ba4ebe757bbfa55906410","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                           histogram)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"        # Want 90% confidence that it\u0027ll happen within two partitions"},{"line_number":929,"context_line":"        self.assertGreater(sum(histogram.get(x, 0) for x in range(12)), 230,"},{"line_number":930,"context_line":"                           histogram)"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"        # Tail should fall off fairly quickly"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_2b533919","line":929,"range":{"start_line":929,"start_character":66,"end_line":929,"end_character":68},"updated":"2017-08-15 13:44:46.000000000","message":"ok. All ips in each zone are same so assuming all primaries are spread across zones the search for a handoff will drop to the devs loop. Then calls 5, 6, 7 for next partition plus call 8 is a StopIteration then calls 9, 10, 11 for second partition.","commit_id":"0d4d9402431ac7f5d6c7148b8aea6cddaa7d3a67"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"788281a8e08790cd8a0ba4ebe757bbfa55906410","unresolved":false,"context_lines":[{"line_number":934,"context_line":"                        histogram)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        # Hard limit at 50 (we\u0027ve seen as bad as 41, 45)"},{"line_number":937,"context_line":"        self.assertEqual(sum(histogram.get(x, 0) for x in range(50, 100)), 0,"},{"line_number":938,"context_line":"                         histogram)"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_4b2e7dfb","line":937,"range":{"start_line":937,"start_character":64,"end_line":937,"end_character":66},"updated":"2017-08-15 13:44:46.000000000","message":"FWIW I reduced this to 40 and saw zero failures in 500 cycles of the test","commit_id":"0d4d9402431ac7f5d6c7148b8aea6cddaa7d3a67"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"db1dd57bc11495c948b21ca034c16aaa27a711fc","unresolved":false,"context_lines":[{"line_number":934,"context_line":"                        histogram)"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        # Hard limit at 50 (we\u0027ve seen as bad as 41, 45)"},{"line_number":937,"context_line":"        self.assertEqual(sum(histogram.get(x, 0) for x in range(50, 100)), 0,"},{"line_number":938,"context_line":"                         histogram)"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f436f4f_cf7b9025","line":937,"range":{"start_line":937,"start_character":64,"end_line":937,"end_character":66},"in_reply_to":"9f436f4f_4b2e7dfb","updated":"2017-08-15 18:26:55.000000000","message":"\u003e ... in 500 cycles of the test\n\nLightweight. ;-)\n\nCheck back around patchsets 3 and 4 -- I ran it tens of thousands of times because (as much as possible) I don\u0027t want this to ever be a flakey test. I left the comment about observing as bad as 41 and 45 for a reason :-)","commit_id":"0d4d9402431ac7f5d6c7148b8aea6cddaa7d3a67"}],"tox.ini":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"78dd3c3d71b98101140abedf10e2716f259703a8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"setenv \u003d VIRTUAL_ENV\u003d{envdir}"},{"line_number":10,"context_line":"         NOSE_WITH_COVERAGE\u003d1"},{"line_number":11,"context_line":"         NOSE_COVER_BRANCHES\u003d1"},{"line_number":12,"context_line":"         SWIFT_REPEAT_TESTS\u003d1"},{"line_number":13,"context_line":"deps \u003d"},{"line_number":14,"context_line":"  -r{toxinidir}/requirements.txt"},{"line_number":15,"context_line":"  -r{toxinidir}/test-requirements.txt"}],"source_content_type":"text/x-properties","patch_set":2,"id":"ba5201f7_9caa4d18","line":12,"updated":"2017-01-10 14:17:29.000000000","message":"unfortunately we instruct devs to use tox to run tests [1] and I for one routinely do that (it just makes life easier especially when moving between branches where package requirements may have changed)\n\nCould the infra gate job be modified to pass SWIFT_REPEAT_TESTS into the test env? - see the note in [1] about SWIFT_* env vars being passed to the tox venv.\n\nIf necessary have a new tox env that sets the env var and runs just these tests?\n\n[1] you need different versions of the definition in the yaml file for the responses, so the description doesn\u0027t describing setting the value. See x-object-manifest and x-object-manifest_resp for an example. The response version often starts with \"If present, ...\"","commit_id":"069fd8c5959e6fc7f04eb9ffbf262604191523a2"}]}
