114 lines
3.9 KiB
Python
114 lines
3.9 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
import numpy as np
|
|
from numpy import *
|
|
import csv
|
|
import re
|
|
import MySQLdb
|
|
import os
|
|
logging.basicConfig(format="%(asctime)s : %(levelname)s : %(message)s", level=logging.INFO)
|
|
|
|
def ScanFiles(directory,prefix=None,postfix=None):
|
|
files_list=[]
|
|
|
|
for root, sub_dirs, files in os.walk(directory):
|
|
for special_file in files:
|
|
if postfix:
|
|
if special_file.endswith(postfix):
|
|
files_list.append(int(special_file[:-4]))
|
|
elif prefix:
|
|
if special_file.startswith(prefix):
|
|
files_list.append(os.path.join(root,special_file))
|
|
else:
|
|
files_list.append(os.path.join(root,special_file))
|
|
|
|
return files_list
|
|
##################
|
|
##parse job test##
|
|
##################
|
|
def ParseTest(rule,content):
|
|
values = []
|
|
for value in re.findall(rule,content):
|
|
values.append(value)
|
|
return values
|
|
|
|
def ParseJobTests(infile_path,repo_id,job_id,builds_id,cur):
|
|
try:
|
|
input_file = open("%s//%d//%d.txt"%(infile_path,repo_id,job_id),'rb')
|
|
job_content = input_file.read()
|
|
except IOError, e:
|
|
print "Mysql Error!", e;
|
|
|
|
#parse rule
|
|
running_command_rule = re.compile(r"Running command:([\s\S]+?)Run options")
|
|
running_command_rule_1 = re.compile(r"skips([\s\S]+?)Run options")
|
|
running_rule = re.compile(r"Running:([\s\S]+?)Finished")
|
|
run_option_seed_rule = re.compile(r"Run options: --seed ([0-9]+)")
|
|
finished_time_rule = re.compile(r"Finished in ([0-9.]+)s,")
|
|
runs_time_rule = re.compile(r"([0-9.]+) runs/s,")
|
|
assertions_time_rule = re.compile(r"([0-9.]+) assertions/s.")
|
|
runs_count_rule = re.compile(r"([0-9]+) runs,")
|
|
assertions_count_rule = re.compile(r"([0-9]+) assertions,")
|
|
failures_count_rule = re.compile(r"([0-9]+) failures,")
|
|
errors_count_rule = re.compile(r"([0-9]+) errors,")
|
|
skips_count_rule = re.compile(r"([0-9]+) skips")
|
|
|
|
#test data
|
|
running_command = []
|
|
try:
|
|
running_command.append(re.search(running_command_rule,job_content).group().replace("\"",""))
|
|
except AttributeError:
|
|
return
|
|
for running_command_t in re.findall(running_command_rule_1,job_content):
|
|
running_command.append(running_command_t.replace("\"",""))
|
|
running = ParseTest(running_rule,job_content)
|
|
run_option_seed = ParseTest(run_option_seed_rule,job_content)
|
|
finished_time = ParseTest(finished_time_rule,job_content)
|
|
runs_time = ParseTest(runs_time_rule,job_content)
|
|
assertions_time = ParseTest(assertions_time_rule,job_content)
|
|
runs_count = ParseTest(runs_count_rule,job_content)
|
|
assertions_count = ParseTest(assertions_count_rule,job_content)
|
|
failures_count = ParseTest(failures_count_rule,job_content)
|
|
errors_count = ParseTest(errors_count_rule,job_content)
|
|
skips_count = ParseTest(skips_count_rule,job_content)
|
|
print len(running_command)
|
|
#print len(running)
|
|
#print len(run_option_seed)
|
|
#print len(finished_time)
|
|
#print len(runs_time)
|
|
#print len(assertions_time)
|
|
#print len(runs_count)
|
|
#print len(assertions_count)
|
|
#print len(failures_count)
|
|
#print len(errors_count)
|
|
#print len(skips_count)
|
|
|
|
for i in range(0,len(runs_time)):
|
|
print "test id:"+str(i)
|
|
try:
|
|
query = "insert into ci_jobs_tests_yu (repo_id,builds_id,job_id,test_id,running_command,run_options,running,finished_time," \
|
|
"runs_time,assertions_time,runs_count,assertions_count,failures_count,errors_count,skips_count) " \
|
|
"values(%s,%s,%s,%s,\"%s\",%s,\"%s\",%s,%s,%s,%s,%s,%s,%s,%s)"%(repo_id,builds_id,job_id,i,running_command[i],
|
|
run_option_seed[i],running[i].replace("\"",""),finished_time[i],runs_time[i],assertions_time[i],runs_count[i],assertions_count[i],failures_count[i],
|
|
errors_count[i],skips_count[i])
|
|
cur.execute(query)
|
|
except IndexError, e:
|
|
return
|
|
|
|
|
|
|
|
##main###
|
|
#job_id=35469369
|
|
conn = MySQLdb.connect(host='localhost',user='root',passwd='',db='ci')
|
|
cur = conn.cursor()
|
|
repo_id = 1334
|
|
infile_path = "E://Young//CI//result//jobs_yu"
|
|
jobs_list = ScanFiles(infile_path,prefix=None,postfix=".txt")
|
|
for job_id in jobs_list:
|
|
GetParseJobTests(infile_path,repo_id,data[0],data[1],cur)
|
|
cur.close()
|
|
conn.close()
|
|
|