)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"629a09f0662407e677dbc1b0ee1a3fae5b72a89d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"less-used code paths often just don\u0027t work.  This spec proposes"},{"line_number":12,"context_line":"some steps that can be taken to improve the unit testing situation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6a9c3e5b4a34b0b1ba88598d1597e6940c11bcc1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ae5cdf2_a136f600","line":14,"updated":"2014-06-13 17:53:00.000000000","message":"We\u0027ve been following nova\u0027s model of putting a Partial-Blueprint reference in the commits.","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"8814d745029f7a24c6507e15c4e4aa40f0b9417a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"less-used code paths often just don\u0027t work.  This spec proposes"},{"line_number":12,"context_line":"some steps that can be taken to improve the unit testing situation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6a9c3e5b4a34b0b1ba88598d1597e6940c11bcc1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ae5cdf2_84366301","line":14,"in_reply_to":"1ae5cdf2_a136f600","updated":"2014-06-13 21:10:04.000000000","message":"Done","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"}],"specs/juno/unit-testing.rst":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1be6543fb51ec5cb21d11bacffc95f9354664b9c","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"- For changes not covered by CI reviewers have to manually test them in a"},{"line_number":30,"context_line":"  local environment, which is tedious and error-prone."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"- Major refactorings frequently break less commonly used interfaces to tools"},{"line_number":33,"context_line":"  because those interfaces are not tested."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_43bb03e5","line":31,"updated":"2014-05-29 04:29:40.000000000","message":"Or they don\u0027t test them at all.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b9282d0baeb65548f61ab5a04a27a1956667c986","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"- For changes not covered by CI reviewers have to manually test them in a"},{"line_number":30,"context_line":"  local environment, which is tedious and error-prone."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"- Major refactorings frequently break less commonly used interfaces to tools"},{"line_number":33,"context_line":"  because those interfaces are not tested."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_9950e6d5","line":31,"in_reply_to":"3ae8d1ca_43bb03e5","updated":"2014-06-03 20:43:24.000000000","message":"Indeed :-(","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1be6543fb51ec5cb21d11bacffc95f9354664b9c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"to the tripleo-image-elements project."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The bash8 project also provides some general style checks that would be"},{"line_number":58,"context_line":"useful in TripleO, so we should begin making use of it as well."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_c3ce3383","line":58,"updated":"2014-05-29 04:29:40.000000000","message":"Needless to say, we may find its checks don\u0027t fit - and we should provide feedback if thats the case.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b9282d0baeb65548f61ab5a04a27a1956667c986","unresolved":false,"context_lines":[{"line_number":55,"context_line":"to the tripleo-image-elements project."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The bash8 project also provides some general style checks that would be"},{"line_number":58,"context_line":"useful in TripleO, so we should begin making use of it as well."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_c8eb7e11","line":58,"in_reply_to":"3ae8d1ca_c3ce3383","updated":"2014-06-03 20:43:24.000000000","message":"Yes, and we should try to contribute back upstream any additional changes we want.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1be6543fb51ec5cb21d11bacffc95f9354664b9c","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Many scripts in elements assume they will be running as root.  We obviously"},{"line_number":75,"context_line":"don\u0027t want to do that in unit tests, so we need a way to sandbox those scripts"},{"line_number":76,"context_line":"to allow them to run but not affect the test system\u0027s root filesystem."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Other End User Impact"},{"line_number":79,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_a3af6793","line":76,"updated":"2014-05-29 04:29:40.000000000","message":"This should be included in the proposal, or explictly opted out of. DIB runs (most) everything in a chroot, so I\"m not at all sure this is new, nor a concern.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b9282d0baeb65548f61ab5a04a27a1956667c986","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Many scripts in elements assume they will be running as root.  We obviously"},{"line_number":75,"context_line":"don\u0027t want to do that in unit tests, so we need a way to sandbox those scripts"},{"line_number":76,"context_line":"to allow them to run but not affect the test system\u0027s root filesystem."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Other End User Impact"},{"line_number":79,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_19f776f6","line":76,"in_reply_to":"3ae8d1ca_a3af6793","updated":"2014-06-03 20:43:24.000000000","message":"I\u0027ve added a section to Alternatives to cover sandboxing.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1be6543fb51ec5cb21d11bacffc95f9354664b9c","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Adding more tests will increase the amount of time Jenkins gate jobs take."},{"line_number":87,"context_line":"This should have minimal real impact though, because unit tests should run"},{"line_number":88,"context_line":"in significantly less time than the integration tests."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Other Deployer Impact"},{"line_number":91,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_239b5773","line":88,"updated":"2014-05-29 04:29:40.000000000","message":"I think its worth explictly add parallelisation as a goal (e.g. via testr) from the get-go.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b9282d0baeb65548f61ab5a04a27a1956667c986","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Adding more tests will increase the amount of time Jenkins gate jobs take."},{"line_number":87,"context_line":"This should have minimal real impact though, because unit tests should run"},{"line_number":88,"context_line":"in significantly less time than the integration tests."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Other Deployer Impact"},{"line_number":91,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_e8511a37","line":88,"in_reply_to":"3ae8d1ca_239b5773","updated":"2014-06-03 20:43:24.000000000","message":"Added as a specific goal under the proposed change.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1be6543fb51ec5cb21d11bacffc95f9354664b9c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Developer Impact"},{"line_number":96,"context_line":"----------------"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Developers will need to implement unit tests for their code changes."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_43894325","line":98,"updated":"2014-05-29 04:29:40.000000000","message":"They\u0027ll also need to learn about the framework we end up with, which suggests merit in using either a) a openstack wide one or b) an industry wide one thats shell specific.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b9282d0baeb65548f61ab5a04a27a1956667c986","unresolved":false,"context_lines":[{"line_number":95,"context_line":"Developer Impact"},{"line_number":96,"context_line":"----------------"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Developers will need to implement unit tests for their code changes."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_a81552e6","line":98,"in_reply_to":"3ae8d1ca_43894325","updated":"2014-06-03 20:43:24.000000000","message":"Added notes about that both here and in the proposed change above.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1be6543fb51ec5cb21d11bacffc95f9354664b9c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"* Gate tripleo-image-elements on dib-lint, which will require fixing any"},{"line_number":120,"context_line":"  lint failures currently in tripleo-image-elements."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Enable bash8 in the projects with a lot of bash scripts."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Dependencies"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_63939f4f","line":122,"updated":"2014-05-29 04:29:40.000000000","message":"Please add gating incubator on a similar test facility (e.g. I want devtest --build-only to be gate tested).","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b9282d0baeb65548f61ab5a04a27a1956667c986","unresolved":false,"context_lines":[{"line_number":119,"context_line":"* Gate tripleo-image-elements on dib-lint, which will require fixing any"},{"line_number":120,"context_line":"  lint failures currently in tripleo-image-elements."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Enable bash8 in the projects with a lot of bash scripts."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Dependencies"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_c891be48","line":122,"in_reply_to":"3ae8d1ca_63939f4f","updated":"2014-06-03 20:43:24.000000000","message":"Done","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"1be6543fb51ec5cb21d11bacffc95f9354664b9c","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* I have done some initial experimentation with using fakeroot/fakechroot to"},{"line_number":130,"context_line":"  wrap scripts that expect to run as root.  If I can get them to play nicely"},{"line_number":131,"context_line":"  with tox I plan to use them as well."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Testing"},{"line_number":134,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ae8d1ca_03ae5b85","line":131,"updated":"2014-05-29 04:29:40.000000000","message":"I\u0027d *really* encourage using real chroots; there is more overhead (but we can be smart about that with some thought) but you get actual isolation [not against malignant code, but accidental code].","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b9282d0baeb65548f61ab5a04a27a1956667c986","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* I have done some initial experimentation with using fakeroot/fakechroot to"},{"line_number":130,"context_line":"  wrap scripts that expect to run as root.  If I can get them to play nicely"},{"line_number":131,"context_line":"  with tox I plan to use them as well."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Testing"},{"line_number":134,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ae5cdf2_a8e0f296","line":131,"in_reply_to":"3ae8d1ca_03ae5b85","updated":"2014-06-03 20:43:24.000000000","message":"My concern was that real chroots would require root access to the host system just to run unit tests, which is a little scary if you\u0027re a new contributor who doesn\u0027t know how they work.\n\nI\u0027ll move this to the alternatives section to make it clear that I\u0027m open to other options though.","commit_id":"7de9b4bcefc4265974c8728155b0f3e139204a17"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"629a09f0662407e677dbc1b0ee1a3fae5b72a89d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"I would like to build out a unit testing framework that simplifies the"},{"line_number":43,"context_line":"process of unit testing in TripleO.  Once that is done, we should start"},{"line_number":44,"context_line":"requiring unit tests for new and changed features like the other OpenStack"},{"line_number":45,"context_line":"projects do.  At that point we can also begin adding test coverage for"},{"line_number":46,"context_line":"existing code."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_5cb27549","line":43,"updated":"2014-06-13 17:53:00.000000000","message":"Can you be more specific about which TripleO repositories? I can see how something like os-cloud-config would fit in nicely with Python testing and libraries, but I\u0027m curious if you\u0027re also thinking about something like running Heat validate calls against the templates repository.","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"8814d745029f7a24c6507e15c4e4aa40f0b9417a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"I would like to build out a unit testing framework that simplifies the"},{"line_number":43,"context_line":"process of unit testing in TripleO.  Once that is done, we should start"},{"line_number":44,"context_line":"requiring unit tests for new and changed features like the other OpenStack"},{"line_number":45,"context_line":"projects do.  At that point we can also begin adding test coverage for"},{"line_number":46,"context_line":"existing code."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_44429bab","line":43,"in_reply_to":"1ae5cdf2_5cb27549","updated":"2014-06-13 21:10:04.000000000","message":"I\u0027d like to see _something_ for every repo.  I\u0027m still not super familiar with heat templates, but validating ours as part of a test job sounds like a fantastic idea. :-)\n\nI\u0027ll add a work item below.","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"629a09f0662407e677dbc1b0ee1a3fae5b72a89d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"Another option would be to use real chroots.  This would provide isolation"},{"line_number":91,"context_line":"and is probably more common than fakeroots.  The drawback would be that"},{"line_number":92,"context_line":"chrooting requires root access on the host machine, so running the unit tests"},{"line_number":93,"context_line":"would as well."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Security Impact"},{"line_number":96,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_5ce0b525","line":93,"updated":"2014-06-13 17:53:00.000000000","message":"I think this disqualifies it as an option. As far as I\u0027m aware, nothing else in OpenStack requires root like that and I don\u0027t think it would be too favorably accepted. In my experience, most Python developers get really grumpy when you tell them they need to do anything with root.","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"8814d745029f7a24c6507e15c4e4aa40f0b9417a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"Another option would be to use real chroots.  This would provide isolation"},{"line_number":91,"context_line":"and is probably more common than fakeroots.  The drawback would be that"},{"line_number":92,"context_line":"chrooting requires root access on the host machine, so running the unit tests"},{"line_number":93,"context_line":"would as well."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Security Impact"},{"line_number":96,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_b39ac75f","line":93,"in_reply_to":"1ae5cdf2_5ce0b525","updated":"2014-06-13 21:10:04.000000000","message":"That was my thought as well, but it was suggested on a previous version so I included it here.","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"629a09f0662407e677dbc1b0ee1a3fae5b72a89d","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* Add unit-testing to tripleo-incubator to enable verification of things"},{"line_number":150,"context_line":"  like ``devtest.sh --build-only``."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Dependencies"},{"line_number":153,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_7c39f1a2","line":151,"updated":"2014-06-13 17:53:00.000000000","message":"Can you add a work item for the documentation on how to write tests on the framework? It doesn\u0027t sound like it will be as simple to pick up as if stepping into a normal Python project.\n\n(Edit: I see you mention it later as documentation impact, so it\u0027s your call if you want to have it as an explicit work item or simply leave it there.)","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"8814d745029f7a24c6507e15c4e4aa40f0b9417a","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* Add unit-testing to tripleo-incubator to enable verification of things"},{"line_number":150,"context_line":"  like ``devtest.sh --build-only``."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Dependencies"},{"line_number":153,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_045b3354","line":151,"in_reply_to":"1ae5cdf2_7c39f1a2","updated":"2014-06-13 21:10:04.000000000","message":"I\u0027ll make documentation an explicit part of the first work item.  I see it as a kind of an ongoing process (as we add features they\u0027ll need to be documented), so I\u0027m not sure it works as a standalone work item.","commit_id":"caed7fffaefb23345f1b7ecddfc1847b4fbb9c18"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"a22669e060a759508f204daa6fcab7346af87a3a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Additionally, because there are few/no hacking-style checks in the TripleO"},{"line_number":36,"context_line":"projects, many patches get -1\u0027d for style issues that could be caught by"},{"line_number":37,"context_line":"an automated tool.  This causes unnecessary delay in merging changes."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed Change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_b405b1c3","line":38,"updated":"2014-06-18 16:01:12.000000000","message":"i\u0027d also add that we don\u0027t actually *know* what\u0027s tested. Just because an element is included as part of CI, doesn\u0027t mean the whole element is covered, we don\u0027t know (without investigative efforts) what parts of the element got used.","commit_id":"9d1cac9ee53f7f8b1a3f9d87c01b8929c1a2d5a9"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"02db570ec0d0ec8a15459a119747ad38141ceff5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Additionally, because there are few/no hacking-style checks in the TripleO"},{"line_number":36,"context_line":"projects, many patches get -1\u0027d for style issues that could be caught by"},{"line_number":37,"context_line":"an automated tool.  This causes unnecessary delay in merging changes."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed Change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_e4401e08","line":38,"in_reply_to":"1ae5cdf2_b405b1c3","updated":"2014-06-27 22:01:40.000000000","message":"Indeed.  This relates to your point below about coverage stats too.","commit_id":"9d1cac9ee53f7f8b1a3f9d87c01b8929c1a2d5a9"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"a22669e060a759508f204daa6fcab7346af87a3a","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"If we determine that a shell unit test framework is needed, we should try"},{"line_number":80,"context_line":"to choose a widely-used one with well-understood workflows to ease adoption."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Sandboxing"},{"line_number":83,"context_line":"^^^^^^^^^^"},{"line_number":84,"context_line":"I have done some initial experimentation with using fakeroot/fakechroot to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_14e905b7","line":81,"updated":"2014-06-18 16:01:12.000000000","message":"will there be any way to get test coverage data for bash scripts using the python framework?\n\nthat might be another reason to consider a shell testing framework...if it will provide us with data around what lines in a script were actually run during the test.","commit_id":"9d1cac9ee53f7f8b1a3f9d87c01b8929c1a2d5a9"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"02db570ec0d0ec8a15459a119747ad38141ceff5","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"If we determine that a shell unit test framework is needed, we should try"},{"line_number":80,"context_line":"to choose a widely-used one with well-understood workflows to ease adoption."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Sandboxing"},{"line_number":83,"context_line":"^^^^^^^^^^"},{"line_number":84,"context_line":"I have done some initial experimentation with using fakeroot/fakechroot to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_a94d0f9b","line":81,"in_reply_to":"1ae5cdf2_14e905b7","updated":"2014-06-27 22:01:40.000000000","message":"Good point, I\u0027ll add a note that coverage stats might be another benefit of a shell unit testing framework.","commit_id":"9d1cac9ee53f7f8b1a3f9d87c01b8929c1a2d5a9"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"a22669e060a759508f204daa6fcab7346af87a3a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"able to run a script that writes to root-owned files as a regular user, making"},{"line_number":87,"context_line":"it think it was writing to the real files, but I haven\u0027t gotten this working"},{"line_number":88,"context_line":"with tox for running unit tests that way."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Another option would be to use real chroots.  This would provide isolation"},{"line_number":91,"context_line":"and is probably more common than fakeroots.  The drawback would be that"},{"line_number":92,"context_line":"chrooting requires root access on the host machine, so running the unit tests"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_576aaf1a","line":89,"updated":"2014-06-18 16:01:12.000000000","message":"another possible issue...\n\nsome scripts, such as those under extra-data.d in the elements use sudo for the commands they run. How would that play if running under fakeroot/fakechroot?","commit_id":"9d1cac9ee53f7f8b1a3f9d87c01b8929c1a2d5a9"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"02db570ec0d0ec8a15459a119747ad38141ceff5","unresolved":false,"context_lines":[{"line_number":86,"context_line":"able to run a script that writes to root-owned files as a regular user, making"},{"line_number":87,"context_line":"it think it was writing to the real files, but I haven\u0027t gotten this working"},{"line_number":88,"context_line":"with tox for running unit tests that way."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Another option would be to use real chroots.  This would provide isolation"},{"line_number":91,"context_line":"and is probably more common than fakeroots.  The drawback would be that"},{"line_number":92,"context_line":"chrooting requires root access on the host machine, so running the unit tests"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1ae5cdf2_0496ea93","line":89,"in_reply_to":"1ae5cdf2_576aaf1a","updated":"2014-06-27 22:01:40.000000000","message":"It appears sudo is a bit of an issue in fakeroot.  It\u0027s possible there\u0027s a way around that, but if we\u0027re running in a fakeroot/chroot we could just stub out sudo and have it directly run the command since we already have pseudo-root permissions.\n\nI _really_ need to sit down and carve out some time to experiment with this more and figure out if it\u0027s a viable option.","commit_id":"9d1cac9ee53f7f8b1a3f9d87c01b8929c1a2d5a9"},{"author":{"_account_id":6449,"name":"Chris Jones","email":"cmsj@tenshu.net","username":"cmsj"},"change_message_id":"26118858bdfd1675294f1770e047251ce7933d5f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"The bash8 project also provides some general style checks that would be"},{"line_number":63,"context_line":"useful in TripleO, so we should begin making use of it as well.  We should"},{"line_number":64,"context_line":"also contribute additional checks when possible and provide feedback on any"},{"line_number":65,"context_line":"checks we disagree with."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Any unit tests added should be able to run in parallel.  This both speeds up"},{"line_number":68,"context_line":"testing and helps find race bugs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_11f75e8d","line":65,"updated":"2014-07-24 15:16:18.000000000","message":"Chris Jones: Something I\u0027d really like to see is consistent double quoting around any filesystem path that is entirely/partially made of a variable, which bash8 doesn\u0027t currently do. shellcheck can, but its solution is pretty blunt and will throw up an error for every single variable that isn\u0027t quoted.\nI\u0027d hope that a middle ground could be found, possibly one based in human policy, but I would prefer adding an error to all unquoted variables to not tackling the issue at all. I\u0027m not sure if this is particularly relevant to the text of this spec, but I strongly feel that it\u0027s an important safety mechanism we need.","commit_id":"c271c6d63abe0ba18c02d7f4bd250a7a23146625"},{"author":{"_account_id":9453,"name":"James Polley","email":"jp@jamezpolley.com","username":"tchaypo"},"change_message_id":"1611b2a6db990a0a53e2d90a21ed62db135ff22a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"also contribute additional checks when possible and provide feedback on any"},{"line_number":65,"context_line":"checks we disagree with."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Any unit tests added should be able to run in parallel.  This both speeds up"},{"line_number":68,"context_line":"testing and helps find race bugs."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_0a968494","line":67,"updated":"2014-07-10 00:45:14.000000000","message":"It\u0027s obviously implied, but is it worth entioning that the tool we use for running the tests should also be able to run them in parallel?","commit_id":"c271c6d63abe0ba18c02d7f4bd250a7a23146625"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"eebdba49dda3c2cd45e2a928a96b4674fa5d0894","unresolved":false,"context_lines":[{"line_number":64,"context_line":"also contribute additional checks when possible and provide feedback on any"},{"line_number":65,"context_line":"checks we disagree with."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Any unit tests added should be able to run in parallel.  This both speeds up"},{"line_number":68,"context_line":"testing and helps find race bugs."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_8d65871f","line":67,"in_reply_to":"baada198_0a968494","updated":"2014-07-22 14:21:46.000000000","message":"We would absolutely use testr for this.  Basically this falls under the \"consistency with the rest of OpenStack\" comments elsewhere in the spec.","commit_id":"c271c6d63abe0ba18c02d7f4bd250a7a23146625"},{"author":{"_account_id":9453,"name":"James Polley","email":"jp@jamezpolley.com","username":"tchaypo"},"change_message_id":"1611b2a6db990a0a53e2d90a21ed62db135ff22a","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Adding more tests will increase the amount of time Jenkins gate jobs take."},{"line_number":119,"context_line":"This should have minimal real impact though, because unit tests should run"},{"line_number":120,"context_line":"in significantly less time than the integration tests."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other Deployer Impact"},{"line_number":123,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_2a91889a","line":120,"updated":"2014-07-10 00:45:14.000000000","message":"I\u0027d suggest that having the unit tests pass shoulkd be a precondition of running the integration tests.\n\nI think that in most cases the net effect here should be to save time - when the unit tests fail it should be much faster tahn waiting for the equivalent integration test to fail.","commit_id":"c271c6d63abe0ba18c02d7f4bd250a7a23146625"},{"author":{"_account_id":7537,"name":"Matthew Macdonald-Wallace","email":"mmw@hp.com","username":"macdomat"},"change_message_id":"dab98f9e5c3fc5a3c7da7be92f6b16dd3aa8d631","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Adding more tests will increase the amount of time Jenkins gate jobs take."},{"line_number":119,"context_line":"This should have minimal real impact though, because unit tests should run"},{"line_number":120,"context_line":"in significantly less time than the integration tests."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other Deployer Impact"},{"line_number":123,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_5b9c1e0e","line":120,"in_reply_to":"baada198_2a91889a","updated":"2014-07-22 07:45:02.000000000","message":"I agree with this entirely.\n\nThe last thing we want to do is see a 40-minute (or more!) return time for tests when we could have reported back to the developer in \u003c10 seconds that their package-install call won\u0027t work!","commit_id":"c271c6d63abe0ba18c02d7f4bd250a7a23146625"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"eebdba49dda3c2cd45e2a928a96b4674fa5d0894","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Adding more tests will increase the amount of time Jenkins gate jobs take."},{"line_number":119,"context_line":"This should have minimal real impact though, because unit tests should run"},{"line_number":120,"context_line":"in significantly less time than the integration tests."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other Deployer Impact"},{"line_number":123,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_b0329e5c","line":120,"in_reply_to":"baada198_5b9c1e0e","updated":"2014-07-22 14:21:46.000000000","message":"Well, actually that\u0027s how it works today.  The unit tests are a separate Jenkins job from the full CI runs, so you get feedback as soon as the unit tests are done.  There\u0027s been some discussion about waiting to start CI until the unit tests pass, but that means if infra is running behind on the devstack vms used for unit testing then we are blocked (potentially for hours) before our CI can even start.\n\nSo it\u0027s something we can continue to discuss, but I think it\u0027s orthogonal to this spec.  All I\u0027m trying to do here is make our unit test jobs do something. :-)  Any changes to how we run those jobs is a separate issue.","commit_id":"c271c6d63abe0ba18c02d7f4bd250a7a23146625"}]}
