)]}'
{"doc/source/index.rst":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"b8f60949d075c1253e9d75d0848f4b2100f8afa6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   HACKING"},{"line_number":68,"context_line":"   REVIEWING"},{"line_number":69,"context_line":"   microversion_testing"},{"line_number":70,"context_line":"   test-removal"},{"line_number":71,"context_line":"   write_tests"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a30ddce_49f2aa70","line":70,"range":{"start_line":70,"start_character":3,"end_line":70,"end_character":15},"updated":"2017-03-09 09:17:09.000000000","message":"can we rename this file to test_removal for consistency.","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"cb5814de3e67692f9d26c703f10671c1fe56f5bb","unresolved":false,"context_lines":[{"line_number":67,"context_line":"   HACKING"},{"line_number":68,"context_line":"   REVIEWING"},{"line_number":69,"context_line":"   microversion_testing"},{"line_number":70,"context_line":"   test-removal"},{"line_number":71,"context_line":"   write_tests"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"-------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_fe3dccc3","line":70,"updated":"2017-03-30 03:44:39.000000000","message":"indeed, I think we can do it with another patch.","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"839835322e718b96a121ee85db8224933c73f085","unresolved":false,"context_lines":[{"line_number":68,"context_line":"   REVIEWING"},{"line_number":69,"context_line":"   microversion_testing"},{"line_number":70,"context_line":"   test-removal"},{"line_number":71,"context_line":"   write_tests"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"-------"},{"line_number":74,"context_line":"Plugins"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_69ae742f","line":71,"range":{"start_line":71,"start_character":0,"end_line":71,"end_character":14},"updated":"2017-03-31 16:56:54.000000000","message":"nit: This item seems more important than microversion_testing and test-removal. It would be nice to put this above them.","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"}],"doc/source/write_tests.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a71876d817b96b241dae5e8823211aaa67343b03","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def skip_checks(self):"},{"line_number":72,"context_line":"        \"\"\"This section is used to evaluate config early and skip all test"},{"line_number":73,"context_line":"           methods based "},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        super(TestExampleCase, cls).skip_checks()"},{"line_number":76,"context_line":"        if not CONF.section.foo"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba2be162_fa826e51","line":73,"updated":"2017-03-01 20:29:27.000000000","message":"pep8 mfer","commit_id":"6932c23068d87421f4476643594f28030f91694d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"03c3fbb82eab0e06e540b53deb44b9521952bfc6","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def skip_checks(self):"},{"line_number":72,"context_line":"        \"\"\"This section is used to evaluate config early and skip all test"},{"line_number":73,"context_line":"           methods based "},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        super(TestExampleCase, cls).skip_checks()"},{"line_number":76,"context_line":"        if not CONF.section.foo"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba2be162_f54e946d","line":73,"in_reply_to":"ba2be162_fa826e51","updated":"2017-03-03 15:52:14.000000000","message":"Done","commit_id":"6932c23068d87421f4476643594f28030f91694d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a71876d817b96b241dae5e8823211aaa67343b03","unresolved":false,"context_lines":[{"line_number":152,"context_line":"to do this is::"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    class PublicObjectTest(base.BaseObjectTest):"},{"line_number":155,"context_line":"    "},{"line_number":156,"context_line":"        credentials \u003d [[\u0027operator\u0027, CONF.object_storage.operator_role],"},{"line_number":157,"context_line":"                       [\u0027operator_alt\u0027, CONF.object_storage.operator_role]]"},{"line_number":158,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba2be162_1a866265","line":155,"updated":"2017-03-01 20:29:27.000000000","message":"omfg","commit_id":"6932c23068d87421f4476643594f28030f91694d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"03c3fbb82eab0e06e540b53deb44b9521952bfc6","unresolved":false,"context_lines":[{"line_number":152,"context_line":"to do this is::"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    class PublicObjectTest(base.BaseObjectTest):"},{"line_number":155,"context_line":"    "},{"line_number":156,"context_line":"        credentials \u003d [[\u0027operator\u0027, CONF.object_storage.operator_role],"},{"line_number":157,"context_line":"                       [\u0027operator_alt\u0027, CONF.object_storage.operator_role]]"},{"line_number":158,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba2be162_555a002b","line":155,"in_reply_to":"ba2be162_1a866265","updated":"2017-03-03 15:52:14.000000000","message":"Done","commit_id":"6932c23068d87421f4476643594f28030f91694d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f74cf698fbe5629b584e9c05d2a15ec7e735e9fc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"will be executed by the test runner. But, the TestCase is the smallest self"},{"line_number":26,"context_line":"contained unit for tests from the tempest perspective. It\u0027s also the level at"},{"line_number":27,"context_line":"which tempest is parallel safe. In other words, multiple TestCases can be"},{"line_number":28,"context_line":"executed in parallel, but individual test methods can not. Also all test methods"},{"line_number":29,"context_line":"within a TestCase are assumed to be executed serially. As such you can use the"},{"line_number":30,"context_line":"test case to store variables that are shared between methods."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_32eca629","line":28,"range":{"start_line":28,"start_character":26,"end_line":28,"end_character":57},"updated":"2017-03-04 02:32:37.000000000","message":"need to add \"in the same TestCase\"","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"14a716c2aee230348d9e7f987f15a480e8ce7baf","unresolved":false,"context_lines":[{"line_number":25,"context_line":"will be executed by the test runner. But, the TestCase is the smallest self"},{"line_number":26,"context_line":"contained unit for tests from the tempest perspective. It\u0027s also the level at"},{"line_number":27,"context_line":"which tempest is parallel safe. In other words, multiple TestCases can be"},{"line_number":28,"context_line":"executed in parallel, but individual test methods can not. Also all test methods"},{"line_number":29,"context_line":"within a TestCase are assumed to be executed serially. As such you can use the"},{"line_number":30,"context_line":"test case to store variables that are shared between methods."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_8ec26651","line":28,"range":{"start_line":28,"start_character":26,"end_line":28,"end_character":57},"in_reply_to":"ba2be162_32eca629","updated":"2017-03-06 14:38:17.000000000","message":"Done","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f74cf698fbe5629b584e9c05d2a15ec7e735e9fc","unresolved":false,"context_lines":[{"line_number":34,"context_line":"In standard unittest the lifcycle of a TestCase can be described in the"},{"line_number":35,"context_line":"following phases:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":" #. setupClass"},{"line_number":38,"context_line":" #. setUp"},{"line_number":39,"context_line":" #. Test Execution"},{"line_number":40,"context_line":" #. tearDown"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_320826da","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":14},"updated":"2017-03-04 02:32:37.000000000","message":"s/setupClass/setUpClass/\n\nref: https://review.openstack.org/#/c/441540/","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"14a716c2aee230348d9e7f987f15a480e8ce7baf","unresolved":false,"context_lines":[{"line_number":34,"context_line":"In standard unittest the lifcycle of a TestCase can be described in the"},{"line_number":35,"context_line":"following phases:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":" #. setupClass"},{"line_number":38,"context_line":" #. setUp"},{"line_number":39,"context_line":" #. Test Execution"},{"line_number":40,"context_line":" #. tearDown"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_cebffecd","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":14},"in_reply_to":"ba2be162_320826da","updated":"2017-03-06 14:38:17.000000000","message":"Done","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f74cf698fbe5629b584e9c05d2a15ec7e735e9fc","unresolved":false,"context_lines":[{"line_number":38,"context_line":" #. setUp"},{"line_number":39,"context_line":" #. Test Execution"},{"line_number":40,"context_line":" #. tearDown"},{"line_number":41,"context_line":" #. doCleanups"},{"line_number":42,"context_line":" #. tearDownClass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"setupClass"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_d2498a32","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":14},"updated":"2017-03-04 02:32:37.000000000","message":"nit: doCleanups is not used in Tempest btw.","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"14a716c2aee230348d9e7f987f15a480e8ce7baf","unresolved":false,"context_lines":[{"line_number":38,"context_line":" #. setUp"},{"line_number":39,"context_line":" #. Test Execution"},{"line_number":40,"context_line":" #. tearDown"},{"line_number":41,"context_line":" #. doCleanups"},{"line_number":42,"context_line":" #. tearDownClass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"setupClass"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_ee24c260","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":14},"in_reply_to":"ba2be162_d2498a32","updated":"2017-03-06 14:38:17.000000000","message":"It definitely is, it\u0027s just not explicitly called. This is where addCleaUps are run...","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f74cf698fbe5629b584e9c05d2a15ec7e735e9fc","unresolved":false,"context_lines":[{"line_number":41,"context_line":" #. doCleanups"},{"line_number":42,"context_line":" #. tearDownClass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"setupClass"},{"line_number":45,"context_line":"----------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The setUpClass phase is the first phase executed by the test runner and is used"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_9228f234","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":10},"updated":"2017-03-04 02:32:37.000000000","message":"ditto: s/setupClass/setUpClass/","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"14a716c2aee230348d9e7f987f15a480e8ce7baf","unresolved":false,"context_lines":[{"line_number":41,"context_line":" #. doCleanups"},{"line_number":42,"context_line":" #. tearDownClass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"setupClass"},{"line_number":45,"context_line":"----------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The setUpClass phase is the first phase executed by the test runner and is used"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba2be162_aebc8adc","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":10},"in_reply_to":"ba2be162_9228f234","updated":"2017-03-06 14:38:17.000000000","message":"Done","commit_id":"617e17efaaed1e669b1ac85e2af437de2939158f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"f353b751e9923c0c75a54dd5dbace794ce529415","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":".. _TestCase: https://docs.python.org/3.6/library/unittest.html#unittest.TestCase"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In standard unittest the lifcycle of a TestCase can be described in the"},{"line_number":36,"context_line":"following phases:"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":" #. setUpClass"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_a4018d6c","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":33},"updated":"2017-03-29 15:04:59.000000000","message":"lifecycle","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a84236ef2d2d7a227b6a7c27107ac4b5b8e1fad7","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":".. _TestCase: https://docs.python.org/3.6/library/unittest.html#unittest.TestCase"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In standard unittest the lifcycle of a TestCase can be described in the"},{"line_number":36,"context_line":"following phases:"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":" #. setUpClass"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfeb2761_46bf1ffb","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":33},"in_reply_to":"ffe62b97_a4018d6c","updated":"2017-03-31 16:46:05.000000000","message":"Done","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"f353b751e9923c0c75a54dd5dbace794ce529415","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def skip_checks(self):"},{"line_number":73,"context_line":"        \"\"\"This section is used to evaluate config early and skip all test"},{"line_number":74,"context_line":"           methods based"},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        super(TestExampleCase, cls).skip_checks()"},{"line_number":77,"context_line":"        if not CONF.section.foo"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_846fa929","line":74,"range":{"start_line":74,"start_character":11,"end_line":74,"end_character":24},"updated":"2017-03-29 15:04:59.000000000","message":"based on ?","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a84236ef2d2d7a227b6a7c27107ac4b5b8e1fad7","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def skip_checks(self):"},{"line_number":73,"context_line":"        \"\"\"This section is used to evaluate config early and skip all test"},{"line_number":74,"context_line":"           methods based"},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        super(TestExampleCase, cls).skip_checks()"},{"line_number":77,"context_line":"        if not CONF.section.foo"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfeb2761_26bc1b04","line":74,"range":{"start_line":74,"start_character":11,"end_line":74,"end_character":24},"in_reply_to":"ffe62b97_846fa929","updated":"2017-03-31 16:46:05.000000000","message":"Done","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"f353b751e9923c0c75a54dd5dbace794ce529415","unresolved":false,"context_lines":[{"line_number":114,"context_line":"Allocating Credentials"},{"line_number":115,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud every test will need"},{"line_number":118,"context_line":"credentials to be able to make API requests agains the cloud. Since this is"},{"line_number":119,"context_line":"critical to operation and, when running in parallel, easy to make a mistake,"},{"line_number":120,"context_line":"the base TestCase class will automatically allocate a regular user for each"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffe62b97_04c159e5","line":117,"range":{"start_line":117,"start_character":52,"end_line":117,"end_character":57},"updated":"2017-03-29 15:04:59.000000000","message":"cloud,","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"b8f60949d075c1253e9d75d0848f4b2100f8afa6","unresolved":false,"context_lines":[{"line_number":114,"context_line":"Allocating Credentials"},{"line_number":115,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud every test will need"},{"line_number":118,"context_line":"credentials to be able to make API requests agains the cloud. Since this is"},{"line_number":119,"context_line":"critical to operation and, when running in parallel, easy to make a mistake,"},{"line_number":120,"context_line":"the base TestCase class will automatically allocate a regular user for each"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a30ddce_5c58a632","line":117,"range":{"start_line":117,"start_character":44,"end_line":117,"end_character":68},"updated":"2017-03-09 09:17:09.000000000","message":"it would be \"running cloud and every test\".","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a84236ef2d2d7a227b6a7c27107ac4b5b8e1fad7","unresolved":false,"context_lines":[{"line_number":114,"context_line":"Allocating Credentials"},{"line_number":115,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud every test will need"},{"line_number":118,"context_line":"credentials to be able to make API requests agains the cloud. Since this is"},{"line_number":119,"context_line":"critical to operation and, when running in parallel, easy to make a mistake,"},{"line_number":120,"context_line":"the base TestCase class will automatically allocate a regular user for each"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfeb2761_6647c31f","line":117,"range":{"start_line":117,"start_character":52,"end_line":117,"end_character":57},"in_reply_to":"ffe62b97_04c159e5","updated":"2017-03-31 16:46:05.000000000","message":"Done","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"b8f60949d075c1253e9d75d0848f4b2100f8afa6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud every test will need"},{"line_number":118,"context_line":"credentials to be able to make API requests agains the cloud. Since this is"},{"line_number":119,"context_line":"critical to operation and, when running in parallel, easy to make a mistake,"},{"line_number":120,"context_line":"the base TestCase class will automatically allocate a regular user for each"},{"line_number":121,"context_line":"TestCase during the setup_credentials() phase. During this process it will also"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a30ddce_1c754e97","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":50},"updated":"2017-03-09 09:17:09.000000000","message":"typo: it should be \"against\".","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a84236ef2d2d7a227b6a7c27107ac4b5b8e1fad7","unresolved":false,"context_lines":[{"line_number":115,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud every test will need"},{"line_number":118,"context_line":"credentials to be able to make API requests agains the cloud. Since this is"},{"line_number":119,"context_line":"critical to operation and, when running in parallel, easy to make a mistake,"},{"line_number":120,"context_line":"the base TestCase class will automatically allocate a regular user for each"},{"line_number":121,"context_line":"TestCase during the setup_credentials() phase. During this process it will also"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfeb2761_4654bfca","line":118,"range":{"start_line":118,"start_character":44,"end_line":118,"end_character":50},"in_reply_to":"9a30ddce_1c754e97","updated":"2017-03-31 16:46:05.000000000","message":"Done","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"b8f60949d075c1253e9d75d0848f4b2100f8afa6","unresolved":false,"context_lines":[{"line_number":121,"context_line":"TestCase during the setup_credentials() phase. During this process it will also"},{"line_number":122,"context_line":"initialize a client manager object using those credentials, which will be your"},{"line_number":123,"context_line":"entry point into interacting with the cloud. For more details on how credentials"},{"line_number":124,"context_line":"are allocated the :ref:`tempest_cred_provider_conf` section of the Tempest"},{"line_number":125,"context_line":"Configuration Guide Provides more details on the operation of this."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"However, there are some cases when you need more than a single set of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a30ddce_1cd1ce57","line":124,"range":{"start_line":124,"start_character":18,"end_line":124,"end_character":51},"updated":"2017-03-09 09:17:09.000000000","message":"There is no reference for \"tempest_cred_provider_conf\" in Tempest Configuration Guide. It would be \"test_credentials\" https://docs.openstack.org/developer/tempest/configuration.html#test-credentials. I think or am i missing something?","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a84236ef2d2d7a227b6a7c27107ac4b5b8e1fad7","unresolved":false,"context_lines":[{"line_number":121,"context_line":"TestCase during the setup_credentials() phase. During this process it will also"},{"line_number":122,"context_line":"initialize a client manager object using those credentials, which will be your"},{"line_number":123,"context_line":"entry point into interacting with the cloud. For more details on how credentials"},{"line_number":124,"context_line":"are allocated the :ref:`tempest_cred_provider_conf` section of the Tempest"},{"line_number":125,"context_line":"Configuration Guide Provides more details on the operation of this."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"However, there are some cases when you need more than a single set of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfeb2761_060597c2","line":124,"range":{"start_line":124,"start_character":18,"end_line":124,"end_character":51},"in_reply_to":"9a30ddce_1cd1ce57","updated":"2017-03-31 16:46:05.000000000","message":"Done","commit_id":"3777fa46aa64734983a2ef151e253b9e1de3cab2"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":6,"context_line":"This guide serves as a starting point for developers working on writing new"},{"line_number":7,"context_line":"Tempest tests. At a high level tests in Tempest are just tests that conform to"},{"line_number":8,"context_line":"the standard python `unit test`_ framework. But there are several aspects of"},{"line_number":9,"context_line":"that are unique to tempest and it\u0027s role about"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. _unit test: https://docs.python.org/3.6/library/unittest.html"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_1ae71fe7","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":46},"updated":"2017-04-01 03:23:28.000000000","message":"sorry I don\u0027t know what does this mean?","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b3b58a0b66f3ba32eeebd5d59cb1f7083150375e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"This guide serves as a starting point for developers working on writing new"},{"line_number":7,"context_line":"Tempest tests. At a high level tests in Tempest are just tests that conform to"},{"line_number":8,"context_line":"the standard python `unit test`_ framework. But there are several aspects of"},{"line_number":9,"context_line":"that are unique to tempest and it\u0027s role about"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. _unit test: https://docs.python.org/3.6/library/unittest.html"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_c792e54b","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":46},"in_reply_to":"dfeb2761_1ae71fe7","updated":"2017-04-03 08:52:36.000000000","message":"Yeah, seems like the sentence is not finished (I can\u0027t tell by the lack of the final . :p)","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":6,"context_line":"This guide serves as a starting point for developers working on writing new"},{"line_number":7,"context_line":"Tempest tests. At a high level tests in Tempest are just tests that conform to"},{"line_number":8,"context_line":"the standard python `unit test`_ framework. But there are several aspects of"},{"line_number":9,"context_line":"that are unique to tempest and it\u0027s role about"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. _unit test: https://docs.python.org/3.6/library/unittest.html"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_1513495e","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":46},"in_reply_to":"dfeb2761_c792e54b","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Adding a New TestCase"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The base unit of testing in Tempest is the `TestCase`_. (also called the test"},{"line_number":24,"context_line":"class) Each TestCase contains test methods which are the individual tests that"},{"line_number":25,"context_line":"will be executed by the test runner. But, the TestCase is the smallest self"},{"line_number":26,"context_line":"contained unit for tests from the tempest perspective. It\u0027s also the level at"},{"line_number":27,"context_line":"which tempest is parallel safe. In other words, multiple TestCases can be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_5a06c788","line":24,"range":{"start_line":23,"start_character":54,"end_line":24,"end_character":6},"updated":"2017-04-01 03:23:28.000000000","message":"(also called the test class).\ni.e., to put the dot at the end?","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Adding a New TestCase"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The base unit of testing in Tempest is the `TestCase`_. (also called the test"},{"line_number":24,"context_line":"class) Each TestCase contains test methods which are the individual tests that"},{"line_number":25,"context_line":"will be executed by the test runner. But, the TestCase is the smallest self"},{"line_number":26,"context_line":"contained unit for tests from the tempest perspective. It\u0027s also the level at"},{"line_number":27,"context_line":"which tempest is parallel safe. In other words, multiple TestCases can be"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_9a1ae67a","line":24,"range":{"start_line":23,"start_character":54,"end_line":24,"end_character":6},"in_reply_to":"dfeb2761_5a06c788","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":50,"context_line":"Tempest this is a very important step and will automatically do the necessary"},{"line_number":51,"context_line":"setup for interacting with the configured cloud."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"To accomplish this you do **not** define a setUpClass function instead there"},{"line_number":54,"context_line":"are a number of predefined phases to setUpClass that are used. The phases are:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":" * skip_checks"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_ba3b9336","line":53,"range":{"start_line":53,"start_character":54,"end_line":53,"end_character":62},"updated":"2017-04-01 03:23:28.000000000","message":"function,","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"Tempest this is a very important step and will automatically do the necessary"},{"line_number":51,"context_line":"setup for interacting with the configured cloud."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"To accomplish this you do **not** define a setUpClass function instead there"},{"line_number":54,"context_line":"are a number of predefined phases to setUpClass that are used. The phases are:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":" * skip_checks"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_5a145e4e","line":53,"range":{"start_line":53,"start_character":54,"end_line":53,"end_character":62},"in_reply_to":"dfeb2761_ba3b9336","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":58,"context_line":" * setup_clients"},{"line_number":59,"context_line":" * resource_setup"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"which is executed in that order. An example of what a TestCase which defines all"},{"line_number":62,"context_line":"of these would be::"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  from tempest import config"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_5a7927fa","line":61,"range":{"start_line":61,"start_character":33,"end_line":61,"end_character":62},"updated":"2017-04-01 03:23:28.000000000","message":"An example of a TestCase","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":58,"context_line":" * setup_clients"},{"line_number":59,"context_line":" * resource_setup"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"which is executed in that order. An example of what a TestCase which defines all"},{"line_number":62,"context_line":"of these would be::"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  from tempest import config"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_1a0ed63a","line":61,"range":{"start_line":61,"start_character":33,"end_line":61,"end_character":62},"in_reply_to":"dfeb2761_5a7927fa","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  class TestExampleCase(test.BaseTestCase):"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def skip_checks(self):"},{"line_number":73,"context_line":"        \"\"\"This section is used to evaluate config early and skip all test"},{"line_number":74,"context_line":"           methods based on these checks"},{"line_number":75,"context_line":"        \"\"\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_5a624740","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":26},"updated":"2017-04-01 03:23:28.000000000","message":"skip_checks should be a class method","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"  class TestExampleCase(test.BaseTestCase):"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def skip_checks(self):"},{"line_number":73,"context_line":"        \"\"\"This section is used to evaluate config early and skip all test"},{"line_number":74,"context_line":"           methods based on these checks"},{"line_number":75,"context_line":"        \"\"\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_ba024a0a","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":26},"in_reply_to":"dfeb2761_5a624740","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":108,"context_line":"           be run during tearDownClass())"},{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":"        super(TestExampleCase, cls).resource_setup()"},{"line_number":111,"context_line":"        cls.shared_server \u003d cls.server_client.create_server(...)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Allocating Credentials"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_3acc2334","line":111,"range":{"start_line":111,"start_character":32,"end_line":111,"end_character":45},"updated":"2017-04-01 03:23:28.000000000","message":"servers_client \n(to be in accordance with the previous definition)","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":108,"context_line":"           be run during tearDownClass())"},{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":"        super(TestExampleCase, cls).resource_setup()"},{"line_number":111,"context_line":"        cls.shared_server \u003d cls.server_client.create_server(...)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Allocating Credentials"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_7502950b","line":111,"range":{"start_line":111,"start_character":32,"end_line":111,"end_character":45},"in_reply_to":"dfeb2761_3acc2334","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        cls.shared_server \u003d cls.server_client.create_server(...)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Allocating Credentials"},{"line_number":115,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud, every test will need"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_da5f773f","line":114,"range":{"start_line":114,"start_character":0,"end_line":114,"end_character":22},"updated":"2017-04-01 03:23:28.000000000","message":"In this section, predefined credentials are not mentioned at all, do we need to mention it?","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        cls.shared_server \u003d cls.server_client.create_server(...)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Allocating Credentials"},{"line_number":115,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud, every test will need"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_b5dffdd4","line":114,"range":{"start_line":114,"start_character":0,"end_line":114,"end_character":22},"in_reply_to":"dfeb2761_da5f773f","updated":"2017-04-03 15:54:13.000000000","message":"The test writer facing api is the same between dynamic credentials and pre-provisioned. The credentials are either allocated from keystone or the user provided yaml file. I didn\u0027t think it was worth explaining that distinction here, since this just explains how to make sure you get the sets of credentials you need. (I put a link to the config doc which explains that difference though)","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud, every test will need"},{"line_number":118,"context_line":"credentials to be able to make API requests against the cloud. Since this is"},{"line_number":119,"context_line":"critical to operation and, when running in parallel, easy to make a mistake,"},{"line_number":120,"context_line":"the base TestCase class will automatically allocate a regular user for each"},{"line_number":121,"context_line":"TestCase during the setup_credentials() phase. During this process it will also"},{"line_number":122,"context_line":"initialize a client manager object using those credentials, which will be your"},{"line_number":123,"context_line":"entry point into interacting with the cloud. For more details on how credentials"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_7a8f4bcc","line":120,"range":{"start_line":120,"start_character":24,"end_line":120,"end_character":28},"updated":"2017-04-01 03:23:28.000000000","message":"can\n(if we use \"will\", it seems we will always create a new user, but there\u0027s still predefined credentials scenario)","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":117,"context_line":"Since Tempest tests are all about testing a running cloud, every test will need"},{"line_number":118,"context_line":"credentials to be able to make API requests against the cloud. Since this is"},{"line_number":119,"context_line":"critical to operation and, when running in parallel, easy to make a mistake,"},{"line_number":120,"context_line":"the base TestCase class will automatically allocate a regular user for each"},{"line_number":121,"context_line":"TestCase during the setup_credentials() phase. During this process it will also"},{"line_number":122,"context_line":"initialize a client manager object using those credentials, which will be your"},{"line_number":123,"context_line":"entry point into interacting with the cloud. For more details on how credentials"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_9584f95f","line":120,"range":{"start_line":120,"start_character":24,"end_line":120,"end_character":28},"in_reply_to":"dfeb2761_7a8f4bcc","updated":"2017-04-03 15:54:13.000000000","message":"The base TestCase always allocates a regular user, it\u0027s just not always allocated from keystone directly.","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":122,"context_line":"initialize a client manager object using those credentials, which will be your"},{"line_number":123,"context_line":"entry point into interacting with the cloud. For more details on how credentials"},{"line_number":124,"context_line":"are allocated the :ref:`tempest_cred_provider_conf` section of the Tempest"},{"line_number":125,"context_line":"Configuration Guide Provides more details on the operation of this."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"However, there are some cases when you need more than a single set of"},{"line_number":128,"context_line":"credentials, or credentials with a more specialized set of roles. To accomplish"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_da03f741","line":125,"range":{"start_line":125,"start_character":20,"end_line":125,"end_character":28},"updated":"2017-04-01 03:23:28.000000000","message":"provides","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":122,"context_line":"initialize a client manager object using those credentials, which will be your"},{"line_number":123,"context_line":"entry point into interacting with the cloud. For more details on how credentials"},{"line_number":124,"context_line":"are allocated the :ref:`tempest_cred_provider_conf` section of the Tempest"},{"line_number":125,"context_line":"Configuration Guide Provides more details on the operation of this."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"However, there are some cases when you need more than a single set of"},{"line_number":128,"context_line":"credentials, or credentials with a more specialized set of roles. To accomplish"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_9563d91a","line":125,"range":{"start_line":125,"start_character":20,"end_line":125,"end_character":28},"in_reply_to":"dfeb2761_da03f741","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":124,"context_line":"are allocated the :ref:`tempest_cred_provider_conf` section of the Tempest"},{"line_number":125,"context_line":"Configuration Guide Provides more details on the operation of this."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"However, there are some cases when you need more than a single set of"},{"line_number":128,"context_line":"credentials, or credentials with a more specialized set of roles. To accomplish"},{"line_number":129,"context_line":"this you have to set a class variable ``credentials`` on the TestCase directly."},{"line_number":130,"context_line":"For example::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_fabc7b6a","line":127,"range":{"start_line":127,"start_character":0,"end_line":127,"end_character":7},"updated":"2017-04-01 03:23:28.000000000","message":"Besides","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":124,"context_line":"are allocated the :ref:`tempest_cred_provider_conf` section of the Tempest"},{"line_number":125,"context_line":"Configuration Guide Provides more details on the operation of this."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"However, there are some cases when you need more than a single set of"},{"line_number":128,"context_line":"credentials, or credentials with a more specialized set of roles. To accomplish"},{"line_number":129,"context_line":"this you have to set a class variable ``credentials`` on the TestCase directly."},{"line_number":130,"context_line":"For example::"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_55d1d1cc","line":127,"range":{"start_line":127,"start_character":0,"end_line":127,"end_character":7},"in_reply_to":"dfeb2761_fabc7b6a","updated":"2017-04-03 15:54:13.000000000","message":"I\u0027m just going to drop \u0027However\u0027","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"There is no limit to how many credentials you can allocate in this manner,"},{"line_number":170,"context_line":"however in almost every case you should **not** need more than 2 sets of"},{"line_number":171,"context_line":"credentials per test case."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"To figure out the mapping of manager objects set on the TestCase and the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_fa711be2","line":170,"range":{"start_line":170,"start_character":63,"end_line":170,"end_character":64},"updated":"2017-04-01 03:23:28.000000000","message":"3 ?\n(Admin, primary, alt)","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"There is no limit to how many credentials you can allocate in this manner,"},{"line_number":170,"context_line":"however in almost every case you should **not** need more than 2 sets of"},{"line_number":171,"context_line":"credentials per test case."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"To figure out the mapping of manager objects set on the TestCase and the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_15cc6968","line":170,"range":{"start_line":170,"start_character":63,"end_line":170,"end_character":64},"in_reply_to":"dfeb2761_fa711be2","updated":"2017-04-03 15:54:13.000000000","message":"I meant regular user creds, but I can change this to 3. Although how many tests are there with admin, primary, and alt?","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":186,"context_line":"+-------------------+---------------------+"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"By default cls.os is available since it is allocated in the base tempest test"},{"line_number":189,"context_line":"class. (located in tempest/test.py) If your TestCase inherits from a different"},{"line_number":190,"context_line":"parent class be sure to check if that class overrides allocated credentials"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dealing with Network Allocation"},{"line_number":193,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_5a4c879d","line":190,"range":{"start_line":189,"start_character":53,"end_line":190,"end_character":12},"updated":"2017-04-01 03:23:28.000000000","message":"(will this happen?)","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b3b58a0b66f3ba32eeebd5d59cb1f7083150375e","unresolved":false,"context_lines":[{"line_number":186,"context_line":"+-------------------+---------------------+"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"By default cls.os is available since it is allocated in the base tempest test"},{"line_number":189,"context_line":"class. (located in tempest/test.py) If your TestCase inherits from a different"},{"line_number":190,"context_line":"parent class be sure to check if that class overrides allocated credentials"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dealing with Network Allocation"},{"line_number":193,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_875f3d71","line":190,"range":{"start_line":189,"start_character":53,"end_line":190,"end_character":12},"in_reply_to":"dfeb2761_5a4c879d","updated":"2017-04-03 08:52:36.000000000","message":"Yeah, I wouldn\u0027t mention this either. \n\nI\u0027d remove the \u0027If your TestCase inherits from a different\nparent class be sure to check if that class overrides allocated credentials\u0027 part\u0027. It\u0027s too advanced/will not happen.","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":186,"context_line":"+-------------------+---------------------+"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"By default cls.os is available since it is allocated in the base tempest test"},{"line_number":189,"context_line":"class. (located in tempest/test.py) If your TestCase inherits from a different"},{"line_number":190,"context_line":"parent class be sure to check if that class overrides allocated credentials"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dealing with Network Allocation"},{"line_number":193,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_55dd5140","line":190,"range":{"start_line":189,"start_character":53,"end_line":190,"end_character":12},"in_reply_to":"dfeb2761_875f3d71","updated":"2017-04-03 15:54:13.000000000","message":"I\u0027ll try to reword this, you\u0027re both misinterpreting my intent here. I meant to say something like BaseAdmin will have admin set. (The direct parent of a test class is not BaseTestCase) It\u0027s very common for the direct parent class to override the credential allocation.","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":189,"context_line":"class. (located in tempest/test.py) If your TestCase inherits from a different"},{"line_number":190,"context_line":"parent class be sure to check if that class overrides allocated credentials"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dealing with Network Allocation"},{"line_number":193,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"When neutron is enabled and a testing requires networking this isn\u0027t normally"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_c50f982c","line":192,"range":{"start_line":192,"start_character":0,"end_line":192,"end_character":31},"updated":"2017-04-01 03:23:28.000000000","message":"CONF.auth.create_isolated_networks and CONF.network.shared_physical_network will affect the behaviour of creating\n    network resources, do we need to mention it?","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":189,"context_line":"class. (located in tempest/test.py) If your TestCase inherits from a different"},{"line_number":190,"context_line":"parent class be sure to check if that class overrides allocated credentials"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dealing with Network Allocation"},{"line_number":193,"context_line":"\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027\u0027"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"When neutron is enabled and a testing requires networking this isn\u0027t normally"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_d54f21bb","line":192,"range":{"start_line":192,"start_character":0,"end_line":192,"end_character":31},"in_reply_to":"dfeb2761_c50f982c","updated":"2017-04-03 15:54:13.000000000","message":"I\u0027m not sure it\u0027s worth adding that here. That configuration doesn\u0027t change how you have to request the resources from a test writing standpoint. The resources aren\u0027t created in those configuration cases, but that\u0027s because you can\u0027t actually make the resources when either of those are set. It shouldn\u0027t affect the test operation normally. (unless you need to add a skip for it)","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"fb2c7f91e58a58770a8aa83b843351d684932120","unresolved":false,"context_lines":[{"line_number":196,"context_line":"automatically setup when a tenant is created. Since tempest needs isolated"},{"line_number":197,"context_line":"tenants to function properly it also needs to handle network allocation. By"},{"line_number":198,"context_line":"default the base test class will allocate a network, subnet, and router"},{"line_number":199,"context_line":"automatically. (this depends on the configured credential provider for more"},{"line_number":200,"context_line":"details see: :ref:`tempest_conf_network_allocation`) However, there are"},{"line_number":201,"context_line":"situations where you do no need all of these resources allocated. (or your"},{"line_number":202,"context_line":"TestCase inherits from a class that overrides the default in tempest/test.py)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_fa3fdbd3","line":199,"range":{"start_line":199,"start_character":58,"end_line":199,"end_character":66},"updated":"2017-04-01 03:23:28.000000000","message":"provider,","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ec15a352c5e126888dc7e55ebaf048931a0056a1","unresolved":false,"context_lines":[{"line_number":196,"context_line":"automatically setup when a tenant is created. Since tempest needs isolated"},{"line_number":197,"context_line":"tenants to function properly it also needs to handle network allocation. By"},{"line_number":198,"context_line":"default the base test class will allocate a network, subnet, and router"},{"line_number":199,"context_line":"automatically. (this depends on the configured credential provider for more"},{"line_number":200,"context_line":"details see: :ref:`tempest_conf_network_allocation`) However, there are"},{"line_number":201,"context_line":"situations where you do no need all of these resources allocated. (or your"},{"line_number":202,"context_line":"TestCase inherits from a class that overrides the default in tempest/test.py)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dfeb2761_5528b132","line":199,"range":{"start_line":199,"start_character":58,"end_line":199,"end_character":66},"in_reply_to":"dfeb2761_fa3fdbd3","updated":"2017-04-03 15:54:13.000000000","message":"Done","commit_id":"dccf94d0ce9163280ce9a9fb42e7e65b9a46588c"}]}
