diff options
Diffstat (limited to 'tests/disabled_real_db_upgrade.py')
-rw-r--r-- | tests/disabled_real_db_upgrade.py | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/tests/disabled_real_db_upgrade.py b/tests/disabled_real_db_upgrade.py new file mode 100644 index 0000000..0f79525 --- /dev/null +++ b/tests/disabled_real_db_upgrade.py @@ -0,0 +1,105 @@ +# Copyright 2013 Rackspace Australia +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import json +import os +import testtools + +from turbo_hipster.task_plugins.real_db_upgrade import handle_results + +TESTS_DIR = os.path.join(os.path.dirname(__file__)) + + +class TestHandleResults(testtools.TestCase): + def test_line_to_time(self): + test_line = '2013-11-22 21:42:45,908 [output] 141 -> 142... ' + logfile = os.path.join(TESTS_DIR, 'assets/logcontent') + lp = handle_results.LogParser(logfile, None) + result = lp.line_to_time(test_line) + self.assertEqual(result, 1385156565) + + def test_check_migration(self): + with open(os.path.join(TESTS_DIR, + 'datasets/some_dataset_example/config.json'), + 'r') as config_stream: + dataset_config = json.load(config_stream) + duration = 120 + + result = handle_results.check_migration({'to': '151', + 'from': '150'}, + 'maximum_migration_times', + duration, dataset_config) + self.assertFalse(result) + + result = handle_results.check_migration({'to': '152', + 'from': '151'}, + 'maximum_migration_times', + duration, dataset_config) + self.assertTrue(result) + + def test_check_log_for_errors(self): + logfile = os.path.join(TESTS_DIR, + 'assets/20131007_devstack_export.log') + + def fake_find_schemas_230(): + return [230] + + lp = handle_results.LogParser(logfile, '/tmp/foo') + lp.find_schemas = fake_find_schemas_230 + lp.process_log() + self.assertEqual(['FAILURE - Final schema version does not match ' + 'expectation'], lp.errors) + self.assertEqual([], lp.warnings) + + def fake_find_schemas_228(): + return [228] + + lp = handle_results.LogParser(logfile, '/tmp/foo') + lp.find_schemas = fake_find_schemas_228 + lp.process_log() + self.assertEqual([], lp.errors) + self.assertEqual([], lp.warnings) + + def test_parse_log(self): + # This is a regression test for a log which didn't used to parse. + logfile = os.path.join(TESTS_DIR, 'assets/logcontent') + lp = handle_results.LogParser(logfile, None) + lp.process_log() + + self.assertEqual([], lp.errors) + self.assertEqual([], lp.warnings) + + migrations = [] + for migration in lp.migrations: + migrations.append(migration['to']) + + for migration in range(134, 229): + self.assertTrue(migration in migrations, + 'Migration %d missing from %s' + % (migration, migrations)) + + def test_innodb_stats(self): + logfile = os.path.join(TESTS_DIR, 'assets/user_001.log') + + def fake_find_schemas_228(): + return [228] + + lp = handle_results.LogParser(logfile, '/tmp/foo') + lp.find_schemas = fake_find_schemas_228 + lp.process_log() + + migration = lp.migrations[0] + self.assertTrue('stats' in migration) + self.assertTrue('Innodb_rows_read' in migration['stats']) + self.assertEqual(5, migration['stats']['Innodb_rows_read']) |