Exemple #1
0
 def test_skip_when_tag_in_sql_file(self):
     test_loader = TINCTestLoader()
     test_suite = test_loader.loadTestsFromTestCase(MockSQLTestCaseForSkip)
     test_case = None
     for case in test_suite._tests:
         if case.name == "MockSQLTestCaseForSkip.test_query01":
             test_case = case
Exemple #2
0
 def test_infer_metadata(self):
     test_loader = TINCTestLoader()
     test_suite = test_loader.loadTestsFromTestCase(MockSQLTestCase)
     test_case = None
     for case in test_suite._tests:
         if case.name == "MockSQLTestCase.test_query02":
             test_case = case
Exemple #3
0
 def test_optimizer_mode_both(self):
     test_loader = TINCTestLoader()
     test_suite = test_loader.loadTestsFromTestCase(
         MockSQLTestCaseForOptimizerModeBoth)
     for test in test_suite._tests:
         # Data provider should exists for query01 and query03.
         # query02 shouldn't have it, since its optimizer mode is overwritten with value 'off'
         if test.name == "MockSQLTestCaseForOptimizerModeBoth.test_query01" or test.name == "MockSQLTestCaseForOptimizerModeBoth.test_query03":
             self.assertEqual(test.optimizer_mode, "both")
             self.assertEqual(test.data_provider, "optimizer_handling")
         else:
             self.assertNotEqual(test.optimizer_mode, "both")
             self.assertTrue(test.data_provider is None)
Exemple #4
0
 def test_load_implicit_python_from_name(self):
     """Test loadTestsFromName for a dynamically generated sql test method"""
     test_loader = TINCTestLoader()
     test_suite = test_loader.loadTestsFromName(
         'mpp.models.test.sql_related.test_sql_test_case.MockSQLTestCaseForLoader.test_query01'
     )
     test_case = test_suite._tests[0]
     self.assertEqual(test_case.name,
                      "MockSQLTestCaseForLoader.test_query01")
     self.assertEqual(test_case.author, 'lammin')
     self.assertEqual(test_case.description, 'test sql test case')
     self.assertEqual(
         test_case.created_datetime,
         datetime.strptime('2012-07-20 12:00:00', '%Y-%m-%d %H:%M:%S'))
     self.assertEqual(
         test_case.modified_datetime,
         datetime.strptime('2012-07-20 12:00:02', '%Y-%m-%d %H:%M:%S'))
     self.assertEqual(test_case.tags, set(['orca', 'hashagg', 'executor']))
Exemple #5
0
    def test_templates_template_sql_file(self):
        """Test loadTestsFromName for a dynamically generated sql template test method."""
        test_loader = TINCTestLoader()
        test_suite = test_loader.loadTestsFromName(
            'mpp.models.test.sql_related.test_sql_test_case.MockSQLTemplateTestCaseExplicit.test_template_query04'
        )
        test_case = test_suite._tests[0]
        # Template test case should work as if it is non-template test case...
        self.assertEqual(
            test_case.name,
            "MockSQLTemplateTestCaseExplicit.test_template_query04")
        self.assertEqual(test_case.author, 'shahn17')
        self.assertEqual(test_case.description, 'template test case')

        sql_file_path = os.path.join(test_case.get_out_dir(),
                                     "MockSQLTemplateTestCaseExplicit",
                                     "template_query04.sql")
        ans_file_path = os.path.join(test_case.get_out_dir(),
                                     "MockSQLTemplateTestCaseExplicit",
                                     "template_query04.ans")
        original_sql_file_path = os.path.join(
            os.path.dirname(
                sys.modules[test_case.__class__.__module__].__file__),
            test_case.__class__.sql_dir, test_case.__class__.template_dir,
            "query04.sql")
        original_ans_file_path = os.path.join(
            os.path.dirname(
                sys.modules[test_case.__class__.__module__].__file__),
            test_case.__class__.ans_dir, test_case.__class__.template_dir,
            "query04.ans")
        self.assertEqual(test_case.sql_file, sql_file_path)
        self.assertEqual(test_case.ans_file, ans_file_path)
        self.assertEqual(test_case._original_sql_file, original_sql_file_path)
        self.assertEqual(test_case._original_ans_file, original_ans_file_path)
        self.assertTrue(os.path.exists(test_case.sql_file))
        self.assertTrue(os.path.exists(test_case.ans_file))
        self.assertTrue(os.path.exists(test_case._original_sql_file))
        self.assertTrue(os.path.exists(test_case._original_ans_file))
        # Cleanup
        dir_path = os.path.join(test_case.get_out_dir(),
                                "MockSQLTemplateTestCaseExplicit")
        self.assertTrue(os.path.exists(dir_path))
        shutil.rmtree(dir_path)
Exemple #6
0
 def test_templates_regular_sql(self):
     """Test loadTestsFromName for a dynamically generated sql test method."""
     test_loader = TINCTestLoader()
     test_suite = test_loader.loadTestsFromName(
         'mpp.models.test.sql_related.test_sql_test_case.MockSQLTemplateTestCaseRegular.test_query01'
     )
     test_case = test_suite._tests[0]
     # Non-template test case should work as is...
     self.assertEqual(test_case.name,
                      "MockSQLTemplateTestCaseRegular.test_query01")
     self.assertEqual(test_case.author, 'lammin')
     self.assertEqual(test_case.description, 'test sql test case')
     self.assertEqual(
         test_case.created_datetime,
         datetime.strptime('2012-07-20 12:00:00', '%Y-%m-%d %H:%M:%S'))
     self.assertEqual(
         test_case.modified_datetime,
         datetime.strptime('2012-07-20 12:00:02', '%Y-%m-%d %H:%M:%S'))
     self.assertEqual(test_case.tags, set(['orca', 'hashagg', 'executor']))
 def run_test(
     self,
     method_name,
     skip_expected,
     test_case_prefix='tinctest.test.test_version_check.MockTINCTestCaseWithGetVersion'
 ):
     loader = TINCTestLoader()
     tinc_test_suite = loader.loadTestsFromName(
         '%s.%s' % (test_case_prefix, method_name), dryrun=True)
     with closing(_WritelnDecorator(StringIO())) as buffer:
         tinc_test_result = tinctest.TINCTextTestResult(buffer, True, 1)
         tinc_test_suite.run(tinc_test_result)
         text = buffer.getvalue()
     self.assertEqual(tinc_test_result.testsRun, 1)
     self.assertEqual(len(tinc_test_result.failures), 0)
     if skip_expected:
         self.assertEqual(len(tinc_test_result.skipped), 1)
     else:
         self.assertEqual(len(tinc_test_result.skipped), 0)
     self.assertEqual(len(tinc_test_result.errors), 0)
Exemple #8
0
    def test_load_test_from_class_name_with_supplementary_sqls(self):
        """Test loadTestsFromName for a class name"""
        test_loader = TINCTestLoader()
        test_suite = test_loader.loadTestsFromName(
            'mpp.models.test.sql_related.test_sql_test_case.MockSQLTestCaseForLoader'
        )
        # 3 tests for 3 sql tests in the current directory.
        self.assertEquals(len(test_suite._tests), 3)
        for test_case in test_suite._tests:
            if test_case.name == 'MockSQLTestCaseForLoader.test_query03':
                break

        self.assertEqual(test_case.name,
                         "MockSQLTestCaseForLoader.test_query03")
        self.assertEqual(test_case.author, 'balasr3')
        self.assertEqual(test_case.description, 'test sql test case sql')
        self.assertEqual(
            test_case.created_datetime,
            datetime.strptime('2012-07-20 12:00:00', '%Y-%m-%d %H:%M:%S'))
        self.assertEqual(
            test_case.modified_datetime,
            datetime.strptime('2012-07-20 12:00:02', '%Y-%m-%d %H:%M:%S'))
        self.assertEqual(test_case.tags, set(['orca', 'hashagg', 'executor']))
Exemple #9
0
    def test_load_test_from_class_name(self):
        """Test loadTestsFromName for a class name"""
        test_loader = TINCTestLoader()
        test_suite = test_loader.loadTestsFromName(
            'mpp.models.test.sql_related.test_sql_test_case.MockSQLTestCaseForLoader'
        )
        test_case = None
        for my_test_case in test_suite._tests:
            if my_test_case.name == 'MockSQLTestCaseForLoader.test_query01':
                test_case = my_test_case
                break

        self.assertTrue(test_case is not None)
        self.assertEqual(test_case.name,
                         "MockSQLTestCaseForLoader.test_query01")
        self.assertEqual(test_case.author, 'lammin')
        self.assertEqual(test_case.description, 'test sql test case')
        self.assertEqual(
            test_case.created_datetime,
            datetime.strptime('2012-07-20 12:00:00', '%Y-%m-%d %H:%M:%S'))
        self.assertEqual(
            test_case.modified_datetime,
            datetime.strptime('2012-07-20 12:00:02', '%Y-%m-%d %H:%M:%S'))
        self.assertEqual(test_case.tags, set(['orca', 'hashagg', 'executor']))
Exemple #10
0
    def test_templates_all_files(self):
        """Test loadTestsFromName for a class name"""
        test_loader = TINCTestLoader()
        test_suite = test_loader.loadTestsFromName(
            'mpp.models.test.sql_related.test_sql_test_case.MockSQLTemplateTestCase'
        )
        # 5 tests for 3 sql files in the current directory, and 2 sql files in the template directory
        self.assertEquals(len(test_suite._tests), 5)
        for test_case in test_suite._tests:
            if test_case.name == 'MockSQLTemplateTestCase.test_template_query04':
                break

        self.assertEqual(test_case.name,
                         "MockSQLTemplateTestCase.test_template_query04")
        self.assertEqual(test_case.author, 'shahn17')
        self.assertEqual(test_case.description, 'template test case')

        sql_file_path = os.path.join(test_case.get_out_dir(),
                                     "MockSQLTemplateTestCase",
                                     "template_query04.sql")
        ans_file_path = os.path.join(test_case.get_out_dir(),
                                     "MockSQLTemplateTestCase",
                                     "template_query04.ans")
        original_sql_file_path = os.path.join(
            os.path.dirname(
                sys.modules[test_case.__class__.__module__].__file__),
            test_case.__class__.sql_dir, test_case.__class__.template_dir,
            "query04.sql")
        original_ans_file_path = os.path.join(
            os.path.dirname(
                sys.modules[test_case.__class__.__module__].__file__),
            test_case.__class__.ans_dir, test_case.__class__.template_dir,
            "query04.ans")
        self.assertEqual(test_case.sql_file, sql_file_path)
        self.assertEqual(test_case.ans_file, ans_file_path)
        self.assertEqual(test_case._original_sql_file, original_sql_file_path)
        self.assertEqual(test_case._original_ans_file, original_ans_file_path)
        self.assertTrue(os.path.exists(test_case.sql_file))
        self.assertTrue(os.path.exists(test_case.ans_file))
        self.assertTrue(os.path.exists(test_case._original_sql_file))
        self.assertTrue(os.path.exists(test_case._original_ans_file))

        # Template test case sql file should exists
        sql_file_path = os.path.join(test_case.get_out_dir(),
                                     "MockSQLTemplateTestCase",
                                     "template_query04.sql")
        self.assertTrue(os.path.exists(sql_file_path))
        sql_file_data = None
        with open(sql_file_path, 'r') as sql_file_object:
            sql_file_data = sql_file_object.read()
        self.assertTrue(sql_file_data is not None)
        # Correct substitution
        self.assertTrue('my_percent' in sql_file_data)
        # Error in python code
        self.assertTrue('my_at@' in sql_file_data)
        # Error in sql template
        self.assertTrue('&AMP' in sql_file_data)

        # Template test case ans file should exists
        ans_file_path = os.path.join(test_case.get_out_dir(),
                                     "MockSQLTemplateTestCase",
                                     "template_query05.ans")
        self.assertTrue(os.path.exists(ans_file_path))
        ans_file_data = None
        with open(ans_file_path, 'r') as sql_file_object:
            ans_file_data = sql_file_object.read()
        self.assertTrue(ans_file_data is not None)
        # Correct substitution
        self.assertTrue('my_percent' in ans_file_data)
        # Error in python code
        self.assertTrue('my_at@' in ans_file_data)
        # Error in ans template
        self.assertTrue('&AMP' in ans_file_data)

        # Cleanup
        dir_path = os.path.join(test_case.get_out_dir(),
                                "MockSQLTemplateTestCase")
        self.assertTrue(os.path.exists(dir_path))
        shutil.rmtree(dir_path)
Exemple #11
0
 def test_explicit_test_fixtures_through_loading(self):
     test_loader = TINCTestLoader()
     test_suite = test_loader.loadTestsFromTestCase(MockSQLTestCase)
     # 4 tests for 3 sqls in the directory and 1 explicit test method
     self.assertEqual(test_suite.countTestCases(), 4)