)]}'
{"tempest/tests/volume/test_volumes_snapshots.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e4649d8ae13ed7110ca4ab568da1a5642d5176bf","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":65,"context_line":"        snaps_data \u003d [(f[\u0027id\u0027], f[\u0027display_name\u0027]) for f in snaps_list]"},{"line_number":66,"context_line":"        self.assertIn(tracking_data, snaps_data)"},{"line_number":67,"context_line":"        # Delete the snapshot"},{"line_number":68,"context_line":"        self.snapshots_client.delete_snapshot(snapshot[\u0027id\u0027])"},{"line_number":69,"context_line":"        self.snapshots_client.wait_for_resource_deletion(snapshot[\u0027id\u0027])"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAO3%2F%2F%2FhI%3D","line":67,"updated":"2013-05-15 11:30:58.000000000","message":"I know this isn\u0027t part of your change, but while you\u0027re here I think its a good idea to do the delete_snapshot in an addCleanup to ensure it gets deleted even if the test fails","commit_id":"093442e3d9e5142abe83899bc953fdd5c343c53a"}],"tempest/tests/volume/test_volumes_snapshots_list.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"32a0034ae8ce654519152989e3b18e1cf88318dd","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        try:"},{"line_number":45,"context_line":"            cls.volume_origin \u003d cls.create_volume()"},{"line_number":46,"context_line":"            for s in range(2):"},{"line_number":47,"context_line":"                snap \u003d cls.create_snapshot(cls.volume_origin[\u0027id\u0027])"},{"line_number":48,"context_line":"                cls.snap_list.append(snap)"},{"line_number":49,"context_line":"        except Exception:"},{"line_number":50,"context_line":"            LOG.exception(\"setup failed\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2Fe7o%3D","line":47,"updated":"2013-05-08 09:20:37.000000000","message":"You should use a name and description argument. The name should be verified while listing. \nIn the future we should have filtered listing test cases.","commit_id":"5266d3deff799bf6e529f119b77b7f3ef1b3c3ea"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"32a0034ae8ce654519152989e3b18e1cf88318dd","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"# NOTE: list_snapshots from xml/snapshots_client seems to be broken"},{"line_number":78,"context_line":"#class VolumeSnapshotsListTestXML(VolumeSnapshotsListTest):"},{"line_number":79,"context_line":"#    _interface \u003d \u0027xml\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2Fe7E%3D","line":78,"updated":"2013-05-08 09:20:37.000000000","message":"In similar cases we do not leave commented codes here. (-1)\n\nYou should create TODO note for the xml tests.\nYou should use TODO(mynick) or NOTE(mynick)  when you leave NOTE or TODO message.","commit_id":"5266d3deff799bf6e529f119b77b7f3ef1b3c3ea"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"093586c644fc4c748a7b6a652ba4dc34c2d61591","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            cls.volume_origin \u003d cls.create_volume()"},{"line_number":49,"context_line":"            for s in range(2):"},{"line_number":50,"context_line":"                s_name \u003d rand_name(\u0027snap\u0027)"},{"line_number":51,"context_line":"                s_desc \u003d \"description for snap n\" + str(s)"},{"line_number":52,"context_line":"                snap \u003d cls.create_snapshot(cls.volume_origin[\u0027id\u0027],"},{"line_number":53,"context_line":"                                           display_name\u003ds_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2Fep0%3D","line":50,"updated":"2013-05-08 13:00:47.000000000","message":"Can you read back these values in the list?","commit_id":"b1ad12a8a5f45342c7f413585260ad04e9a27dab"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"b159af17f5538de9e6440139bdfbc5bba1aedc1b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            cls.volume_origin \u003d cls.create_volume()"},{"line_number":49,"context_line":"            for s in range(2):"},{"line_number":50,"context_line":"                s_name \u003d rand_name(\u0027snap\u0027)"},{"line_number":51,"context_line":"                s_desc \u003d \"description for snap n\" + str(s)"},{"line_number":52,"context_line":"                snap \u003d cls.create_snapshot(cls.volume_origin[\u0027id\u0027],"},{"line_number":53,"context_line":"                                           display_name\u003ds_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2FepE%3D","line":50,"in_reply_to":"AAAAOn%2F%2Fep0%3D","updated":"2013-05-08 13:17:22.000000000","message":"will do","commit_id":"b1ad12a8a5f45342c7f413585260ad04e9a27dab"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"093586c644fc4c748a7b6a652ba4dc34c2d61591","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        missing_snaps \u003d []"},{"line_number":73,"context_line":"        fetched_snaps_name \u003d [e[\u0027display_name\u0027] for e in fetched_snaps]"},{"line_number":74,"context_line":"        for s in self.snap_list:"},{"line_number":75,"context_line":"            if s[\u0027display_name\u0027] not in fetched_snaps_name:"},{"line_number":76,"context_line":"                missing_snaps.append(s[\u0027display_name\u0027])"},{"line_number":77,"context_line":"        self.assertFalse(len(missing_snaps) \u003e 0,"},{"line_number":78,"context_line":"                         \"Failed to find snapshot %s in fetched list\" %"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2Fepw%3D","line":75,"updated":"2013-05-08 13:00:47.000000000","message":"It just testing the attribute existence.","commit_id":"b1ad12a8a5f45342c7f413585260ad04e9a27dab"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"b159af17f5538de9e6440139bdfbc5bba1aedc1b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        missing_snaps \u003d []"},{"line_number":73,"context_line":"        fetched_snaps_name \u003d [e[\u0027display_name\u0027] for e in fetched_snaps]"},{"line_number":74,"context_line":"        for s in self.snap_list:"},{"line_number":75,"context_line":"            if s[\u0027display_name\u0027] not in fetched_snaps_name:"},{"line_number":76,"context_line":"                missing_snaps.append(s[\u0027display_name\u0027])"},{"line_number":77,"context_line":"        self.assertFalse(len(missing_snaps) \u003e 0,"},{"line_number":78,"context_line":"                         \"Failed to find snapshot %s in fetched list\" %"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOn%2F%2FepQ%3D","line":75,"in_reply_to":"AAAAOn%2F%2Fepw%3D","updated":"2013-05-08 13:17:22.000000000","message":"not sure I understand, this is checking if the display_name contents matche","commit_id":"b1ad12a8a5f45342c7f413585260ad04e9a27dab"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"b9defb9aa70c98be17182db72a8c76682c1c6bf9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack, LLC"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2FYcE%3D","line":3,"updated":"2013-05-12 11:12:51.000000000","message":"If you want to assign copyright it should be to the OpenStack Foundation now and also the year should be 2013 :)","commit_id":"a8f1138fe725add82e3fdbf660b0d49f69eaf632"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"25ed2fe50e158c34ba42495939471a8ba3189221","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                    self.assertEqual(s[\u0027display_name\u0027], f[\u0027display_name\u0027],"},{"line_number":82,"context_line":"                                     \"Snapshot %s display_name mismatch\" %"},{"line_number":83,"context_line":"                                     s[\u0027id\u0027])"},{"line_number":84,"context_line":"        self.assertTrue(len(missing_snaps) \u003d\u003d 0,"},{"line_number":85,"context_line":"                        \"Failed to find snapshot %s in fetched list\" %"},{"line_number":86,"context_line":"                        \u0027, \u0027.join(s[\u0027id\u0027] for s in missing_snaps))"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2FYXo%3D","line":84,"updated":"2013-05-12 14:43:38.000000000","message":"can we turn this into an assertIn without using the missing_snaps list? assertTrue is really aweful to debug.","commit_id":"462e5d6273e4cf839369519678a0b27d3b392fc1"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"163affc0441615f38e10e95e8dccc28a58f917eb","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                    self.assertEqual(s[\u0027display_name\u0027], f[\u0027display_name\u0027],"},{"line_number":82,"context_line":"                                     \"Snapshot %s display_name mismatch\" %"},{"line_number":83,"context_line":"                                     s[\u0027id\u0027])"},{"line_number":84,"context_line":"        self.assertTrue(len(missing_snaps) \u003d\u003d 0,"},{"line_number":85,"context_line":"                        \"Failed to find snapshot %s in fetched list\" %"},{"line_number":86,"context_line":"                        \u0027, \u0027.join(s[\u0027id\u0027] for s in missing_snaps))"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2FYRw%3D","line":84,"in_reply_to":"AAAAOn%2F%2FYXo%3D","updated":"2013-05-12 21:17:45.000000000","message":"assertIn looks for strings in a list; afazekas suggests we should make sure that both, the id got at creation time and the name passed are found in the list output\n\nunfortunately I don\u0027t see any assertion which can look for tuples in a list, while we\u0027d need to test if (id,name) from snap_list is in [(id,name),...] from fetched_list\n\nThe options I see are:\n\n- create a custom assertion (auch)\n- use assertIn for both the id and the name in two separate assertions (which doesn\u0027t ensure the listing is showing the name for the correspondingly id)\n\ncan you suggest different paths?","commit_id":"462e5d6273e4cf839369519678a0b27d3b392fc1"}]}
