)]}'
{"TESTING.rst":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1dfcd7035bdd99d000440a481b7701dac64b6803","unresolved":false,"context_lines":[{"line_number":21,"context_line":"      (Avoid deeper levels because they do not render well.)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Testing Neutron"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Why Should You Care"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_d6200d4c","line":24,"updated":"2015-11-16 22:23:43.000000000","message":"Really out of change scope: should we clarify the difference between tearsDown and addCleanup?","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":21,"context_line":"      (Avoid deeper levels because they do not render well.)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Testing Neutron"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Why Should You Care"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_0641990b","line":24,"in_reply_to":"ba8a016a_d6200d4c","updated":"2015-12-03 22:32:11.000000000","message":"Go for it :)","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"713178d62fa8fec0ab7a6de770151da51d28a5fe","unresolved":false,"context_lines":[{"line_number":42,"context_line":"For purposes of a shared dialect it is important to assert that the community"},{"line_number":43,"context_line":"speaks using the same terms."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"We will define three classes of tests: Unit, functional and integration. Each"},{"line_number":46,"context_line":"respective category typically targets a larger scope of code. Other than that"},{"line_number":47,"context_line":"broad categorization, here are a few more characteristic:"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_9d4fb6bc","line":45,"updated":"2015-11-18 06:54:23.000000000","message":"nit: s/Unit/unit/g","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":42,"context_line":"For purposes of a shared dialect it is important to assert that the community"},{"line_number":43,"context_line":"speaks using the same terms."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"We will define three classes of tests: Unit, functional and integration. Each"},{"line_number":46,"context_line":"respective category typically targets a larger scope of code. Other than that"},{"line_number":47,"context_line":"broad categorization, here are a few more characteristic:"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_06267968","line":45,"in_reply_to":"ba8a016a_9d4fb6bc","updated":"2015-12-03 22:32:11.000000000","message":"I learned something today :) It would seem that in American English you shouldn\u0027t capitalize the first word following a colon if whatever follows the colon is a list or a dependent clause (Non-complete sentence). The more you know...\n\nIn other words: Done. (Note that \u0027Done\u0027 is capitalized because it is an independent clause. Isn\u0027t English fun?)","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"a02ae67c46e6414d7026d89eb16b3deb3ef94bf4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    messaging service) should be mocked. A unit test typically targets a"},{"line_number":52,"context_line":"    function or class."},{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_76d5a141","line":54,"updated":"2015-11-16 22:45:27.000000000","message":"nit: tools/configure_for_func_testing.sh","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    messaging service) should be mocked. A unit test typically targets a"},{"line_number":52,"context_line":"    function or class."},{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_66097d95","line":54,"in_reply_to":"ba8a016a_76d5a141","updated":"2015-12-03 22:32:11.000000000","message":"Done","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1dfcd7035bdd99d000440a481b7701dac64b6803","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    function or class."},{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_b6e4693b","line":55,"updated":"2015-11-16 22:23:43.000000000","message":"It seems functional tests are historically/mustly used to check the integration of a neutron component with a system component (iptables/OVS/...) in opposition to unittests which would mock the interaction with system components","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    function or class."},{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_b9dd4a72","line":55,"in_reply_to":"ba8a016a_b6e4693b","updated":"2015-12-03 22:32:11.000000000","message":"I\u0027ll reword the unit tests section a bit.","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1dfcd7035bdd99d000440a481b7701dac64b6803","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Tests in the Neutron tree are typically organized by the testing infrastructure"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_73d5b341","line":56,"updated":"2015-11-16 22:23:43.000000000","message":"The link between unit, functional, integration test categories defined here and unit, functional, fullstack tests (described in specific sections) should be clarified perhaps by merging this section with Testing Frameworks","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"713178d62fa8fec0ab7a6de770151da51d28a5fe","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Tests in the Neutron tree are typically organized by the testing infrastructure"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_dd8a1ebf","line":56,"in_reply_to":"ba8a016a_09999a6e","updated":"2015-11-18 06:54:23.000000000","message":"Actually I believe Assaf is associating \u0027integration\u0027 to both API tests and fullstack. I do agree that it\u0027s worth specifically mentioning the names of the different integration tests (since there are more than one and there\u0027s no folder called \u0027tests/integration\u0027 in the tree).","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"a02ae67c46e6414d7026d89eb16b3deb3ef94bf4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Tests in the Neutron tree are typically organized by the testing infrastructure"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_09999a6e","line":56,"in_reply_to":"ba8a016a_73d5b341","updated":"2015-11-16 22:45:27.000000000","message":"I have the same question. On the other hand, I guess that integration test may mean tempest not fullstack. I wonder if you could make the definition clear.","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Tests in the Neutron tree are typically organized by the testing infrastructure"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_46600136","line":56,"in_reply_to":"ba8a016a_73d5b341","updated":"2015-12-03 22:32:11.000000000","message":"I just removed some of the text in the \u0027Testing Frameworks\u0027 opening paragraph.","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  * Functional tests - Run against a pre-configured environment"},{"line_number":54,"context_line":"    (neutron/tools/configure_for_func_testing.sh). Typically test a component"},{"line_number":55,"context_line":"    such as an agent using no mocks."},{"line_number":56,"context_line":"  * Integration tests - Run against a running cloud, often target the API level,"},{"line_number":57,"context_line":"    but also \u0027scenarios\u0027 or \u0027user stories\u0027."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Tests in the Neutron tree are typically organized by the testing infrastructure"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_864909d3","line":56,"in_reply_to":"ba8a016a_dd8a1ebf","updated":"2015-12-03 22:32:11.000000000","message":"Done","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"1dfcd7035bdd99d000440a481b7701dac64b6803","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* Mocks are automatically reverted."},{"line_number":97,"context_line":"* The in-memory database is cleared of content, but its schema is maintained."},{"line_number":98,"context_line":"* The global Oslo configuration object is reset."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"The unit testing framework can be used to effectively test database interaction,"},{"line_number":101,"context_line":"for example, distributed routers allocate a MAC address for every host running"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_3614f9f3","line":98,"updated":"2015-11-16 22:23:43.000000000","message":"We should mention somewhere that real system calls are forbidden in the gate (out of change scope: it would be great if we could do it in py27/34 tox jobs)","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"* Mocks are automatically reverted."},{"line_number":97,"context_line":"* The in-memory database is cleared of content, but its schema is maintained."},{"line_number":98,"context_line":"* The global Oslo configuration object is reset."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"The unit testing framework can be used to effectively test database interaction,"},{"line_number":101,"context_line":"for example, distributed routers allocate a MAC address for every host running"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_e651ed63","line":98,"in_reply_to":"ba8a016a_3614f9f3","updated":"2015-12-03 22:32:11.000000000","message":"It\u0027s written in line 86. Did you want something more verbose or explicit?","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":122,"context_line":"This is allowed by the fact that the method was built to be testable -"},{"line_number":123,"context_line":"The method has clear input and output with no side effects."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Do:"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Build a specific function that wraps a DB operation. This lends to testability."},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_26405556","line":125,"updated":"2015-12-03 22:32:11.000000000","message":"I\u0027m going to remove this Do/Don\u0027t section, it\u0027s not clear enough nor does it add new information.","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efb18152f2e9f8cf336b7ed402a83b2952edfb51","unresolved":false,"context_lines":[{"line_number":142,"context_line":"resources are not modified and that resources created in tests are"},{"line_number":143,"context_line":"properly cleaned up both on test success and failure."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Let\u0027s examine the benefits of the functional testing framework."},{"line_number":146,"context_line":"Neutron offers a library called \u0027ip_lib\u0027 that wraps around the \u0027ip\u0027 binary."},{"line_number":147,"context_line":"One of its methods is called \u0027device_exists\u0027 which accepts a device name"},{"line_number":148,"context_line":"and a namespace and returns True if the device exists in the given namespace."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_a5f7d889","line":145,"updated":"2015-11-18 20:27:21.000000000","message":"I like this, I wonder if we should use the same headline sections you chose for fullstack \u0027why, when, how\u0027...\n\nWhat am I missing?","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":142,"context_line":"resources are not modified and that resources created in tests are"},{"line_number":143,"context_line":"properly cleaned up both on test success and failure."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Let\u0027s examine the benefits of the functional testing framework."},{"line_number":146,"context_line":"Neutron offers a library called \u0027ip_lib\u0027 that wraps around the \u0027ip\u0027 binary."},{"line_number":147,"context_line":"One of its methods is called \u0027device_exists\u0027 which accepts a device name"},{"line_number":148,"context_line":"and a namespace and returns True if the device exists in the given namespace."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_b9af8ae2","line":145,"in_reply_to":"ba8a016a_a5f7d889","updated":"2015-12-03 22:32:11.000000000","message":"I let this sink for a bit, and after re-reading it, I think it reads fairly well. I don\u0027t want to force all sections in to the same format for consistency reasons or whatever.","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"713178d62fa8fec0ab7a6de770151da51d28a5fe","unresolved":false,"context_lines":[{"line_number":205,"context_line":"Fullstack Tests"},{"line_number":206,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Why?"},{"line_number":209,"context_line":"++++"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"The idea behind \"fullstack\" testing is to fill a gap between unit + functional"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_604ee970","line":208,"updated":"2015-11-18 06:54:23.000000000","message":"nit: the titles in this subsection will not match those of the edited unit/functional tests (no title that has a \"++++\" there). Perhaps we should revisit this for consistency?","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"ffdc1ee7c63e4b255951c7e560a31fa04835b804","unresolved":false,"context_lines":[{"line_number":205,"context_line":"Fullstack Tests"},{"line_number":206,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Why?"},{"line_number":209,"context_line":"++++"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"The idea behind \"fullstack\" testing is to fill a gap between unit + functional"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_e6ffad32","line":208,"in_reply_to":"ba8a016a_604ee970","updated":"2015-12-03 22:32:11.000000000","message":"I\u0027m not sure what do you mean by \u0027not match\u0027. \u0027Fullstack Tests\u0027 is level 3, and the sections under \u0027Fullstack Tests\u0027 are level 4. This is correct as per the explanation in line 16. It also renders correctly in index.html (With the caveat that levels 4+ don\u0027t actually appear in the main index).","commit_id":"89d51ad8896809636ceced34f9bdd1ddbea1e806"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3f3b41bf995ad570bed0c740270f3ebb1f434bd3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"-------------------"},{"line_number":29,"context_line":"How confident are you that your code works?"},{"line_number":30,"context_line":"Do you feel the need to test it manually again and again?"},{"line_number":31,"context_line":"Are you relying on after the fact QA?"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"We should look to the auto and medical industries for inspiration -"},{"line_number":34,"context_line":"Consider what it takes to make sure software in a car behaves correctly,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_c52343a6","line":31,"updated":"2015-12-05 15:18:45.000000000","message":"QE?","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"7459102176c8518d06d2581d51f636d8f34b7431","unresolved":false,"context_lines":[{"line_number":28,"context_line":"-------------------"},{"line_number":29,"context_line":"How confident are you that your code works?"},{"line_number":30,"context_line":"Do you feel the need to test it manually again and again?"},{"line_number":31,"context_line":"Are you relying on after the fact QA?"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"We should look to the auto and medical industries for inspiration -"},{"line_number":34,"context_line":"Consider what it takes to make sure software in a car behaves correctly,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_28dc9e17","line":31,"in_reply_to":"7a740942_c52343a6","updated":"2015-12-09 21:00:41.000000000","message":"I think QA is a more widely used term than QE in the industry (Even though we use QE in Red Hat).","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d1730b047766eeabd187dff9c4bcc9ab225ff016","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Are you relying on after the fact QA?"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"We should look to the auto and medical industries for inspiration -"},{"line_number":34,"context_line":"Consider what it takes to make sure software in a car behaves correctly,"},{"line_number":35,"context_line":"and what does it mean to introduce a bug. While we\u0027re not saving lives,"},{"line_number":36,"context_line":"bugs can cause tremendous costs to existing deployments. Instability of the"},{"line_number":37,"context_line":"project can also negatively impact OpenStack\u0027s perception as a stable platform"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_359f1605","line":34,"updated":"2015-12-04 01:57:59.000000000","message":"Are you sure you want to use the auto industry as an example given the recent events?\n\nI have a VW for crying out loud!!! :)","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3f3b41bf995ad570bed0c740270f3ebb1f434bd3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Are you relying on after the fact QA?"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"We should look to the auto and medical industries for inspiration -"},{"line_number":34,"context_line":"Consider what it takes to make sure software in a car behaves correctly,"},{"line_number":35,"context_line":"and what does it mean to introduce a bug. While we\u0027re not saving lives,"},{"line_number":36,"context_line":"bugs can cause tremendous costs to existing deployments. Instability of the"},{"line_number":37,"context_line":"project can also negatively impact OpenStack\u0027s perception as a stable platform"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_85369be5","line":34,"in_reply_to":"7a740942_359f1605","updated":"2015-12-05 15:18:45.000000000","message":"i think that we can do without the lines above. Its really pointless","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"7459102176c8518d06d2581d51f636d8f34b7431","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Are you relying on after the fact QA?"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"We should look to the auto and medical industries for inspiration -"},{"line_number":34,"context_line":"Consider what it takes to make sure software in a car behaves correctly,"},{"line_number":35,"context_line":"and what does it mean to introduce a bug. While we\u0027re not saving lives,"},{"line_number":36,"context_line":"bugs can cause tremendous costs to existing deployments. Instability of the"},{"line_number":37,"context_line":"project can also negatively impact OpenStack\u0027s perception as a stable platform"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_e8b45683","line":34,"in_reply_to":"7a740942_85369be5","updated":"2015-12-09 21:00:41.000000000","message":"Let me take another stab at it. There was intent behind the opening paragraph, what I ended up with may have missed the mark.","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d1730b047766eeabd187dff9c4bcc9ab225ff016","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Definitions"},{"line_number":41,"context_line":"-----------"},{"line_number":42,"context_line":"We all come from different backgrounds and with our own baggage. In order"},{"line_number":43,"context_line":"to be sure we all mean the same things when we use the terms \u0027unit\u0027,"},{"line_number":44,"context_line":"\u0027functional\u0027, and \u0027integration\u0027, let\u0027s define them within the Neutron context."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_38094d2d","line":42,"updated":"2015-12-04 01:57:59.000000000","message":"I think this preamble can be less \u0027Emile Zola\u0027 and simple say:\n\nLet\u0027s define the meaning of unit, functional, integration within the Neutron context:","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"7459102176c8518d06d2581d51f636d8f34b7431","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Definitions"},{"line_number":41,"context_line":"-----------"},{"line_number":42,"context_line":"We all come from different backgrounds and with our own baggage. In order"},{"line_number":43,"context_line":"to be sure we all mean the same things when we use the terms \u0027unit\u0027,"},{"line_number":44,"context_line":"\u0027functional\u0027, and \u0027integration\u0027, let\u0027s define them within the Neutron context."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_b2c31c38","line":42,"in_reply_to":"7a740942_38094d2d","updated":"2015-12-09 21:00:41.000000000","message":"Yeah this paragraph is kinda redundant.","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d1730b047766eeabd187dff9c4bcc9ab225ff016","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  \u0027ip link show foo\u0027."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The value of such a test is arguable. Remember that new tests are not free,"},{"line_number":146,"context_line":"they need to be maintained. Code is often refactored, reimplemented and"},{"line_number":147,"context_line":"optimized."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* There are other ways to find out if a device exists (Such as"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_38414d0c","line":146,"updated":"2015-12-04 01:57:59.000000000","message":"especially if they are riddled with races :)","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3f3b41bf995ad570bed0c740270f3ebb1f434bd3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"* Most importantly, the test does not assert the behavior of the method. It"},{"line_number":156,"context_line":"  merely asserts that the code is as written."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"*Enter the functional testing framework, to the sound of the Superman theme,"},{"line_number":159,"context_line":"with the Krypton flag in the background, and a thousand doves flying off to"},{"line_number":160,"context_line":"the sunset*."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_4530b3e8","line":158,"updated":"2015-12-05 15:18:45.000000000","message":"Missing space but hopefully you will remove the superman reference unless you would like us to refer to you as Sheldon from now on","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"7459102176c8518d06d2581d51f636d8f34b7431","unresolved":false,"context_lines":[{"line_number":155,"context_line":"* Most importantly, the test does not assert the behavior of the method. It"},{"line_number":156,"context_line":"  merely asserts that the code is as written."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"*Enter the functional testing framework, to the sound of the Superman theme,"},{"line_number":159,"context_line":"with the Krypton flag in the background, and a thousand doves flying off to"},{"line_number":160,"context_line":"the sunset*."},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_12ceb05a","line":158,"in_reply_to":"7a740942_4530b3e8","updated":"2015-12-09 21:00:41.000000000","message":"Alright alright... I don\u0027t even really like that show.","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d1730b047766eeabd187dff9c4bcc9ab225ff016","unresolved":false,"context_lines":[{"line_number":156,"context_line":"  merely asserts that the code is as written."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"*Enter the functional testing framework, to the sound of the Superman theme,"},{"line_number":159,"context_line":"with the Krypton flag in the background, and a thousand doves flying off to"},{"line_number":160,"context_line":"the sunset*."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"When adding a functional test for \u0027device_exists\u0027, several framework level"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_181ed10c","line":159,"updated":"2015-12-04 01:57:59.000000000","message":"perhaps you can sound less Isaac Asimov? Unless your specific intention is to sound hilarious, but the mental picture doesn\u0027t do it for me :)","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"7459102176c8518d06d2581d51f636d8f34b7431","unresolved":false,"context_lines":[{"line_number":156,"context_line":"  merely asserts that the code is as written."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"*Enter the functional testing framework, to the sound of the Superman theme,"},{"line_number":159,"context_line":"with the Krypton flag in the background, and a thousand doves flying off to"},{"line_number":160,"context_line":"the sunset*."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"When adding a functional test for \u0027device_exists\u0027, several framework level"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_52ebd8b0","line":159,"in_reply_to":"7a740942_181ed10c","updated":"2015-12-09 21:00:41.000000000","message":"Well aren\u0027t you two fun!","commit_id":"d895a599fd42d024c931bb9c37880821884db91d"}]}
