Exemplo n.º 1
0
 def test_ffmpeg_commiters(self):
     res_list = feature_extractor.extract_all_measures_from_file(
         "test_data" + os.sep + "FFmpeg_FFmpeg.log", None)[1]["authors_ts"]
     oracle_ts = self.oracles['FFmpeg']['commiters'].tolist()
     self.assertEqual(len(res_list), len(oracle_ts))
     for i, res in enumerate(res_list):
         self.assertEqual(res, oracle_ts[i], f'It is {res} but should be {oracle_ts[i]} at {i}')
Exemplo n.º 2
0
 def test_feature_extraction_mysql(self):
     fv_obj = feature_extractor.extract_all_measures_from_file("test_data" + os.sep + "mysql_mysql-server.log", None)[0]["integrations"]
     fv = fv_obj.to_dict()
     self.assertEqual(923, fv["duration"])
     self.assertEqual(140096, fv["sum_y"])
     self.assertEqual(347, fv["max_y_pos"])
     self.assertEqual(485, fv["max_y"])
     self.assertEqual(485, fv["PG_count"])
     self.assertEqual(437, fv["NG_count"])
     self.assertEqual(-46.2173913043478, fv["avg_NG"])
Exemplo n.º 3
0
 def test_feature_extraction_pyccflex_integrations(self):
     fv_obj = feature_extractor.extract_all_measures_from_file("test_data" + os.sep + "py-ccflex.log", None)[0]["integrations"]
     fv = fv_obj.to_dict()
     measure = 'integrations'
     self.assertEqual(self.feature_oracle('py-ccflex', measure,'duration'), fv["duration"])
     self.assertEqual(self.feature_oracle('py-ccflex', measure,'sum_y'), fv["sum_y"])
     self.assertEqual(self.feature_oracle('py-ccflex', measure,'max_y_pos'), fv["max_y_pos"])
     self.assertEqual(self.feature_oracle('py-ccflex', measure,'max_y'), fv["max_y"])
     self.assertEqual(self.feature_oracle('py-ccflex', measure,'PG_count'), fv["PG_count"])
     self.assertEqual(self.feature_oracle('py-ccflex', measure,'NG_count'), fv["NG_count"])
     self.assertEqual(self.feature_oracle('py-ccflex', measure,'avg_NG'), fv["avg_NG"])
Exemplo n.º 4
0
 def test_feature_extraction_ffmpeg_merges(self):
     fv_obj = feature_extractor.extract_all_measures_from_file("test_data" + os.sep + "FFmpeg_FFmpeg.log", None)[0]["merges"]
     fv = fv_obj.to_dict()
     measure = 'merges'
     self.assertEqual(self.feature_oracle('FFmpeg', measure,'duration'), fv["duration"])
     self.assertEqual(self.feature_oracle('FFmpeg', measure,'sum_y'), fv["sum_y"])
     self.assertEqual(self.feature_oracle('FFmpeg', measure,'max_y_pos'), fv["max_y_pos"])
     self.assertEqual(self.feature_oracle('FFmpeg', measure,'PG_count'), fv["PG_count"])
     self.assertEqual(self.feature_oracle('FFmpeg', measure,'NG_count'), fv["NG_count"])
     self.assertEqual(self.feature_oracle('FFmpeg', measure,'max_y'), fv["max_y"])
     self.assertEqual(self.feature_oracle('FFmpeg', measure,'avg_NG'), fv["avg_NG"])
Exemplo n.º 5
0
def features(args):
    if len(args) < 3:
        return mustIncludeRepoLocation()
    if (len(args) < 4):
        return mustIncludeGitLogLocation()
    if (len(args) < 5):
        return mustIncludeOutputLocation()
    if (len(args) < 6):
        return mustIncludeTSLocation()

    repoDir = args[2]
    output_git_file = args[3]
    output_file = args[4]
    output_ts_file = args[5]

    if repoDir != "-log_file":
        generateGitLog(repoDir, output_git_file)

    arr = feature_extractor.extract_all_measures_from_file(
        output_git_file, output_ts_file)

    with open(output_file, "w") as file:
        csv_writer = csv.writer(file,
                                quoting=csv.QUOTE_NONE,
                                lineterminator='\n')
        ready_to_write_headers = ["measure"
                                  ] + arr[0]["integrations"].keys_order()
        csv_writer.writerow(ready_to_write_headers)
        for measure in sorted(arr[0].keys()):
            feature_vector = arr[0][measure]
            feature_vector_values = []
            feature_vector_dict = feature_vector.to_dict()
            for feature in sorted(feature_vector_dict.keys()):
                feature_vector_values.append(feature_vector_dict[feature])
            ready_to_write_list = [measure] + feature_vector_values
            csv_writer.writerow(ready_to_write_list)
    return operationComplete()