Skip to content

Commit bbb8890

Browse files
Merge pull request #3 from Alex-Lian/main
support single ctest
2 parents da6c4c4 + f015cef commit bbb8890

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

core/run_ctest/parse_input.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,15 @@ def extract_conf_diff(path):
105105
print(">>>>[ctest_core] config diff: {} (param, value) pairs".format(len(conf_diff)))
106106
return conf_diff
107107

108+
def extract_conf_diff_from_pair(param_value_dict):
109+
default_conf_map = load_default_conf(DEFAULT_CONF_FILE[project])
110+
conf_diff = {}
111+
for param, value in param_value_dict.items():
112+
if param not in default_conf_map:
113+
print(">>>>[ctest_core] parameter {} in input config file is not in default config file".format(param))
114+
if param not in default_conf_map or value != default_conf_map[param]:
115+
conf_diff[param] = value
116+
return conf_diff
108117

109118
def parse_mapping(path):
110119
print(">>>>[ctest_core] loading mapping {}".format(path))

core/run_ctest/run_single_ctest.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/python3
2+
import sys, time
3+
4+
from program_input import p_input
5+
from main import test_conf_file
6+
from parse_input import *
7+
8+
project = p_input["project"]
9+
mapping = parse_mapping(p_input["mapping_path"])
10+
from run_test import run_test_batch
11+
12+
def main(argv):
13+
print(">>>>[ctest_core] running project {}".format(project))
14+
s = time.time()
15+
ctestname = argv[1]
16+
param_value_dict = {}
17+
for i in range(2, len(argv)):
18+
param, value = argv[i].split('=')
19+
param_value_dict[param] = value
20+
test_input = extract_conf_diff_from_pair(param_value_dict)
21+
test_conf_file(test_input, ctestname)
22+
print(">>>>[ctest_core] total time: {} seconds".format(time.time() - s))
23+
24+
def test_conf_file(test_input, ctestname):
25+
params = test_input.keys()
26+
associated_test_map = {p: [ctestname] for p in params if ctestname in mapping[p]}
27+
print(">>>>[ctest_core] # parameters associated with the run: {}".format(len(params)))
28+
tr = run_test_batch(test_input, associated_test_map)
29+
tup = tr.ran_tests_and_time.pop()
30+
test, _ = tup.split("\t")
31+
if test in tr.failed_tests:
32+
print(">>>>[ctest_core] The single ctest FAIL")
33+
else:
34+
print(">>>>[ctest_core] The single ctest PASS")
35+
36+
if __name__ == "__main__":
37+
main(sys.argv)

core/run_ctest/show_pset.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/python3
2+
import sys, json
3+
4+
def main(argv):
5+
mapping = json.load(open("../../data/ctest_mapping/opensource-zookeeper-server.json"))
6+
count = 0
7+
for key, value in mapping.items():
8+
if argv[1] in value:
9+
count += 1
10+
print("p", count," ", key, sep='')
11+
print("Number of parameter(s) is", count)
12+
13+
if __name__ == "__main__":
14+
main(sys.argv)

0 commit comments

Comments
 (0)