)]}'
{"nova/tests/virt/disk/test_nbd.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"33d8754f8164ce9602ea8a2d80490a0e93bbd244","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            if path.endswith(\u0027pid\u0027):"},{"line_number":45,"context_line":"                return False"},{"line_number":46,"context_line":"            return True"},{"line_number":47,"context_line":"        return ORIG_EXISTS(path)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def test_nbd_initialize(self):"},{"line_number":50,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5ak%3D","line":47,"updated":"2012-12-10 00:27:37.000000000","message":"I suggest either making this non-static (and reference via self.) or make it a regular function not on the class at all.\n\nBTW the name could be much descriptive - it *is* a fake exists, but in what way is it fake? What policy is it following?","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"84805864a53aa695428e6590b538a8a2ec5f2be7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            if path.endswith(\u0027pid\u0027):"},{"line_number":45,"context_line":"                return False"},{"line_number":46,"context_line":"            return True"},{"line_number":47,"context_line":"        return ORIG_EXISTS(path)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def test_nbd_initialize(self):"},{"line_number":50,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5ZI%3D","line":47,"in_reply_to":"AAAAMX%2F%2F5ak%3D","updated":"2012-12-10 03:27:33.000000000","message":"Done","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"33d8754f8164ce9602ea8a2d80490a0e93bbd244","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":58,"context_line":"        nbd.NbdMount._DEVICES \u003d []"},{"line_number":59,"context_line":"        d \u003d n._allocate_nbd()"},{"line_number":60,"context_line":"        self.assertEquals(None, d)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def test_nbd_not_loaded(self):"},{"line_number":63,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5ag%3D","line":60,"updated":"2012-12-10 00:27:37.000000000","message":"The temporary assignment of d is pointless:\nself.assertEquals(None, b._allocate_nbd())","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"84805864a53aa695428e6590b538a8a2ec5f2be7","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":58,"context_line":"        nbd.NbdMount._DEVICES \u003d []"},{"line_number":59,"context_line":"        d \u003d n._allocate_nbd()"},{"line_number":60,"context_line":"        self.assertEquals(None, d)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def test_nbd_not_loaded(self):"},{"line_number":63,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5ZE%3D","line":60,"in_reply_to":"AAAAMX%2F%2F5ag%3D","updated":"2012-12-10 03:27:33.000000000","message":"Done","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"33d8754f8164ce9602ea8a2d80490a0e93bbd244","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Allocate a nbd device, fails"},{"line_number":90,"context_line":"        d \u003d n._allocate_nbd()"},{"line_number":91,"context_line":"        self.assertEquals(None, d)"},{"line_number":92,"context_line":"        self.assertEquals(\u0027No free nbd devices\u0027, n.error)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_nbd_allocation(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5aY%3D","line":91,"updated":"2012-12-10 00:27:37.000000000","message":"and here.","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"84805864a53aa695428e6590b538a8a2ec5f2be7","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Allocate a nbd device, fails"},{"line_number":90,"context_line":"        d \u003d n._allocate_nbd()"},{"line_number":91,"context_line":"        self.assertEquals(None, d)"},{"line_number":92,"context_line":"        self.assertEquals(\u0027No free nbd devices\u0027, n.error)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_nbd_allocation(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5ZA%3D","line":91,"in_reply_to":"AAAAMX%2F%2F5aY%3D","updated":"2012-12-10 03:27:33.000000000","message":"Done","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"33d8754f8164ce9602ea8a2d80490a0e93bbd244","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Allocate a nbd device, fails"},{"line_number":90,"context_line":"        d \u003d n._allocate_nbd()"},{"line_number":91,"context_line":"        self.assertEquals(None, d)"},{"line_number":92,"context_line":"        self.assertEquals(\u0027No free nbd devices\u0027, n.error)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_nbd_allocation(self):"},{"line_number":95,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5aU%3D","line":92,"updated":"2012-12-10 00:27:37.000000000","message":"You probably want _(\u0027No free nbd devices\u0027) if that is the string used in nbd, so that it passes in other locales.","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"84805864a53aa695428e6590b538a8a2ec5f2be7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        # Allocate a nbd device, fails"},{"line_number":90,"context_line":"        d \u003d n._allocate_nbd()"},{"line_number":91,"context_line":"        self.assertEquals(None, d)"},{"line_number":92,"context_line":"        self.assertEquals(\u0027No free nbd devices\u0027, n.error)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_nbd_allocation(self):"},{"line_number":95,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5Y8%3D","line":92,"in_reply_to":"AAAAMX%2F%2F5aU%3D","updated":"2012-12-10 03:27:33.000000000","message":"IIRC there is a way to force the use of the default locale, I just can\u0027t remember what it is at the moment...","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"33d8754f8164ce9602ea8a2d80490a0e93bbd244","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # Error logged, no device consumed"},{"line_number":189,"context_line":"        self.assertFalse(n.get_dev())"},{"line_number":190,"context_line":"        self.assertTrue(n.error.endswith(\u0027did not show up\u0027))"},{"line_number":191,"context_line":"        self.assertEquals(2, len(nbd.NbdMount._DEVICES))"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_get_dev_works(self):"},{"line_number":194,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5aI%3D","line":191,"updated":"2012-12-10 00:27:37.000000000","message":"This is probably better as\nself.assertThat(nbd.NbdMount._DEVICES, MatchesSetwise(\n    [Equals(\u0027...nbd0\u0027), Equals(\u0027...nbd1\u0027)]))\nas that will tell you the contents of _DEVICES.","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"84805864a53aa695428e6590b538a8a2ec5f2be7","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # Error logged, no device consumed"},{"line_number":189,"context_line":"        self.assertFalse(n.get_dev())"},{"line_number":190,"context_line":"        self.assertTrue(n.error.endswith(\u0027did not show up\u0027))"},{"line_number":191,"context_line":"        self.assertEquals(2, len(nbd.NbdMount._DEVICES))"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_get_dev_works(self):"},{"line_number":194,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5YI%3D","line":191,"in_reply_to":"AAAAMX%2F%2F5aI%3D","updated":"2012-12-10 03:27:33.000000000","message":"Done","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"33d8754f8164ce9602ea8a2d80490a0e93bbd244","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        self.assertTrue(n.get_dev())"},{"line_number":232,"context_line":"        self.assertTrue(n.linked)"},{"line_number":233,"context_line":"        self.assertEquals(\u0027\u0027, n.error)"},{"line_number":234,"context_line":"        self.assertEquals(1, len(nbd.NbdMount._DEVICES))"},{"line_number":235,"context_line":"        self.assertEquals(\u0027/dev/nbd1\u0027, n.device)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # Free"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5aE%3D","line":234,"updated":"2012-12-10 00:27:37.000000000","message":"same again here.","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"84805864a53aa695428e6590b538a8a2ec5f2be7","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        self.assertTrue(n.get_dev())"},{"line_number":232,"context_line":"        self.assertTrue(n.linked)"},{"line_number":233,"context_line":"        self.assertEquals(\u0027\u0027, n.error)"},{"line_number":234,"context_line":"        self.assertEquals(1, len(nbd.NbdMount._DEVICES))"},{"line_number":235,"context_line":"        self.assertEquals(\u0027/dev/nbd1\u0027, n.device)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        # Free"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5Ws%3D","line":234,"in_reply_to":"AAAAMX%2F%2F5aE%3D","updated":"2012-12-10 03:27:33.000000000","message":"Done","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"33d8754f8164ce9602ea8a2d80490a0e93bbd244","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        # something we don\u0027t have"},{"line_number":247,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"},{"line_number":248,"context_line":"        n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":249,"context_line":"        n.unget_dev()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5aA%3D","line":249,"updated":"2012-12-10 00:27:37.000000000","message":"I\u0027m not sure this test does what you say it does. It unsets something never requested; that seems different to unsetting something we had, but have ungotten already, and different to unsetting something that we have, but the system thinks we don\u0027t.","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"84805864a53aa695428e6590b538a8a2ec5f2be7","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        # something we don\u0027t have"},{"line_number":247,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"},{"line_number":248,"context_line":"        n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":249,"context_line":"        n.unget_dev()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F5Wo%3D","line":249,"in_reply_to":"AAAAMX%2F%2F5aA%3D","updated":"2012-12-10 03:27:33.000000000","message":"This is just checking that the \"is linked\" test at the start of the unget method works correctly. i.e. ungetting when there is nothing got is a noop, not an exception.","commit_id":"8380896151ea5477875740ca58dee5f054329001"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"960a4eadda076cfe679433aaa085dc7053963581","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def test_nbd_no_free_devices(self):"},{"line_number":60,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"},{"line_number":61,"context_line":"        n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":62,"context_line":"        nbd.NbdMount._DEVICES \u003d []"},{"line_number":63,"context_line":"        self.assertEquals(None, n._allocate_nbd())"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_nbd_not_loaded(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5CE%3D","line":62,"updated":"2012-12-10 16:25:13.000000000","message":"Should this be self.stubs.Set()\u0027d ?","commit_id":"1688f554d23f2072f132777cbd55c583a31a41f6"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"960a4eadda076cfe679433aaa085dc7053963581","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def test_nbd_all_allocated(self):"},{"line_number":88,"context_line":"        tempdir \u003d self.useFixture(fixtures.TempDir()).path"},{"line_number":89,"context_line":"        n \u003d nbd.NbdMount(None, tempdir)"},{"line_number":90,"context_line":"        nbd.NbdMount._DEVICES \u003d []"},{"line_number":91,"context_line":"        self.useFixture(fixtures.MonkeyPatch(\u0027os.path.exists\u0027,"},{"line_number":92,"context_line":"                                             _fake_exists_no_users))"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F5B0%3D","line":90,"updated":"2012-12-10 16:25:13.000000000","message":"Same here. I\u0027m guessing that that gets dynamically generated each time you do something, but I think it would be clearer and more consistent if you stubbed it.","commit_id":"1688f554d23f2072f132777cbd55c583a31a41f6"}]}
