)]}'
{"quantum/common/test_lib.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":38,"context_line":"#    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"import sys"},{"line_number":41,"context_line":"import testtools"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"from nose import core"},{"line_number":44,"context_line":"from nose import result"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGwY%3D","line":41,"updated":"2013-02-07 00:04:10.000000000","message":"testtools needs to be included with 3rd party imports rather than stdlib. I\u0027m guessing a search/replace was used, which would work for unittest2 but unittest will require manual intervention.\nNote that this comment applies to many of the files in this patch.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"}],"quantum/plugins/cisco/tests/unit/test_cisco_extension.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        \"\"\" Set up function \"\"\""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        super(QosExtensionTest, self).setUp()"},{"line_number":160,"context_line":"        parent_resource \u003d dict(member_name\u003d\"tenant\","},{"line_number":161,"context_line":"                               collection_name\u003d\"extensions/csco/tenants\")"},{"line_number":162,"context_line":"        controller \u003d qos.QosController(QuantumManager.get_plugin())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGwU%3D","line":159,"updated":"2013-02-07 00:04:10.000000000","message":"I know this is required, and can guess as to why - but yuck! boilerplate!","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        \"\"\" Set up function \"\"\""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        super(QosExtensionTest, self).setUp()"},{"line_number":160,"context_line":"        parent_resource \u003d dict(member_name\u003d\"tenant\","},{"line_number":161,"context_line":"                               collection_name\u003d\"extensions/csco/tenants\")"},{"line_number":162,"context_line":"        controller \u003d qos.QosController(QuantumManager.get_plugin())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGI4%3D","line":159,"in_reply_to":"AAAAM3%2F%2FGwU%3D","updated":"2013-02-07 09:18:39.000000000","message":"Yay for python upcalling!","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            },"},{"line_number":179,"context_line":"        }"},{"line_number":180,"context_line":"        self._l2network_plugin \u003d l2network_plugin.L2Network()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_create_qos(self):"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGwQ%3D","line":181,"updated":"2013-02-07 00:04:10.000000000","message":"Unnecessary formatting change - please revert.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        \"\"\" Tear down \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        db.clear_db()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class QosExtensionTest(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BqO8%3D","side":"PARENT","line":156,"updated":"2013-02-22 14:44:12.000000000","message":"elsewhere we\u0027ve added an addCleanup() call when we remove a tearDown() Method, but not here.  Assuming the tests pass, I guess someone has verified that this call is not required?","commit_id":"b590f9dd560978ab8cee2da7bee96f29e2f307f7"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        \"\"\" Tear down \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        db.clear_db()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class QosExtensionTest(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BqFE%3D","side":"PARENT","line":156,"in_reply_to":"AAAAM3%2F%2BqO8%3D","updated":"2013-02-22 16:15:48.000000000","message":"This isn\u0027t a test case, is it?","commit_id":"b590f9dd560978ab8cee2da7bee96f29e2f307f7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        \"\"\" Tear down \"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        db.clear_db()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"class QosExtensionTest(unittest.TestCase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BpJQ%3D","side":"PARENT","line":156,"in_reply_to":"AAAAM3%2F%2BqO8%3D","updated":"2013-02-23 04:42:09.000000000","message":"You\u0027re right!","commit_id":"b590f9dd560978ab8cee2da7bee96f29e2f307f7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        self.test_app.delete(delete_profile_path)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def tearDown(self):"},{"line_number":406,"context_line":"        db.clear_db()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2Bou4%3D","line":405,"updated":"2013-02-24 08:44:42.000000000","message":"Should this be addCleanup?","commit_id":"86221b095caffcd74b0b5a7a9d990fa17a2bc065"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        self.test_app.delete(delete_profile_path)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def tearDown(self):"},{"line_number":406,"context_line":"        db.clear_db()"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2Bok4%3D","line":405,"in_reply_to":"AAAAM3%2F%2Bou4%3D","updated":"2013-02-24 19:17:02.000000000","message":"Yeah. There\u0027s a subsequent patch that does all of the addCleanup fixing.","commit_id":"86221b095caffcd74b0b5a7a9d990fa17a2bc065"}],"quantum/plugins/cisco/tests/unit/test_database.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":352,"context_line":"        super(NexusDBTest, self).setUp()"},{"line_number":353,"context_line":"        \"\"\"Setup for nexus db tests\"\"\""},{"line_number":354,"context_line":"        l2network_db.initialize()"},{"line_number":355,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":356,"context_line":"        self.dbtest \u003d NexusDB()"},{"line_number":357,"context_line":"        LOG.debug(\"Setup\")"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGwM%3D","line":355,"updated":"2013-02-07 00:04:10.000000000","message":"Given that the subsequent patch is intended to replace tearDown with addCleanup calls, should there be instances of that in this change? \n\nNote that this comment applies to other files in this patch.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":352,"context_line":"        super(NexusDBTest, self).setUp()"},{"line_number":353,"context_line":"        \"\"\"Setup for nexus db tests\"\"\""},{"line_number":354,"context_line":"        l2network_db.initialize()"},{"line_number":355,"context_line":"        self.addCleanup(db.clear_db)"},{"line_number":356,"context_line":"        self.dbtest \u003d NexusDB()"},{"line_number":357,"context_line":"        LOG.debug(\"Setup\")"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGIk%3D","line":355,"in_reply_to":"AAAAM3%2F%2FGwM%3D","updated":"2013-02-07 09:18:39.000000000","message":"I migrated the ones where adding the tearDown upcall was about as much work as just moving it to a direct addCleanup.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"}],"quantum/tests/unit/cisco/test_nexus_plugin.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import testtools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from quantum.db import api as db"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FAAo%3D","line":17,"updated":"2013-02-11 23:52:18.000000000","message":"No blank line required - mock is stdlib.","commit_id":"8015d42e834c525acefea95b8bc0b9425f4e8208"}],"quantum/tests/unit/db/loadbalancer/test_db_loadbalancer.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo.config import cfg"},{"line_number":21,"context_line":"from testtools import matchers"},{"line_number":22,"context_line":"import webob.exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from quantum.api.extensions import ExtensionMiddleware"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoYw%3D","line":21,"updated":"2013-02-25 06:56:15.000000000","message":"why add it here?","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo.config import cfg"},{"line_number":21,"context_line":"from testtools import matchers"},{"line_number":22,"context_line":"import webob.exc"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from quantum.api.extensions import ExtensionMiddleware"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoSQ%3D","line":21,"in_reply_to":"AAAAM3%2F%2BoYw%3D","updated":"2013-02-25 08:54:57.000000000","message":"I believe it used to be relevant but went away in a rebase.","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"quantum/tests/unit/linuxbridge/test_lb_security_group.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def tearDown(self):"},{"line_number":53,"context_line":"        attributes.RESOURCE_ATTRIBUTE_MAP \u003d self._attribute_map_bk_"},{"line_number":54,"context_line":"        super(LinuxBridgeSecurityGroupsTestCase, self).tearDown()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class TestLinuxBridgeSecurityGroups(LinuxBridgeSecurityGroupsTestCase,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoYs%3D","line":54,"updated":"2013-02-25 06:56:15.000000000","message":"any difference between the order of calling super and local statements?\ndo we have a principle for it?","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def tearDown(self):"},{"line_number":53,"context_line":"        attributes.RESOURCE_ATTRIBUTE_MAP \u003d self._attribute_map_bk_"},{"line_number":54,"context_line":"        super(LinuxBridgeSecurityGroupsTestCase, self).tearDown()"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class TestLinuxBridgeSecurityGroups(LinuxBridgeSecurityGroupsTestCase,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoSY%3D","line":54,"in_reply_to":"AAAAM3%2F%2BoYs%3D","updated":"2013-02-25 08:54:57.000000000","message":"The super of setUp should come first and the super of  tearDown should come in the opposite order. There are some test classes in the quantum suite that are not designed in such a way as to allow for setUp to come first - and there is a patch in this series which deletes all tearDown methods.","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"quantum/tests/unit/metaplugin/test_metaplugin.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        self.mox.VerifyAll()"},{"line_number":312,"context_line":"        db.clear_db()"},{"line_number":313,"context_line":"        super(MetaQuantumPluginV2Test, self).tearDown()"},{"line_number":314,"context_line":"        super(MetaQuantumPluginV2Test, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGwE%3D","line":314,"updated":"2013-02-07 00:04:10.000000000","message":"Duplicate line - please remove.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"2dbe546a782c9de51024e661bed466e1dbb54bf5","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        self.plugin.delete_router(self.context, router_ret1[\u0027id\u0027])"},{"line_number":289,"context_line":"        self.plugin.delete_router(self.context, router_ret2[\u0027id\u0027])"},{"line_number":290,"context_line":"        with testtools.ExpectedException(FlavorNotFound):"},{"line_number":291,"context_line":"            self.plugin.get_router(self.context, router_ret1[\u0027id\u0027])"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def test_extension_method(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoZs%3D","line":290,"updated":"2013-02-25 04:34:07.000000000","message":"Is it not possible to provide a transparent compatibility layer for unittest2?","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"quantum/tests/unit/nec/test_trema_driver.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.mox.VerifyAll()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class TremaPortBaseDriverTest(TremaDriverNetworkTestBase, testtools.TestCase):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    driver_name \u003d \"trema_port\""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoYo%3D","line":82,"updated":"2013-02-25 06:56:15.000000000","message":"We don\u0027t need testtools.TestCase since TremaDriverNetworkTestBase is basing the testtools.TestCase.","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.mox.VerifyAll()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class TremaPortBaseDriverTest(TremaDriverNetworkTestBase, testtools.TestCase):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    driver_name \u003d \"trema_port\""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoSI%3D","line":82,"in_reply_to":"AAAAM3%2F%2BoYo%3D","updated":"2013-02-25 08:54:57.000000000","message":"Thanks! Moving rebase problem... :)","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"class TremaPortMACBaseDriverTest(TremaDriverNetworkTestBase,"},{"line_number":114,"context_line":"                                 testtools.TestCase):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    driver_name \u003d \"trema_portmac\""},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoYk%3D","line":114,"updated":"2013-02-25 06:56:15.000000000","message":"ditto","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        self.mox.VerifyAll()"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"class TremaMACBaseDriverTest(TremaDriverNetworkTestBase, testtools.TestCase):"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    driver_name \u003d \"trema_mac\""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoYg%3D","line":154,"updated":"2013-02-25 06:56:15.000000000","message":"ditto","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.mox.VerifyAll()"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"class TremaFilterDriverTest(TremaDriverTestBase, testtools.TestCase):"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def get_ofc_item_random_params(self):"},{"line_number":185,"context_line":"        \"\"\"create random parameters for ofc_item test\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoYc%3D","line":182,"updated":"2013-02-25 06:56:15.000000000","message":"ditto","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"quantum/tests/unit/nicira/test_nicira_plugin.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    def test_create_bridge_vlan_network_outofrange_returns_400(self):"},{"line_number":152,"context_line":"        with testtools.ExpectedException(webob.exc.HTTPClientError) as ctx_manager:"},{"line_number":153,"context_line":"            self._test_create_bridge_network(vlan_id\u003d5000)"},{"line_number":154,"context_line":"            self.assertEquals(ctx_manager.exception.code, 400)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"class NiciraPortSecurityTestCase(psec.PortSecurityDBTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGwA%3D","line":154,"updated":"2013-02-07 00:04:10.000000000","message":"Is this dedent unnecessary? It would be preferable to limit the scope of the with statement to the line expected to raise the exception. At least with \u0027with self.assertRaises as x\u0027, the variable x would be available outside of the with block.\n\nNote that this comment applies to other files in this patch.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":151,"context_line":"    def test_create_bridge_vlan_network_outofrange_returns_400(self):"},{"line_number":152,"context_line":"        with testtools.ExpectedException(webob.exc.HTTPClientError) as ctx_manager:"},{"line_number":153,"context_line":"            self._test_create_bridge_network(vlan_id\u003d5000)"},{"line_number":154,"context_line":"            self.assertEquals(ctx_manager.exception.code, 400)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"class NiciraPortSecurityTestCase(psec.PortSecurityDBTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGIg%3D","line":154,"in_reply_to":"AAAAM3%2F%2FGwA%3D","updated":"2013-02-07 09:18:39.000000000","message":"So, I don\u0027t really know what\u0027s up with this one working before - but ctx_manager is, in fact, None if it\u0027s outside of the with statement. I believe that is correct behavior, and that unittest.assertRaises was doing something incorrect. The whole point of a context managed with block is that the subject of the with statement goes away afterwards.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"}],"quantum/tests/unit/nicira/test_nvplib.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# @author: Salvatore Orlando, VMware"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import testtools"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BqNc%3D","line":18,"updated":"2013-02-22 14:44:12.000000000","message":"elsewhere we have mock as a third-party import, not a core python import, I think.","commit_id":"86221b095caffcd74b0b5a7a9d990fa17a2bc065"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"# @author: Salvatore Orlando, VMware"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import testtools"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BpJM%3D","line":18,"in_reply_to":"AAAAM3%2F%2BqNc%3D","updated":"2013-02-23 04:42:09.000000000","message":"Hehe. Maru made me go back and ensure that they\u0027re all core python imports...","commit_id":"86221b095caffcd74b0b5a7a9d990fa17a2bc065"}],"quantum/tests/unit/test_agent_netns_cleanup.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def test_setup_conf(self):"},{"line_number":37,"context_line":"        with mock.patch(\u0027quantum.common.config.setup_logging\u0027):"},{"line_number":38,"context_line":"            conf \u003d util.setup_conf()"},{"line_number":39,"context_line":"            self.assertFalse(conf.force)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_kill_dhcp(self, dhcp_active\u003dTrue):"},{"line_number":42,"context_line":"        conf \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoX0%3D","line":39,"updated":"2013-02-25 06:56:15.000000000","message":"why do we have this case added in this patch?","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def test_setup_conf(self):"},{"line_number":37,"context_line":"        with mock.patch(\u0027quantum.common.config.setup_logging\u0027):"},{"line_number":38,"context_line":"            conf \u003d util.setup_conf()"},{"line_number":39,"context_line":"            self.assertFalse(conf.force)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_kill_dhcp(self, dhcp_active\u003dTrue):"},{"line_number":42,"context_line":"        conf \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoSE%3D","line":39,"in_reply_to":"AAAAM3%2F%2BoX0%3D","updated":"2013-02-25 08:54:57.000000000","message":"Agg. thanks - debugging patch slipped in.","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"quantum/tests/unit/test_api_v2.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class APIv2TestCase(APIv2TestBase):"},{"line_number":118,"context_line":"    # NOTE(jkoelker) This potentially leaks the mock object if the setUp"},{"line_number":119,"context_line":"    #                raises without being caught. Using testtools"},{"line_number":120,"context_line":"    #                or dropping 2.6 support so we can use addCleanup"},{"line_number":121,"context_line":"    #                will get around this."},{"line_number":122,"context_line":"    def _do_field_list(self, resource, base_fields):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGvo%3D","line":119,"updated":"2013-02-07 00:04:10.000000000","message":"Given that this patch makes the switch to testtools, this comment should probably be removed rather than modified.\n\nThis comment also applies to the comment starting on line 877.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class APIv2TestCase(APIv2TestBase):"},{"line_number":118,"context_line":"    # NOTE(jkoelker) This potentially leaks the mock object if the setUp"},{"line_number":119,"context_line":"    #                raises without being caught. Using testtools"},{"line_number":120,"context_line":"    #                or dropping 2.6 support so we can use addCleanup"},{"line_number":121,"context_line":"    #                will get around this."},{"line_number":122,"context_line":"    def _do_field_list(self, resource, base_fields):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGIQ%3D","line":119,"in_reply_to":"AAAAM3%2F%2FGvo%3D","updated":"2013-02-07 09:18:39.000000000","message":"HAHAHAHA. Nice.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"}],"quantum/tests/unit/test_db.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"import fixtures"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"import testtools"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import quantum.db.api as db"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoWY%3D","line":21,"updated":"2013-02-25 06:56:15.000000000","message":"why import mock again?","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"quantum/tests/unit/test_linux_daemon.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Mark McClain, DreamHost"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import testtools"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGvg%3D","line":19,"updated":"2013-02-07 00:04:10.000000000","message":"Please revert this import ordering change. Mock is not stdlib for python \u003c 3.3.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Mark McClain, DreamHost"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import testtools"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGHI%3D","line":19,"in_reply_to":"AAAAM3%2F%2FGvg%3D","updated":"2013-02-07 09:18:39.000000000","message":"Oh. Duh. Sorry.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"}],"quantum/tests/unit/test_linux_dhcp.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"4661521910ee6ed65a9902944f09e18332f8c7bf","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"import socket"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import testtools"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FGvc%3D","line":19,"updated":"2013-02-07 00:04:10.000000000","message":"Please ensure that mock continues to be ordered as a 3rd party import.","commit_id":"e6717d2f9aa525d03a79d4ec7ea755d9fdee8a86"}],"quantum/tests/unit/test_quantum_manager.py":[{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":50,"context_line":"        config.parse(args\u003dargs)"},{"line_number":51,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":52,"context_line":"        self.useFixture("},{"line_number":53,"context_line":"            fixtures.MonkeyPatch(\u0027quantum.manager.QuantumManager._instance\u0027))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_service_plugin_is_loaded(self):"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\"core_plugin\","}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BqMc%3D","line":53,"updated":"2013-02-22 14:44:12.000000000","message":"i don\u0027t understand this well enough to know why these two would be an equivalent test.  Can someone explain?","commit_id":"86221b095caffcd74b0b5a7a9d990fa17a2bc065"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":50,"context_line":"        config.parse(args\u003dargs)"},{"line_number":51,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":52,"context_line":"        self.useFixture("},{"line_number":53,"context_line":"            fixtures.MonkeyPatch(\u0027quantum.manager.QuantumManager._instance\u0027))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_service_plugin_is_loaded(self):"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\"core_plugin\","}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BpJI%3D","line":53,"in_reply_to":"AAAAM3%2F%2BqFI%3D","updated":"2013-02-23 04:42:09.000000000","message":"Correct. More specifically, it will ensure that it\u0027s None for each of the tests here, and then when it\u0027s done it will set it back to whatever it was before. (doing it this way prevents code drift in the future - if the default value of _instance happened to be changed to something else.","commit_id":"86221b095caffcd74b0b5a7a9d990fa17a2bc065"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":50,"context_line":"        config.parse(args\u003dargs)"},{"line_number":51,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":52,"context_line":"        self.useFixture("},{"line_number":53,"context_line":"            fixtures.MonkeyPatch(\u0027quantum.manager.QuantumManager._instance\u0027))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_service_plugin_is_loaded(self):"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\"core_plugin\","}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAM3%2F%2BqFI%3D","line":53,"in_reply_to":"AAAAM3%2F%2BqMc%3D","updated":"2013-02-22 16:15:48.000000000","message":"addCleanup is pretty clear, as it just registers a function which is called not only if setup completes successfully, but also if it raises (and some of our current tests if setup raises this will rapidly lead to oom).\n\nThe second is a bit more convoluted. I think the monkeypatch, since it missed the second parameter, sets _instance of QuantumManager to None.\n\nself.useFixture should cause the patch to be applied in setUp (?), which is tantamount to setting the manager instance to none in teardown.","commit_id":"86221b095caffcd74b0b5a7a9d990fa17a2bc065"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        config.parse(args\u003dargs)"},{"line_number":51,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":52,"context_line":"        self.useFixture("},{"line_number":53,"context_line":"            fixtures.MonkeyPatch(\u0027quantum.manager.QuantumManager._instance\u0027))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_service_plugin_is_loaded(self):"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\"core_plugin\","}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoWQ%3D","line":53,"updated":"2013-02-25 06:56:15.000000000","message":"original meaning of tearDown() is to set QuantumManager._instance \u003d None after testing,\nbut the useFixture one is to keep the original value, use the temp value None and then restore the original value. \nright?","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":50,"context_line":"        config.parse(args\u003dargs)"},{"line_number":51,"context_line":"        self.addCleanup(cfg.CONF.reset)"},{"line_number":52,"context_line":"        self.useFixture("},{"line_number":53,"context_line":"            fixtures.MonkeyPatch(\u0027quantum.manager.QuantumManager._instance\u0027))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_service_plugin_is_loaded(self):"},{"line_number":56,"context_line":"        cfg.CONF.set_override(\"core_plugin\","}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoSA%3D","line":53,"in_reply_to":"AAAAM3%2F%2BoWQ%3D","updated":"2013-02-25 08:54:57.000000000","message":"Yes. It has the same effect for the life of the tests themselves and is more future-proof. The original reason why you\u0027d set it to None would be to set it _back_ to the state it was in before the tests. That means the tests expect that it starts as None, so they are trying to set it back to None when they are done.\n\nInstead of doing that, by telling it to set it to the thing the tests expect it to and to set it back to whatever it happened to be when the test started, the tests can handle a change in the default value of the attribute gracefully.","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"quantum/tests/unit/test_setup.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","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 2011 OpenStack LLC."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoW8%3D","side":"PARENT","line":2,"updated":"2013-02-25 06:56:15.000000000","message":"why do we remove this file?","commit_id":"94352039f83a1721afc79464d825dfdef409e146"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","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 2011 OpenStack LLC."},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAM3%2F%2Bmkk%3D","side":"PARENT","line":1,"updated":"2013-02-26 02:47:08.000000000","message":"why delete this file?","commit_id":"bec2549657c8485999692ab449fabb583b4c39c2"}],"quantum/tests/unit/testlib_api.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    fmt \u003d \u0027json\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def setUp(self):"},{"line_number":42,"context_line":"        super(WebTestCase, self).setUp()"},{"line_number":43,"context_line":"        json_deserializer \u003d wsgi.JSONDeserializer()"},{"line_number":44,"context_line":"        xml_deserializer \u003d wsgi.XMLDeserializer("},{"line_number":45,"context_line":"            attributes.get_attr_metadata())"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoXA%3D","line":42,"updated":"2013-02-25 06:56:15.000000000","message":"must we change the order?","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":39,"context_line":"    fmt \u003d \u0027json\u0027"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def setUp(self):"},{"line_number":42,"context_line":"        super(WebTestCase, self).setUp()"},{"line_number":43,"context_line":"        json_deserializer \u003d wsgi.JSONDeserializer()"},{"line_number":44,"context_line":"        xml_deserializer \u003d wsgi.XMLDeserializer("},{"line_number":45,"context_line":"            attributes.get_attr_metadata())"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2BoR0%3D","line":42,"in_reply_to":"AAAAM3%2F%2BoXA%3D","updated":"2013-02-25 08:54:57.000000000","message":"It\u0027s more correct to set up the base class and then make local modifications. There are some other classes where we are subclassing our own classes and know things about their internals, so we have designed them to require doing local modifications before the upcall. However, this is a violation of the class api and should eventually be fixed. (it makes them VERY fragile)\n\nIn this case, there is no reason for this to be in the wrong order.","commit_id":"327bacb405239d95fe9c890c5d248f46f4fa303a"}],"setup.cfg":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fcd308867095307e57a5d25b2be31ed781854720","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#                tissue http://pypi.python.org/pypi/tissue (pep8 checker)"},{"line_number":10,"context_line":"#                openstack-nose https://github.com/jkoelker/openstack-nose"},{"line_number":11,"context_line":"verbosity\u003d2"},{"line_number":12,"context_line":"detailed-errors\u003d1"},{"line_number":13,"context_line":"cover-package \u003d quantum"},{"line_number":14,"context_line":"cover-html \u003d true"},{"line_number":15,"context_line":"cover-erase \u003d true"}],"source_content_type":"text/x-ttcn-cfg","patch_set":19,"id":"AAAAM3%2F%2BoXo%3D","side":"PARENT","line":12,"updated":"2013-02-25 06:56:15.000000000","message":"why do we remove it?","commit_id":"94352039f83a1721afc79464d825dfdef409e146"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"unresolved":false,"context_lines":[{"line_number":9,"context_line":"#                tissue http://pypi.python.org/pypi/tissue (pep8 checker)"},{"line_number":10,"context_line":"#                openstack-nose https://github.com/jkoelker/openstack-nose"},{"line_number":11,"context_line":"verbosity\u003d2"},{"line_number":12,"context_line":"detailed-errors\u003d1"},{"line_number":13,"context_line":"cover-package \u003d quantum"},{"line_number":14,"context_line":"cover-html \u003d true"},{"line_number":15,"context_line":"cover-erase \u003d true"}],"source_content_type":"text/x-ttcn-cfg","patch_set":19,"id":"AAAAM3%2F%2BoRs%3D","side":"PARENT","line":12,"in_reply_to":"AAAAM3%2F%2BoXo%3D","updated":"2013-02-25 08:54:57.000000000","message":"Because the nose detailed errors plugin makes assumptions about internals of things that are not true, and it will break when we add testtools which does not meet those assumptions. It\u0027s also providing functionality that we don\u0027t need, so removing it actually does not remove anything we are taking advantage of.","commit_id":"94352039f83a1721afc79464d825dfdef409e146"}]}
