)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"1696d76ff629b33e0d74f2cb056c217996310f10","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix py34 No sql_connection parameter is established error"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests that were using DB connections that did not happen to"},{"line_number":10,"context_line":"import config.py were not setting the DB connection string."},{"line_number":11,"context_line":"The base test class now sets the string instead of relying"},{"line_number":12,"context_line":"on an import to happen."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_230fcde2","line":10,"updated":"2015-08-27 11:07:21.000000000","message":"So why are the failures caused by this only \u0027intermittent\u0027 (which is what the bug says), rather than happening every time?","commit_id":"a584f4b42d5a93959d23ef03d06f6acb3eb62c00"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"74807bfb05754187402a6dba74198c2cdcf07466","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix py34 No sql_connection parameter is established error"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests that were using DB connections that did not happen to"},{"line_number":10,"context_line":"import config.py were not setting the DB connection string."},{"line_number":11,"context_line":"The base test class now sets the string instead of relying"},{"line_number":12,"context_line":"on an import to happen."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_e1f3fe08","line":10,"in_reply_to":"da20952f_230fcde2","updated":"2015-08-27 15:54:37.000000000","message":"It depends on test execution order.","commit_id":"a584f4b42d5a93959d23ef03d06f6acb3eb62c00"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"842bc4a8314f6227e78b60ff2318070f6c3dc0ba","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix py34 No sql_connection parameter is established error"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests that were using DB connections that did not happen to"},{"line_number":10,"context_line":"import config.py were not setting the DB connection string."},{"line_number":11,"context_line":"The base test class now sets the string instead of relying"},{"line_number":12,"context_line":"on an import to happen."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_d2f6bcf8","line":10,"in_reply_to":"da20952f_c1c6fa48","updated":"2015-08-27 21:50:18.000000000","message":"testr takes the list of tests generated by either:\n  1) The regex you provide\n  2) The tests directory if a regex is not provided \n  3) A file containing a list of tests\n\nAnd splits those tests to workers (The amount of workers defaults to the number of CPU cores on the machine) according to the amount of time each test took to complete. Those times are stored in .testrepository/times.dbm. The slowest tests are split amongst the workers to try to give them an equal amount of work. Since the time to complete a test varies from run to run, this means that running testr twice in a row with the exact same tests and the same amount of workers may result in a different order of execution! (I found this amazing when I found out about this, I don\u0027t know about you :)","commit_id":"a584f4b42d5a93959d23ef03d06f6acb3eb62c00"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"24061c006b6944fcc7936dbf10d56a59799876b9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix py34 No sql_connection parameter is established error"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests that were using DB connections that did not happen to"},{"line_number":10,"context_line":"import config.py were not setting the DB connection string."},{"line_number":11,"context_line":"The base test class now sets the string instead of relying"},{"line_number":12,"context_line":"on an import to happen."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_5fde1a40","line":10,"in_reply_to":"da20952f_d2f6bcf8","updated":"2015-08-28 10:09:49.000000000","message":"Thanks for these details, Assaf.  Yes, I do also find them impressive!","commit_id":"a584f4b42d5a93959d23ef03d06f6acb3eb62c00"},{"author":{"_account_id":13734,"name":"Nell Jerram","email":"nell@tigera.io","username":"neiljerram"},"change_message_id":"90abdf5df0d165720367126705d684593eb326b4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix py34 No sql_connection parameter is established error"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests that were using DB connections that did not happen to"},{"line_number":10,"context_line":"import config.py were not setting the DB connection string."},{"line_number":11,"context_line":"The base test class now sets the string instead of relying"},{"line_number":12,"context_line":"on an import to happen."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_c1c6fa48","line":10,"in_reply_to":"da20952f_e1f3fe08","updated":"2015-08-27 16:01:18.000000000","message":"Ah, and is that random?  Assuming yes, thanks for explaining that!","commit_id":"a584f4b42d5a93959d23ef03d06f6acb3eb62c00"}],"neutron/tests/base.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"90085995644deac5adf7a0c2e2319f3291d4e05b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def setUp(self):"},{"line_number":128,"context_line":"        super(DietTestCase, self).setUp()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        config.set_db_defaults()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Configure this first to ensure pm debugging support for setUp()"},{"line_number":133,"context_line":"        debugger \u003d os.environ.get(\u0027OS_POST_MORTEM_DEBUGGER\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_8ad8491f","line":130,"updated":"2015-08-26 22:00:28.000000000","message":"should this be better placed in unit/testlib_api.py in one of the  SQL base classes? Have you considered it? If not, it might be more \u0027suitable\u0027","commit_id":"8d766ddf3a3342b6c8e196e1cc475a4f76551d32"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"87cae10c509b079e65ab17ed9fa1a6ace83abe91","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def setUp(self):"},{"line_number":128,"context_line":"        super(DietTestCase, self).setUp()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        config.set_db_defaults()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Configure this first to ensure pm debugging support for setUp()"},{"line_number":133,"context_line":"        debugger \u003d os.environ.get(\u0027OS_POST_MORTEM_DEBUGGER\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_90c5dc5c","line":130,"in_reply_to":"da20952f_5063c4b1","updated":"2015-08-26 22:46:47.000000000","message":"ok...let\u0027s unwedge things for now. I am satisfied that at least you looked into it :)\n\nI would have added a note...as clearly there\u0027s an ordering requirement here that must be honored and moving this accidentally is not going to lead us to persistent failure.","commit_id":"8d766ddf3a3342b6c8e196e1cc475a4f76551d32"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"4ab06c2afa07a948e909c93d6424e977e86b7221","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def setUp(self):"},{"line_number":128,"context_line":"        super(DietTestCase, self).setUp()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        config.set_db_defaults()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Configure this first to ensure pm debugging support for setUp()"},{"line_number":133,"context_line":"        debugger \u003d os.environ.get(\u0027OS_POST_MORTEM_DEBUGGER\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_5063c4b1","line":130,"in_reply_to":"da20952f_8ad8491f","updated":"2015-08-26 22:41:34.000000000","message":"\"It\u0027s complicated.\"\n\nIf I just move set_db_defaults to both of those sql base classes, it won\u0027t solve the bug this patch is linked to. Because, for example, neutron/tests/unit/quota/test_resource_registry.TestAuxiliaryFunctions (One of the test classes with failing tests) doesn\u0027t inherit from the SQL tests base class, it inherits from DietTestCase. Now, why does that work at all, I don\u0027t know at this time (It should be looking at an empty DB with no tables? Why doesn\u0027t it crash horribly?). Perhaps this means that a more thorough solution would be to:\n\na) Call set_db_defaults in both SQL tests base classes.\nb) Understand how some unit tests that invoke the DB but don\u0027t inherit from the SQL test base classes work, and change it so that any such test fails in a deterministic fashion regardless of test execution order.\nc) Make sure that all test cases that eventually call DB code inherit from one of the SQL test classes.\n\nOn top of that we have to consider an immediate term solution to fix the gate. This patch as it is serves that purpose, but there is the perpetual fear that if we just merge this patch as it is, tasks \u0027a\u0027, \u0027b\u0027 and \u0027c\u0027 above will never be accomplished as more urgent tasks pop up. What do you think?","commit_id":"8d766ddf3a3342b6c8e196e1cc475a4f76551d32"},{"author":{"_account_id":10980,"name":"Doug Wiegley","email":"dougwig@parkside.io","username":"dougw"},"change_message_id":"b4ca8a764a8a205e08c72a3e94e3ae0b37e70c27","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def setUp(self):"},{"line_number":128,"context_line":"        super(DietTestCase, self).setUp()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # FIXME(amuller): this must be called in the Neutron unit tests base"},{"line_number":131,"context_line":"        # class to initialize the DB connection string. Moving this may cause"},{"line_number":132,"context_line":"        # non-deterministic failures. Bug #1489098 for more info."},{"line_number":133,"context_line":"        config.set_db_defaults()"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_9cce5382","line":130,"updated":"2015-08-27 00:41:54.000000000","message":"Why is this a FIXME? What needs changing?","commit_id":"a584f4b42d5a93959d23ef03d06f6acb3eb62c00"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b1a5a36a9d5e0f820f038b49498dfa16cd0fc4ed","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def setUp(self):"},{"line_number":128,"context_line":"        super(DietTestCase, self).setUp()"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # FIXME(amuller): this must be called in the Neutron unit tests base"},{"line_number":131,"context_line":"        # class to initialize the DB connection string. Moving this may cause"},{"line_number":132,"context_line":"        # non-deterministic failures. Bug #1489098 for more info."},{"line_number":133,"context_line":"        config.set_db_defaults()"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_9c6df334","line":130,"in_reply_to":"da20952f_9cce5382","updated":"2015-08-27 00:50:12.000000000","message":"It was me who added the FIXME, so probably this should be FIXME(armax) :)\n\nThe reason why I used FIXME rather than NOTE, is because I think this needs a bit more investigation. IMO we\u0027d have db default initialization where it matters (SQL test classes?), but we didn\u0027t want to stall the fix for too long.","commit_id":"a584f4b42d5a93959d23ef03d06f6acb3eb62c00"}]}
