Esempio n. 1
0
    def test_get_all(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        n_matcher = NodeMatcher(test_driller.graph)
        r_matcher = RelationshipMatcher(test_driller.graph)

        f_miner = FileMiner(test_driller.graph, n_matcher, r_matcher)

        all_files = f_miner.get_all()
        assert len(all_files) == 6

        # get readme file
        readme = f_miner.query(name='README.MD')
        assert readme['name'] == 'README.MD'

        # get file history
        f_hash = 'f85f4af5b20ddd617f93da13c7789a65fb972e68a8d634d5f253abab'
        update_history = f_miner.get_change_history(f_hash)
        assert len(update_history) == 3

        # test file get methods
        current_m = f_miner.get_current_methods(f_hash)
        assert len(current_m) == 2

        test_driller.clean()
Esempio n. 2
0
    def test_rel_index(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        # test that all relationships were indexed
        rel_matcher = RelationshipMatcher(test_driller.graph)

        all_branch = list(rel_matcher.match(None, "BranchCommit"))
        assert len(all_branch) == 8

        all_authorship = list(rel_matcher.match(None, "Author"))
        assert len(all_authorship) == 8

        all_parent = list(rel_matcher.match(None, "Parent"))
        assert len(all_parent) == 8

        all_updadedfile = list(rel_matcher.match(None, "UpdateFile"))
        assert len(all_updadedfile) == 9

        all_hasmethod = list(rel_matcher.match(None, "Method"))
        assert len(all_hasmethod) == 5

        all_updatemethod = list(rel_matcher.match(None, "UpdateMethod"))
        assert len(all_updatemethod) == 9

        test_driller.clean()
Esempio n. 3
0
    def test_indexing(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_init.yml'))
        test_driller.drill_batch()
        records = [r for r in test_driller.graph.run(
            "MATCH(n) RETURN n")]
        assert len(records) == 22

        test_driller.clean()
Esempio n. 4
0
    def test_index_save(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_init.yml'))
        test_driller.drill_batch(save_path='data/graphrepo.json')
        records = [r for r in test_driller.graph.run(
            "MATCH(n) RETURN n")]
        assert len(records) == 22

        test_driller.clean()

        test_driller.index_from_file(file_path='data/graphrepo.json')
        records = [r for r in test_driller.graph.run(
            "MATCH(n) RETURN n")]
        assert len(records) == 22

        os.remove('data/graphrepo.json')
        test_driller.clean()
Esempio n. 5
0
    def test_get_all(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        n_matcher = NodeMatcher(test_driller.graph)
        r_matcher = RelationshipMatcher(test_driller.graph)

        m_miner = MethodMiner(test_driller.graph, n_matcher, r_matcher)

        all_methods = m_miner.get_all()
        assert len(all_methods) == 5
        m_hash = '417e845b5d0702fcb26954809407f0919dfa229308e520de01e0cf6e'
        met = m_miner.query(hash=m_hash)
        assert met['name'] == 'get_name'

        history = m_miner.get_change_history(m_hash)
        assert len(history) == 2

        test_driller.clean()
Esempio n. 6
0
    def test_get_all(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        n_matcher = NodeMatcher(test_driller.graph)
        r_matcher = RelationshipMatcher(test_driller.graph)

        m_miner = MethodMiner(test_driller.graph, n_matcher, r_matcher)

        all_methods = m_miner.get_all()
        assert len(all_methods) == 5
        m_hash = '45ce8dcd8b0cd8ed42e592ce828ab6418e7c79713b8dc99805bcb7ea'
        met = m_miner.query(hash=m_hash)
        assert met['name'] == 'get_name'

        history = m_miner.get_change_history(m_hash)
        assert len(history) == 2

        test_driller.clean()
    def test_gets(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        st_date = datetime.strptime('14 May, 2020 00:00',
                                    '%d %B, %Y %H:%M').timestamp()
        end_date = datetime.strptime('15 May, 2020 02:00',
                                     '%d %B, %Y %H:%M').timestamp()

        n_matcher = NodeMatcher(test_driller.graph)
        r_matcher = RelationshipMatcher(test_driller.graph)

        com_miner = CommitMiner(test_driller.graph, n_matcher, r_matcher)

        all_com = com_miner.get_all()
        assert len(all_com) == 8

        all_com_dates = com_miner.get_between_dates(st_date, end_date)
        assert len(all_com_dates) == 8

        c_files = com_miner.get_commit_files(
            'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d')
        assert len(c_files) == 3

        c_file_updates = com_miner.get_commit_file_updates(
            'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d')
        assert len(c_file_updates) == 3

        c_methods = com_miner.get_commit_methods(
            'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d')
        assert len(c_methods) == 3

        c_method_updates = com_miner.get_commit_method_updates(
            'ad98f8594c15b1ebc4be4f20d849bcc0edf69ec574c33dfd84b7792d')
        assert len(c_method_updates) == 3

        test_driller.clean()
Esempio n. 8
0
    def test_nodes_index(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        # test that all nodes were indexed
        node_matcher = NodeMatcher(test_driller.graph)
        all_commits = list(node_matcher.match("Commit"))
        assert len(all_commits) == 8

        all_devs = list(node_matcher.match("Developer"))
        assert len(all_devs) == 2

        all_files = list(node_matcher.match("File"))
        assert len(all_files) == 6

        all_methods = list(node_matcher.match("Method"))
        assert len(all_methods) == 5

        all_branches = list(node_matcher.match("Branch"))
        assert len(all_branches) == 1

        test_driller.clean()
Esempio n. 9
0
    def test_custom_attributes_rel(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        node_matcher = NodeMatcher(test_driller.graph)
        rel_matcher = RelationshipMatcher(test_driller.graph)

        commit = node_matcher.match(
            "Commit",
            hash="aa6fa504ccb0fa919acc3cb31e510dc2048314eb0656f34babada15c"
        ).first()
        assert commit['is_merge'] == 0

        update_file_rel = rel_matcher.match([commit], "UpdateFile").first()
        assert update_file_rel['complexity'] == 2
        assert update_file_rel['nloc'] == 8
        assert update_file_rel['old_path'] == 'gr_test/default_class.py'
        assert update_file_rel['path'] == 'gr_test/default_class.py'
        assert update_file_rel['token_count'] == 42
        assert update_file_rel['type'] == 'MODIFY'
        assert update_file_rel['removed'] == 6
        assert update_file_rel['added'] == 0

        update_method_rel = rel_matcher.match([commit], 'UpdateMethod').first()
        # assert update_method_rel['type'] == 'DELETE'
        assert update_method_rel['nloc'] == 5
        assert update_method_rel['complexity'] == 2
        assert update_method_rel['token_count'] == 21
        assert update_method_rel['length'] == 5
        assert update_method_rel['fan_in'] == 0
        assert update_method_rel['fan_out'] == 0
        assert update_method_rel['start_line'] == 11
        assert update_method_rel['end_line'] == 15

        test_driller.clean()
Esempio n. 10
0
    def test_gets(self):
        folder = os.path.dirname(os.path.abspath(__file__))
        test_driller = Driller(os.path.join(folder, 'cnfg_simple.yml'))
        test_driller.drill_batch()

        st_date = datetime.strptime(
            "14 May, 2020 00:00", '%d %B, %Y %H:%M').timestamp()
        end_date = datetime.strptime(
            "15 May, 2020 02:00", '%d %B, %Y %H:%M').timestamp()

        n_matcher = NodeMatcher(test_driller.graph)
        r_matcher = RelationshipMatcher(test_driller.graph)

        dev_miner = DeveloperMiner(test_driller.graph, n_matcher, r_matcher)

        all_devs = dev_miner.get_all()
        assert len(all_devs) == 2

        all_commits = dev_miner.get_commits(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb")
        assert len(all_commits) == 7

        all_com_id = dev_miner.get_commits(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb",
            project_id=test_driller.config.ct.project_id
        )
        assert len(all_com_id) == 7

        all_com_id_dates = dev_miner.get_commits(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb",
            project_id=test_driller.config.ct.project_id,
            start_date=st_date,
            end_date=end_date
        )
        assert len(all_com_id_dates) == 7

        all_files = dev_miner.get_files(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb"
        )
        assert len(all_files) == 6

        all_files_id_dates = dev_miner.get_files(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb",
            project_id=test_driller.config.ct.project_id,
            start_date=st_date,
            end_date=end_date
        )
        assert len(all_files_id_dates) == 6

        files_updates = dev_miner.get_files_updates(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb"
        )
        assert len(files_updates) == 9

        files_updates_id_dates = dev_miner.get_files_updates(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb",
            project_id=test_driller.config.ct.project_id,
            start_date=st_date,
            end_date=end_date
        )
        assert len(files_updates_id_dates) == 9

        all_methods = dev_miner.get_methods(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb"
        )
        assert len(all_methods) == 5

        all_methods_id_dates = dev_miner.get_methods(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb",
            project_id=test_driller.config.ct.project_id,
            start_date=st_date,
            end_date=end_date
        )
        assert len(all_methods_id_dates) == 5

        method_updates = dev_miner.get_method_updates(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb"
        )
        assert len(method_updates) == 9

        method_updates_id_dates = dev_miner.get_method_updates(
            dev_hash="bb1a1830d2f4f4d13151827aa1072ed43bd8738a139da332e1ee3ddb",
            project_id=test_driller.config.ct.project_id,
            start_date=st_date,
            end_date=end_date
        )
        assert len(method_updates_id_dates) == 9

        test_driller.clean()