)]}'
{"specs/test-uuids.rst":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":4,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":".."},{"line_number":7,"context_line":"  This template should be in ReSTructured text. The filename in the git"},{"line_number":8,"context_line":"  repository should match the launchpad URL, for example a URL of"},{"line_number":9,"context_line":"  https://blueprints.launchpad.net/tempest/+spec/awesome-thing should be named"},{"line_number":10,"context_line":"  awesome-thing.rst .  Please do not delete any of the sections in this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_4f98266a","line":7,"updated":"2014-12-22 23:56:59.000000000","message":"You don\u0027t need this block","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":13,"context_line":"  To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":" Test UUIDs "},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Include the URL of your launchpad blueprint:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_8fa5aea3","line":16,"updated":"2014-12-22 23:56:59.000000000","message":"whitespace","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Include the URL of your launchpad blueprint:"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"https://blueprints.launchpad.net/tempest/+spec/example"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This spec proposes the addition of Universally Unique Identifiers (UUIDs)"},{"line_number":24,"context_line":"to tests to be used as a stable test identifier."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_afa0aa90","line":21,"updated":"2014-12-22 23:56:59.000000000","message":"This needs to be a real bp","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Currently the only identification for tests is the name associated with the"},{"line_number":30,"context_line":"test. Tests may be moved or renamed during refactoring, and some"},{"line_number":31,"context_line":"non-integration tests wil move out of Tempest and into project-specific"},{"line_number":32,"context_line":"tests. This makes names an unstable identifier. This spec proposes"},{"line_number":33,"context_line":"addition of a UUID to each test as a means of stable test identification."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_2f959a32","line":31,"updated":"2014-12-22 23:56:59.000000000","message":"s/wil/will/","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Each test will have a UUID attached to it, identified both in the test "},{"line_number":39,"context_line":"docstring and as a decorator. The docstring will be visible in automated"},{"line_number":40,"context_line":"document generation, and the decorator will make UUIDs visible"},{"line_number":41,"context_line":"programatically."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_4a6c9408","line":38,"updated":"2014-12-22 23:56:59.000000000","message":"white space","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Each test will have a UUID attached to it, identified both in the test "},{"line_number":39,"context_line":"docstring and as a decorator. The docstring will be visible in automated"},{"line_number":40,"context_line":"document generation, and the decorator will make UUIDs visible"},{"line_number":41,"context_line":"programatically."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_2a502831","line":39,"updated":"2014-12-22 23:56:59.000000000","message":"So the decorator is just there to set it as a testtools attr and append it to the docstring. We\u0027re just using it as a shorthand so we don\u0027t have to manually wrap each test method.","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Each test will have a UUID attached to it, identified both in the test "},{"line_number":39,"context_line":"docstring and as a decorator. The docstring will be visible in automated"},{"line_number":40,"context_line":"document generation, and the decorator will make UUIDs visible"},{"line_number":41,"context_line":"programatically."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_8a603c02","line":40,"updated":"2014-12-22 23:56:59.000000000","message":"this is the testtools attr being added to the subunit stream the decorator doesn\u0027t do this (besides calling the testtools method)","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    time to tag existing tests. An infra gate will be added to ensure"},{"line_number":56,"context_line":"    consistency between the docstring and decorator values. An automated"},{"line_number":57,"context_line":"    tool will do initial bulk test tagging."},{"line_number":58,"context_line":"    A hacking tool with check for UUID uniqueness."},{"line_number":59,"context_line":"  - In phase 2 UUIDs will be mandatory. All tests will be required as part"},{"line_number":60,"context_line":"    of the gate to have a UUID associated with it."},{"line_number":61,"context_line":"- The UUID will be generated using the python uuid.uuid4 function."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_45dc8546","line":58,"updated":"2014-12-22 23:56:59.000000000","message":"So hacking here is unnecessary, since I think this is impossible to do as a hacking check in: http://git.openstack.org/cgit/openstack/tempest/tree/tempest/hacking/checks.py . The uniqueness check tool will just be called as part of the pep8 tox job definition (like tools/check_uptodate.sh is: http://git.openstack.org/cgit/openstack/tempest/tree/tox.ini#n111 )\n\nWe will need a new hacking check to ensure that the decorator is set for all test methods though.","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    of the gate to have a UUID associated with it."},{"line_number":61,"context_line":"- The UUID will be generated using the python uuid.uuid4 function."},{"line_number":62,"context_line":"  - uuid.uuid1 is also an option, especially if timedate information is"},{"line_number":63,"context_line":"    available "},{"line_number":64,"context_line":"- The UUID will be idenfied in the docstring by the format:"},{"line_number":65,"context_line":"  \u0027UUID: 12345678-1234-5678-1234-567812345678\u0027"},{"line_number":66,"context_line":"- The UUID will be identified in the decorator by:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_451f255b","line":63,"updated":"2014-12-22 23:56:59.000000000","message":"Whitespace\n\nI\u0027m not sure why uuid1 would ever be used for this honestly. uuid4 is \"random\" which is all we\u0027re looking for. There isn\u0027t any reason to seed it with the host-id or a timestamp: https://docs.python.org/2/library/uuid.html#uuid.uuid1\n\nWe just want non-overlapping ids and thats what is normally used to do that. There\u0027s a reason all the projects use it for their primary keys on resources in the db.","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":66,"context_line":"- The UUID will be identified in the decorator by:"},{"line_number":67,"context_line":"  \u0027@test.uuid(\u002712345678-1234-5678-1234-567812345678\u0027)\u0027"},{"line_number":68,"context_line":"  then in the decorator code set the attr be UUID\u003darg and add it to the"},{"line_number":69,"context_line":"  docstring for the function"},{"line_number":70,"context_line":"- UUIDs will need to be changed if the functionality of a test changes"},{"line_number":71,"context_line":"  significantly."},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_45a48507","line":69,"updated":"2014-12-22 23:56:59.000000000","message":"So this is partially redundant with the above bullet, I think just saying the decorator format will be::\n\n  @test.uuid(\u002712345678-1234-5678-1234-567812345678\u0027)\n\nwhich will append::\n\n  UUID: 12345678-1234-5678-1234-567812345678\n\nto the docstring and add the testtools attr::\n\n  UUID\u003d12345678-1234-5678-1234-567812345678","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  then in the decorator code set the attr be UUID\u003darg and add it to the"},{"line_number":69,"context_line":"  docstring for the function"},{"line_number":70,"context_line":"- UUIDs will need to be changed if the functionality of a test changes"},{"line_number":71,"context_line":"  significantly."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This is a massive change that will cause a significant amount of development"},{"line_number":74,"context_line":"disruption. To mitigate this we will take a \u0027big bang\u0027 approach:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_c58eb578","line":71,"updated":"2014-12-22 23:56:59.000000000","message":"We can just add this to HACKING.rst, and REVIEWING.rst as a note about uuids","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":103,"context_line":"Work Items"},{"line_number":104,"context_line":"----------"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"- Define docstring and decorator format."},{"line_number":107,"context_line":"- Write tempest-lib code to generate UUIDS according to format."},{"line_number":108,"context_line":"- Document how to apply tests, and when UUIDs need to change."},{"line_number":109,"context_line":"- Implement and deploy phase 1 gate tests."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_a5c1a981","line":106,"updated":"2014-12-22 23:56:59.000000000","message":"I think you\u0027ve already done that here, just using uuid4 is fine.","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":104,"context_line":"----------"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"- Define docstring and decorator format."},{"line_number":107,"context_line":"- Write tempest-lib code to generate UUIDS according to format."},{"line_number":108,"context_line":"- Document how to apply tests, and when UUIDs need to change."},{"line_number":109,"context_line":"- Implement and deploy phase 1 gate tests."},{"line_number":110,"context_line":"- Automate test tagging."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_c55315e0","line":107,"updated":"2014-12-22 23:56:59.000000000","message":"I\u0027m not sure what goes in tempest lib. I mean we can put the decorator in tempest-lib that shouldn\u0027t cause any issues, (and is probably a good long term place for it) As for the tool to add them to the code, I think just tempest/tools is fine to start. If we find that more people want to automate adding the decorators to tests we can investigate moving it to the lib. But I imagine to start it\u0027ll be very tempest-specific.","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":106,"context_line":"- Define docstring and decorator format."},{"line_number":107,"context_line":"- Write tempest-lib code to generate UUIDS according to format."},{"line_number":108,"context_line":"- Document how to apply tests, and when UUIDs need to change."},{"line_number":109,"context_line":"- Implement and deploy phase 1 gate tests."},{"line_number":110,"context_line":"- Automate test tagging."},{"line_number":111,"context_line":"- Manually tag tests where automation fails."},{"line_number":112,"context_line":"- Implement and deploy phase 2 gate tests."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_e54e5137","line":109,"updated":"2014-12-22 23:56:59.000000000","message":"What gate tests are part of phase 1? We either start enforcing the","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"ffdfb5989b1ba4f8547e63b6dc7740b676dc50cc","unresolved":false,"context_lines":[{"line_number":107,"context_line":"- Write tempest-lib code to generate UUIDS according to format."},{"line_number":108,"context_line":"- Document how to apply tests, and when UUIDs need to change."},{"line_number":109,"context_line":"- Implement and deploy phase 1 gate tests."},{"line_number":110,"context_line":"- Automate test tagging."},{"line_number":111,"context_line":"- Manually tag tests where automation fails."},{"line_number":112,"context_line":"- Implement and deploy phase 2 gate tests."},{"line_number":113,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_450e45e6","line":110,"updated":"2014-12-22 23:56:59.000000000","message":"I always envisioned this as more like how we handle the sample config generation. We have a hacking check which fails and says: \"test X doesn\u0027t have UUID decorator set please run `this command` to populate it.\" (or uuid for test x is the same as for test y)\n\nI think that\u0027s all we need to do for this. Which is what I understood as your big bang section in implementation. So I\u0027m a little confused by what this automation section is about.","commit_id":"3f826c1ba686d87be037a015ee87f8d90432ea8a"}]}
