)]}'
{"doc/source/contributors/index.rst":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"5afed896309e7d3869d79222610898a5166e2264","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The project contains two test packages, one for unit tests and one for"},{"line_number":52,"context_line":"functional tests. The ``openstack.tests.unit`` package tests the SDK\u0027s"},{"line_number":53,"context_line":"features in isolation. The ``openstack.tests.unit`` package tests the SDK\u0027s"},{"line_number":54,"context_line":"features against an OpenStack cloud."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":".. toctree::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa53dc9_ad7c2421","line":53,"updated":"2015-04-06 18:09:44.000000000","message":"s/unit/functional","commit_id":"57822d0ec1b2429c1a16d5dba27c1064bee60baf"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"f15d1f4a05b74cf59dda14289f8b2b320becd892","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The project contains two test packages, one for unit tests and one for"},{"line_number":52,"context_line":"functional tests. The ``openstack.tests.unit`` package tests the SDK\u0027s"},{"line_number":53,"context_line":"features in isolation. The ``openstack.tests.unit`` package tests the SDK\u0027s"},{"line_number":54,"context_line":"features against an OpenStack cloud."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":".. toctree::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa53dc9_b1cebe58","line":53,"in_reply_to":"9aa53dc9_ad7c2421","updated":"2015-04-06 18:42:53.000000000","message":"Done","commit_id":"57822d0ec1b2429c1a16d5dba27c1064bee60baf"}],"doc/source/contributors/testing.rst":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"5afed896309e7d3869d79222610898a5166e2264","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In order to run the entire unit test suite, simply run the ``tox`` command"},{"line_number":16,"context_line":"inside of your source checkout. This will attempt to run every test command"},{"line_number":17,"context_line":"listed inside of ``tox.ini``, which includes Python 2.6, 2.7, 3.3, 3.4, PyPy,"},{"line_number":18,"context_line":"and a PEP 8 check. You should run the full test suite on all versions before"},{"line_number":19,"context_line":"submitting changes for review in order to avoid unexpected failures in the"},{"line_number":20,"context_line":"continuous integration system.::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa53dc9_cdb408d3","line":17,"updated":"2015-04-06 18:09:44.000000000","message":"We took py26 out a few weeks ago.","commit_id":"57822d0ec1b2429c1a16d5dba27c1064bee60baf"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"f15d1f4a05b74cf59dda14289f8b2b320becd892","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In order to run the entire unit test suite, simply run the ``tox`` command"},{"line_number":16,"context_line":"inside of your source checkout. This will attempt to run every test command"},{"line_number":17,"context_line":"listed inside of ``tox.ini``, which includes Python 2.6, 2.7, 3.3, 3.4, PyPy,"},{"line_number":18,"context_line":"and a PEP 8 check. You should run the full test suite on all versions before"},{"line_number":19,"context_line":"submitting changes for review in order to avoid unexpected failures in the"},{"line_number":20,"context_line":"continuous integration system.::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9aa53dc9_91c4da40","line":17,"in_reply_to":"9aa53dc9_cdb408d3","updated":"2015-04-06 18:42:53.000000000","message":"Done","commit_id":"57822d0ec1b2429c1a16d5dba27c1064bee60baf"}],"openstack/tests/functional/compute/v2/test_server.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"b17fa6ed383ba3093b74220721647240ced245a4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            \u0027password\u0027: test_cloud.config[\u0027auth\u0027][\u0027password\u0027]"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        self.conn \u003d connection.Connection(preference\u003dpref, **auth_args)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_flavors(self):"},{"line_number":39,"context_line":"        flavors \u003d self.conn.compute.list_flavors()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_1ff41cf0","line":36,"updated":"2015-04-03 04:48:34.000000000","message":"Instead of building up a dictionary, can you set those as the keyword args directly?","commit_id":"cee9ebda80b7a307245eb057e823cdc6cf227085"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"9ad4ab41c6e08645236a1dea9de3d5211daa1612","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            \u0027password\u0027: test_cloud.config[\u0027auth\u0027][\u0027password\u0027]"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        self.conn \u003d connection.Connection(preference\u003dpref, **auth_args)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_flavors(self):"},{"line_number":39,"context_line":"        flavors \u003d self.conn.compute.list_flavors()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_5a56195d","line":36,"in_reply_to":"baa041b7_1ff41cf0","updated":"2015-04-06 18:38:34.000000000","message":"Done","commit_id":"cee9ebda80b7a307245eb057e823cdc6cf227085"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"b17fa6ed383ba3093b74220721647240ced245a4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.conn \u003d connection.Connection(preference\u003dpref, **auth_args)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_flavors(self):"},{"line_number":39,"context_line":"        flavors \u003d self.conn.compute.list_flavors()"},{"line_number":40,"context_line":"        self.assertGreater(sum(1 for _ in flavors), 0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_1fb1bce1","line":39,"updated":"2015-04-03 04:48:34.000000000","message":"Some of the things I\u0027d want to test out of a list_flavors call is not only that I\u0027m getting back more than zero flavors but that the flavors - whatever they actually are - contain some values in types that we expect to work with. Unfortunately the API documentation is bad so I don\u0027t think we really know what the minimum default response is outside of digging into the server code or trusting what we see back from a devstack instance. It would probably look something like this. A test like this would have caught the times I broke various object_store responses, specifically in the headers.\n\n    flavors \u003d list(self.conn.compute.list_flavors())\n    self.assertGreater(len(flavors), 0)\n\n    for flavor in flavors:\n        self.assertIsInstance(flavor.id, str)\n        self.assertIsInstance(flavor.name, str)\n        self.assertIsInstance(flavor.disk, int)\n        self.assertIsInstance(flavor.ram, int)\n        self.assertIsInstance(flavor.vcpus, int)\n        self.assertIsInstance(flavor.is_public, bool)","commit_id":"cee9ebda80b7a307245eb057e823cdc6cf227085"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"9ad4ab41c6e08645236a1dea9de3d5211daa1612","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.conn \u003d connection.Connection(preference\u003dpref, **auth_args)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_flavors(self):"},{"line_number":39,"context_line":"        flavors \u003d self.conn.compute.list_flavors()"},{"line_number":40,"context_line":"        self.assertGreater(sum(1 for _ in flavors), 0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_486533df","line":39,"in_reply_to":"baa041b7_1fb1bce1","updated":"2015-04-06 18:38:34.000000000","message":"Done","commit_id":"cee9ebda80b7a307245eb057e823cdc6cf227085"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"61fb0d0ba4bc0d5a0ef2a5790126bb81bcf0c139","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from openstack import user_preference"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestServer(unittest.TestCase):"},{"line_number":23,"context_line":"    def setUp(self):"},{"line_number":24,"context_line":"        test_cloud \u003d os_client_config.OpenStackConfig().get_one_cloud("},{"line_number":25,"context_line":"            \u0027test_cloud\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aaa499b_6c4619c1","line":22,"updated":"2015-04-11 15:17:57.000000000","message":"Can this be in TestFlavor in a file named test_flavor.py so we are consistent with our unit tests?","commit_id":"d53b37b1f2add973bf095539f0bf9e7e6c948ea3"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"65c3c5f372070659040f5a90dc0d551713bdeb8c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from openstack import user_preference"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestServer(unittest.TestCase):"},{"line_number":23,"context_line":"    def setUp(self):"},{"line_number":24,"context_line":"        test_cloud \u003d os_client_config.OpenStackConfig().get_one_cloud("},{"line_number":25,"context_line":"            \u0027test_cloud\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aaa499b_00e4a638","line":22,"in_reply_to":"7aaa499b_6c4619c1","updated":"2015-04-14 17:02:25.000000000","message":"Done","commit_id":"d53b37b1f2add973bf095539f0bf9e7e6c948ea3"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"61fb0d0ba4bc0d5a0ef2a5790126bb81bcf0c139","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            self.assertIsInstance(flavor.disk, int)"},{"line_number":45,"context_line":"            self.assertIsInstance(flavor.ram, int)"},{"line_number":46,"context_line":"            self.assertIsInstance(flavor.vcpus, int)"},{"line_number":47,"context_line":"            self.assertIsInstance(flavor.is_public, bool)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aaa499b_2c17f1a4","line":47,"updated":"2015-04-11 15:17:57.000000000","message":"is_public is an extension.  It would be nice for things like that if we had some assert if exists assertIsInstance.  That or just get rid of it for now.","commit_id":"d53b37b1f2add973bf095539f0bf9e7e6c948ea3"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"65c3c5f372070659040f5a90dc0d551713bdeb8c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            self.assertIsInstance(flavor.disk, int)"},{"line_number":45,"context_line":"            self.assertIsInstance(flavor.ram, int)"},{"line_number":46,"context_line":"            self.assertIsInstance(flavor.vcpus, int)"},{"line_number":47,"context_line":"            self.assertIsInstance(flavor.is_public, bool)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aaa499b_00bb860f","line":47,"in_reply_to":"7aaa499b_2c17f1a4","updated":"2015-04-14 17:02:25.000000000","message":"Nice catch. I\u0027m just going to remove it for now. We can figure out how to handle testing extension properties in another patch.","commit_id":"d53b37b1f2add973bf095539f0bf9e7e6c948ea3"}]}
