Exemple #1
0
    def test_garbage_file_collection(self):
        event = multiprocessing.Event()
        event.clear()

        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        env.enable_auth(self.test_workspace)

        server_access = codechecker.start_server(self.codechecker_cfg, event)
        server_access['viewer_port'] \
            = self.codechecker_cfg['viewer_port']
        server_access['viewer_product'] \
            = self.codechecker_cfg['viewer_product']

        codechecker.add_test_package_product(server_access,
                                             self.test_workspace)

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        self.__create_test_dir()
        files_in_report_before = self.__get_files_in_report()

        self.__rename_project_dir()

        files_in_report_after = self.__get_files_in_report()

        event.set()
        time.sleep(5)

        event.clear()
        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        codechecker.start_server(self.codechecker_cfg, event)
        codechecker.login(self.codechecker_cfg, self.test_workspace, 'cc',
                          'test')

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        self.assertEqual(len(files_in_report_before & files_in_report_after),
                         0)

        for file_id in files_in_report_before:
            f = self._cc_client.getSourceFileData(file_id, False, None)
            self.assertIsNone(f.fileId)

        event.set()
        time.sleep(5)
Exemple #2
0
def setup_package():
    """Setup the environment for the tests then start the server."""

    global TEST_WORKSPACE
    TEST_WORKSPACE = env.get_workspace('ssl')

    os.environ['TEST_WORKSPACE'] = TEST_WORKSPACE

    test_config = {}

    # Setup environment variables for the test cases.
    host_port_cfg = {
        'viewer_host': 'localhost',
        'viewer_port': env.get_free_port(),
        'viewer_product': 'ssl'
    }

    test_env = env.test_env(TEST_WORKSPACE)

    codechecker_cfg = {
        'check_env': test_env,
        'workspace': TEST_WORKSPACE,
        'checkers': []
    }

    codechecker_cfg.update(host_port_cfg)
    test_config['codechecker_cfg'] = codechecker_cfg

    # Export configuration for the tests.
    env.export_test_cfg(TEST_WORKSPACE, test_config)

    # Enable SSL
    # ON travis auto-test fails because due to the environment
    # self signed certs are not accepted
    # [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
    # Operation not permitted
    # Will need to solve this to re-enable SSL in this test.
    # env.enable_ssl(TEST_WORKSPACE)

    # Enable authentication and start the CodeChecker server.
    env.enable_auth(TEST_WORKSPACE)
    print("Starting server to get results")
    _start_server(codechecker_cfg, test_config, False)
Exemple #3
0
def setup_package():
    """Setup the environment for the tests then start the server."""

    global TEST_WORKSPACE
    TEST_WORKSPACE = env.get_workspace('authentication')

    os.environ['TEST_WORKSPACE'] = TEST_WORKSPACE

    test_config = {}

    # Setup environment variables for the test cases.
    host_port_cfg = {
        'viewer_host': 'localhost',
        'viewer_port': env.get_free_port(),
        'viewer_product': 'authentication'
    }

    test_env = env.test_env(TEST_WORKSPACE)

    codechecker_cfg = {
        'check_env': test_env,
        'workspace': TEST_WORKSPACE,
        'checkers': []
    }

    codechecker_cfg.update(host_port_cfg)

    codechecker_cfg['run_names'] = []

    test_config['codechecker_cfg'] = codechecker_cfg

    # Export configuration for the tests.
    env.export_test_cfg(TEST_WORKSPACE, test_config)

    # Enable authentication and start the CodeChecker server.
    env.enable_auth(TEST_WORKSPACE)

    print("Starting server to get results")
    codechecker.start_server(codechecker_cfg, __STOP_SERVER)

    codechecker.add_test_package_product(host_port_cfg, TEST_WORKSPACE)
Exemple #4
0
def setup_package():
    """Setup the environment for the tests then start the server."""

    global TEST_WORKSPACE
    TEST_WORKSPACE = env.get_workspace('ssl')

    os.environ['TEST_WORKSPACE'] = TEST_WORKSPACE

    test_config = {}

    # Setup environment variables for the test cases.
    host_port_cfg = {'viewer_host': 'localhost',
                     'viewer_port': env.get_free_port(),
                     'viewer_product': 'ssl'}

    test_env = env.test_env(TEST_WORKSPACE)

    codechecker_cfg = {
        'check_env': test_env,
        'workspace': TEST_WORKSPACE,
        'checkers': []
    }

    codechecker_cfg.update(host_port_cfg)
    test_config['codechecker_cfg'] = codechecker_cfg

    # Export configuration for the tests.
    env.export_test_cfg(TEST_WORKSPACE, test_config)

    # Enable SSL
    # ON travis auto-test fails because due to the environment
    # self signed certs are not accepted
    # [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
    # Operation not permitted
    # Will need to solve this to re-enable SSL in this test.
    # env.enable_ssl(TEST_WORKSPACE)

    # Enable authentication and start the CodeChecker server.
    env.enable_auth(TEST_WORKSPACE)
    print("Starting server to get results")
    codechecker.start_server(codechecker_cfg, __STOP_SERVER)
Exemple #5
0
def setup_package():
    """Setup the environment for the tests then start the server."""

    global TEST_WORKSPACE
    TEST_WORKSPACE = env.get_workspace('authentication')

    os.environ['TEST_WORKSPACE'] = TEST_WORKSPACE

    test_config = {}

    # Setup environment variables for the test cases.
    host_port_cfg = {'viewer_host': 'localhost',
                     'viewer_port': env.get_free_port(),
                     'viewer_product': 'authentication'}

    test_env = env.test_env(TEST_WORKSPACE)

    codechecker_cfg = {
        'check_env': test_env,
        'workspace': TEST_WORKSPACE,
        'checkers': []
    }

    codechecker_cfg.update(host_port_cfg)

    codechecker_cfg['run_names'] = []

    test_config['codechecker_cfg'] = codechecker_cfg

    # Export configuration for the tests.
    env.export_test_cfg(TEST_WORKSPACE, test_config)

    # Enable authentication and start the CodeChecker server.
    env.enable_auth(TEST_WORKSPACE)

    print("Starting server to get results")
    codechecker.start_server(codechecker_cfg, __STOP_SERVER)
    def test_garbage_file_collection(self):
        event = multiprocessing.Event()
        event.clear()

        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        env.enable_auth(self.test_workspace)

        server_access = codechecker.start_server(self.codechecker_cfg, event)
        server_access['viewer_port'] \
            = self.codechecker_cfg['viewer_port']
        server_access['viewer_product'] \
            = self.codechecker_cfg['viewer_product']

        codechecker.add_test_package_product(server_access,
                                             self.test_workspace)

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        self.__create_test_dir()
        files_in_report_before = self.__get_files_in_report()

        # Checker severity levels.
        self.__check_serverity_of_reports()

        self.__rename_project_dir()

        # Delete previous analysis report directory.
        rmtree(self.codechecker_cfg['reportdir'])

        files_in_report_after = self.__get_files_in_report()

        event.set()
        time.sleep(5)

        event.clear()

        # Change severity level of core.DivideZero to LOW.
        with io.open(self.workspace_severity_cfg, 'r+') as severity_cgf_file:
            severity_map = json.load(severity_cgf_file)
            severity_map['core.DivideZero'] = 'LOW'

            severity_cgf_file.seek(0)
            severity_cgf_file.truncate()
            severity_cgf_file.write(unicode(json.dumps(severity_map)))

        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        codechecker.start_server(self.codechecker_cfg, event)
        codechecker.login(self.codechecker_cfg, self.test_workspace, 'cc',
                          'test')

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        self.assertEqual(len(files_in_report_before & files_in_report_after),
                         0)

        for file_id in files_in_report_before:
            f = self._cc_client.getSourceFileData(file_id, False, None)
            self.assertIsNone(f.fileId)

        # Checker severity levels.
        self.__check_serverity_of_reports()

        event.set()
        time.sleep(5)
Exemple #7
0
    def test_garbage_file_collection(self):
        event = multiprocessing.Event()
        event.clear()

        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        env.enable_auth(self.test_workspace)

        server_access = codechecker.start_server(self.codechecker_cfg, event)
        server_access['viewer_port'] \
            = self.codechecker_cfg['viewer_port']
        server_access['viewer_product'] \
            = self.codechecker_cfg['viewer_product']

        codechecker.add_test_package_product(server_access,
                                             self.test_workspace)

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        run_name1 = 'db_cleanup_test'
        run_name2 = f'{run_name1}2'

        self.__create_test_dir()

        # Store the results.
        codechecker.check_and_store(self.codechecker_cfg, run_name1,
                                    self.test_dir)

        # Store the results to a different run too to see if we remove only one
        # run, comments and review statuses not cleared.
        codechecker.check_and_store(self.codechecker_cfg, run_name2,
                                    self.test_dir)

        run_id1 = self.__get_run_id([run_name1])
        report = self._cc_client.getRunResults(None, 1, 0, [], None, None,
                                               False)[0]

        report_hash = report.bugHash
        report_id = report.reportId

        # Add a new comment.
        comment = CommentData(author='anybody', message='Msg')
        success = self._cc_client.addComment(report_id, comment)
        self.assertTrue(success)

        # Change review status.
        success = self._cc_client.changeReviewStatus(report_id,
                                                     ReviewStatus.CONFIRMED,
                                                     'Real bug')
        self.assertTrue(success)

        # Remove the first storage.
        self._cc_client.removeRun(run_id1, None)

        # Comments and review statuses are not cleared, because the second
        # run results still reference them.
        run_id2 = self.__get_run_id([run_name2])
        r_filter = ReportFilter(reviewStatus=[ReviewStatus.CONFIRMED])
        run_results = self._cc_client.getRunResults([run_id2], 1, 0, None,
                                                    r_filter, None, False)
        self.assertTrue(run_results)

        comments = self._cc_client.getComments(run_results[0].reportId)
        self.assertTrue(comments)

        # Remove the second run too, so it will cleanup the unused commments
        # and review statuses.
        self._cc_client.removeRun(run_id2, None)

        # Store results again and check that previous comments and review
        # statuses are gone.
        files_in_report_before = self.__get_files_in_report(run_name1)

        r_filter = ReportFilter(reportHash=[report_hash])
        report = self._cc_client.getRunResults(None, 1, 0, None, r_filter,
                                               None, False)[0]
        report_id = report.reportId

        comments = self._cc_client.getComments(report_id)
        self.assertFalse(comments)

        r_filter = ReportFilter(reviewStatus=[ReviewStatus.CONFIRMED])
        run_results = self._cc_client.getRunResults(None, 1, 0, None, r_filter,
                                                    None, False)
        self.assertFalse(run_results)

        # Checker severity levels.
        self.__check_serverity_of_reports(run_name1)

        self.__rename_project_dir()

        # Delete previous analysis report directory.
        rmtree(self.codechecker_cfg['reportdir'])

        files_in_report_after = self.__get_files_in_report(run_name1)

        event.set()

        event.clear()

        # Change severity level of core.DivideZero to LOW.
        with open(self.workspace_severity_cfg,
                  'r+',
                  encoding='utf-8',
                  errors='ignore') as severity_cgf_file:
            severity_map = json.load(severity_cgf_file)
            severity_map['core.DivideZero'] = 'LOW'

            severity_cgf_file.seek(0)
            severity_cgf_file.truncate()
            severity_cgf_file.write(str(json.dumps(severity_map)))

        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        codechecker.start_server(self.codechecker_cfg, event)
        codechecker.login(self.codechecker_cfg, self.test_workspace, 'cc',
                          'test')

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        self.assertEqual(len(files_in_report_before & files_in_report_after),
                         0)

        for file_id in files_in_report_before:
            f = self._cc_client.getSourceFileData(file_id, False, None)
            self.assertIsNone(f.fileId)

        # Checker severity levels.
        self.__check_serverity_of_reports(run_name1)

        event.set()
    def test_garbage_file_collection(self):
        event = multiprocessing.Event()
        event.clear()

        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        env.enable_auth(self.test_workspace)

        server_access = codechecker.start_server(self.codechecker_cfg, event)
        server_access['viewer_port'] \
            = self.codechecker_cfg['viewer_port']
        server_access['viewer_product'] \
            = self.codechecker_cfg['viewer_product']

        codechecker.add_test_package_product(server_access,
                                             self.test_workspace)

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        self.__create_test_dir()
        files_in_report_before = self.__get_files_in_report()

        # Checker severity levels.
        self.__check_serverity_of_reports()

        self.__rename_project_dir()

        # Delete previous analysis report directory.
        rmtree(self.codechecker_cfg['reportdir'])

        files_in_report_after = self.__get_files_in_report()

        event.set()

        event.clear()

        # Change severity level of core.DivideZero to LOW.
        with io.open(self.workspace_severity_cfg, 'r+') as severity_cgf_file:
            severity_map = json.load(severity_cgf_file)
            severity_map['core.DivideZero'] = 'LOW'

            severity_cgf_file.seek(0)
            severity_cgf_file.truncate()
            severity_cgf_file.write(unicode(json.dumps(severity_map)))

        self.codechecker_cfg['viewer_port'] = env.get_free_port()
        env.export_test_cfg(self.test_workspace,
                            {'codechecker_cfg': self.codechecker_cfg})

        codechecker.start_server(self.codechecker_cfg,
                                 event)
        codechecker.login(self.codechecker_cfg,
                          self.test_workspace,
                          'cc',
                          'test')

        self._cc_client = env.setup_viewer_client(self.test_workspace)
        self.assertIsNotNone(self._cc_client)

        self.assertEqual(len(files_in_report_before & files_in_report_after),
                         0)

        for file_id in files_in_report_before:
            f = self._cc_client.getSourceFileData(file_id, False, None)
            self.assertIsNone(f.fileId)

        # Checker severity levels.
        self.__check_serverity_of_reports()

        event.set()