Dropped csv field prefixes in scripts
The original idea was to allow merging a whole bunch of different csv results into a single lfs.csv file, but this never really happened. It's much easier to operate on smaller context-specific csv files, where the field prefix: - Doesn't really add much information - Requires more typing - Is confusing in how it doesn't match the table field names. We can always use summary.py -fcode_size=size to add prefixes when necessary anyways.
This commit is contained in:
@@ -246,15 +246,15 @@ stack-diff: $(CI)
|
|||||||
## Find function sizes
|
## Find function sizes
|
||||||
.PHONY: funcs
|
.PHONY: funcs
|
||||||
funcs: SUMMARYFLAGS+=-S
|
funcs: SUMMARYFLAGS+=-S
|
||||||
funcs: \
|
funcs: SHELL=/bin/bash
|
||||||
$(BUILDDIR)/lfs.code.csv \
|
funcs: $(BUILDDIR)/lfs.code.csv $(BUILDDIR)/lfs.stack.csv
|
||||||
$(BUILDDIR)/lfs.data.csv \
|
$(strip ./scripts/summary.py \
|
||||||
$(BUILDDIR)/lfs.stack.csv
|
<(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \
|
||||||
$(strip ./scripts/summary.py $^ \
|
-fcode=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
-bfunction \
|
<(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \
|
||||||
-fcode=code_size \
|
-fstack=limit -q $(SUMMARYFLAGS) -o-) \
|
||||||
-fdata=data_size \
|
-bfunction -fcode -fstack \
|
||||||
-fstack=stack_limit --max=stack \
|
--max=stack \
|
||||||
$(SUMMARYFLAGS))
|
$(SUMMARYFLAGS))
|
||||||
|
|
||||||
## Compare function sizes
|
## Compare function sizes
|
||||||
@@ -262,17 +262,20 @@ funcs: \
|
|||||||
funcs-diff: SHELL=/bin/bash
|
funcs-diff: SHELL=/bin/bash
|
||||||
funcs-diff: $(OBJ) $(CI)
|
funcs-diff: $(OBJ) $(CI)
|
||||||
$(strip ./scripts/summary.py \
|
$(strip ./scripts/summary.py \
|
||||||
<(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \
|
<(./scripts/summary.py \
|
||||||
<(./scripts/data.py $(OBJ) -q $(DATAFLAGS) -o-) \
|
<(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \
|
||||||
<(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \
|
-fcode=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
-bfunction \
|
<(./scripts/summary.py \
|
||||||
-fcode=code_size \
|
<(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \
|
||||||
-fdata=data_size \
|
-fstack=limit -q $(SUMMARYFLAGS) -o-) \
|
||||||
-fstack=stack_limit --max=stack \
|
-bfunction -fcode -fstack \
|
||||||
|
--max=stack \
|
||||||
$(SUMMARYFLAGS) -d <(./scripts/summary.py \
|
$(SUMMARYFLAGS) -d <(./scripts/summary.py \
|
||||||
$(BUILDDIR)/lfs.code.csv \
|
<(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \
|
||||||
$(BUILDDIR)/lfs.data.csv \
|
-fcode=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
$(BUILDDIR)/lfs.stack.csv \
|
<(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \
|
||||||
|
-fstack=limit -q $(SUMMARYFLAGS) -o-) \
|
||||||
|
-fcode -fstack \
|
||||||
-q $(SUMMARYFLAGS) -o-))
|
-q $(SUMMARYFLAGS) -o-))
|
||||||
|
|
||||||
## Find struct sizes
|
## Find struct sizes
|
||||||
@@ -333,37 +336,57 @@ perfbd-diff: $(BENCH_TRACE)
|
|||||||
|
|
||||||
## Find a summary of compile-time sizes
|
## Find a summary of compile-time sizes
|
||||||
.PHONY: summary sizes
|
.PHONY: summary sizes
|
||||||
|
summary sizes: SHELL=/bin/bash
|
||||||
summary sizes: \
|
summary sizes: \
|
||||||
$(BUILDDIR)/lfs.code.csv \
|
$(BUILDDIR)/lfs.code.csv \
|
||||||
$(BUILDDIR)/lfs.data.csv \
|
$(BUILDDIR)/lfs.data.csv \
|
||||||
$(BUILDDIR)/lfs.stack.csv \
|
$(BUILDDIR)/lfs.stack.csv \
|
||||||
$(BUILDDIR)/lfs.structs.csv
|
$(BUILDDIR)/lfs.structs.csv
|
||||||
$(strip ./scripts/summary.py $^ \
|
$(strip ./scripts/summary.py \
|
||||||
-fcode=code_size \
|
<(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \
|
||||||
-fdata=data_size \
|
-fcode=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
-fstack=stack_limit --max=stack \
|
<(./scripts/summary.py $(BUILDDIR)/lfs.data.csv \
|
||||||
-fstructs=struct_size \
|
-fdata=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
-Y $(SUMMARYFLAGS))
|
<(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \
|
||||||
|
-fstack=limit -q $(SUMMARYFLAGS) -o-) \
|
||||||
|
<(./scripts/summary.py $(BUILDDIR)/lfs.structs.csv \
|
||||||
|
-fstructs=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
|
-bfunction -fcode -fdata -fstack -fstructs \
|
||||||
|
--max=stack \
|
||||||
|
-Y $(SUMMARYFLAGS) \
|
||||||
|
| cut -c 25-)
|
||||||
|
|
||||||
## Compare compile-time sizes
|
## Compare compile-time sizes
|
||||||
.PHONY: summary-diff sizes-diff
|
.PHONY: summary-diff sizes-diff
|
||||||
summary-diff sizes-diff: SHELL=/bin/bash
|
summary-diff sizes-diff: SHELL=/bin/bash
|
||||||
summary-diff sizes-diff: $(OBJ) $(CI)
|
summary-diff sizes-diff: $(OBJ) $(CI)
|
||||||
$(strip ./scripts/summary.py \
|
$(strip ./scripts/summary.py \
|
||||||
<(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \
|
<(./scripts/summary.py \
|
||||||
<(./scripts/data.py $(OBJ) -q $(DATAFLAGS) -o-) \
|
<(./scripts/code.py $(OBJ) -q $(CODEFLAGS) -o-) \
|
||||||
<(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \
|
-fcode=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
<(./scripts/structs.py $(OBJ) -q $(STRUCTSFLAGS) -o-) \
|
<(./scripts/summary.py \
|
||||||
-fcode=code_size \
|
<(./scripts/data.py $(OBJ) -q $(DATAFLAGS) -o-) \
|
||||||
-fdata=data_size \
|
-fdata=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
-fstack=stack_limit --max=stack \
|
<(./scripts/summary.py \
|
||||||
-fstructs=struct_size \
|
<(./scripts/stack.py $(CI) -q $(STACKFLAGS) -o-) \
|
||||||
-Y $(SUMMARYFLAGS) -d <(./scripts/summary.py \
|
-fstack=limit -q $(SUMMARYFLAGS) -o-) \
|
||||||
$(BUILDDIR)/lfs.code.csv \
|
<(./scripts/summary.py \
|
||||||
$(BUILDDIR)/lfs.data.csv \
|
<(./scripts/structs.py $(OBJ) -q $(STRUCTSFLAGS) -o-) \
|
||||||
$(BUILDDIR)/lfs.stack.csv \
|
-fstructs=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
$(BUILDDIR)/lfs.structs.csv \
|
-bfunction -fcode -fdata -fstack -fstructs \
|
||||||
-q $(SUMMARYFLAGS) -o-))
|
--max=stack \
|
||||||
|
-Y -p $(SUMMARYFLAGS) -d <(./scripts/summary.py \
|
||||||
|
<(./scripts/summary.py $(BUILDDIR)/lfs.code.csv \
|
||||||
|
-fcode=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
|
<(./scripts/summary.py $(BUILDDIR)/lfs.data.csv \
|
||||||
|
-fdata=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
|
<(./scripts/summary.py $(BUILDDIR)/lfs.stack.csv \
|
||||||
|
-fstack=limit -q $(SUMMARYFLAGS) -o-) \
|
||||||
|
<(./scripts/summary.py $(BUILDDIR)/lfs.structs.csv \
|
||||||
|
-fstructs=size -q $(SUMMARYFLAGS) -o-) \
|
||||||
|
-fcode -fdata -fstack -fstructs \
|
||||||
|
-q $(SUMMARYFLAGS) -o-) \
|
||||||
|
| cut -c 25-)
|
||||||
|
|
||||||
## Build the test-runner
|
## Build the test-runner
|
||||||
.PHONY: test-runner build-tests
|
.PHONY: test-runner build-tests
|
||||||
@@ -396,17 +419,14 @@ test-list list-tests: test-runner
|
|||||||
testmarks: SUMMARYFLAGS+=-spassed -Stime
|
testmarks: SUMMARYFLAGS+=-spassed -Stime
|
||||||
testmarks: $(TEST_CSV) $(BUILDDIR)/lfs.test.csv
|
testmarks: $(TEST_CSV) $(BUILDDIR)/lfs.test.csv
|
||||||
$(strip ./scripts/summary.py $(TEST_CSV) \
|
$(strip ./scripts/summary.py $(TEST_CSV) \
|
||||||
-bsuite \
|
-bsuite -fpassed -ftime \
|
||||||
-fpassed=test_passed \
|
|
||||||
-ftime=test_time \
|
|
||||||
$(SUMMARYFLAGS))
|
$(SUMMARYFLAGS))
|
||||||
|
|
||||||
## Compare test results against a previous run
|
## Compare test results against a previous run
|
||||||
.PHONY: testmarks-diff
|
.PHONY: testmarks-diff
|
||||||
testmarks-diff: $(TEST_CSV)
|
testmarks-diff: $(TEST_CSV)
|
||||||
$(strip ./scripts/summary.py $^ \
|
$(strip ./scripts/summary.py $^ \
|
||||||
-bsuite \
|
-bsuite -fpassed -ftime \
|
||||||
-fpassed=test_passed \
|
|
||||||
$(SUMMARYFLAGS) -d $(BUILDDIR)/lfs.test.csv)
|
$(SUMMARYFLAGS) -d $(BUILDDIR)/lfs.test.csv)
|
||||||
|
|
||||||
## Build the bench-runner
|
## Build the bench-runner
|
||||||
@@ -440,20 +460,14 @@ bench-list list-benches: bench-runner
|
|||||||
benchmarks: SUMMARYFLAGS+=-Serased -Sproged -Sreaded
|
benchmarks: SUMMARYFLAGS+=-Serased -Sproged -Sreaded
|
||||||
benchmarks: $(BENCH_CSV) $(BUILDDIR)/lfs.bench.csv
|
benchmarks: $(BENCH_CSV) $(BUILDDIR)/lfs.bench.csv
|
||||||
$(strip ./scripts/summary.py $(BENCH_CSV) \
|
$(strip ./scripts/summary.py $(BENCH_CSV) \
|
||||||
-bsuite \
|
-bsuite -freaded -fproged -ferased \
|
||||||
-freaded=bench_readed \
|
|
||||||
-fproged=bench_proged \
|
|
||||||
-ferased=bench_erased \
|
|
||||||
$(SUMMARYFLAGS))
|
$(SUMMARYFLAGS))
|
||||||
|
|
||||||
## Compare bench results against a previous run
|
## Compare bench results against a previous run
|
||||||
.PHONY: benchmarks-diff
|
.PHONY: benchmarks-diff
|
||||||
benchmarks-diff: $(BENCH_CSV)
|
benchmarks-diff: $(BENCH_CSV)
|
||||||
$(strip ./scripts/summary.py $^ \
|
$(strip ./scripts/summary.py $^ \
|
||||||
-bsuite \
|
-bsuite -freaded -fproged -ferased \
|
||||||
-freaded=bench_readed \
|
|
||||||
-fproged=bench_proged \
|
|
||||||
-ferased=bench_erased \
|
|
||||||
$(SUMMARYFLAGS) -d $(BUILDDIR)/lfs.bench.csv)
|
$(SUMMARYFLAGS) -d $(BUILDDIR)/lfs.bench.csv)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+7
-8
@@ -1058,12 +1058,12 @@ def run_stage(name, runner, bench_ids, stdout_, trace_, output_, **args):
|
|||||||
'suite': last_suite,
|
'suite': last_suite,
|
||||||
'case': last_case,
|
'case': last_case,
|
||||||
**last_defines,
|
**last_defines,
|
||||||
'bench_meas': meas,
|
'meas': meas,
|
||||||
'bench_iter': iter,
|
'iter': iter,
|
||||||
'bench_size': size,
|
'size': size,
|
||||||
'bench_readed': readed_,
|
'readed': readed_,
|
||||||
'bench_proged': proged_,
|
'proged': proged_,
|
||||||
'bench_erased': erased_})
|
'erased': erased_})
|
||||||
# keep track of total for summary
|
# keep track of total for summary
|
||||||
readed += readed_
|
readed += readed_
|
||||||
proged += proged_
|
proged += proged_
|
||||||
@@ -1239,8 +1239,7 @@ def run(runner, bench_ids=[], **args):
|
|||||||
if args.get('output'):
|
if args.get('output'):
|
||||||
output = BenchOutput(args['output'],
|
output = BenchOutput(args['output'],
|
||||||
['suite', 'case'],
|
['suite', 'case'],
|
||||||
['bench_meas', 'bench_iter', 'bench_size',
|
['meas', 'iter', 'size', 'readed', 'proged', 'erased'])
|
||||||
'bench_readed', 'bench_proged', 'bench_erased'])
|
|
||||||
|
|
||||||
# measure runtime
|
# measure runtime
|
||||||
start = time.time()
|
start = time.time()
|
||||||
|
|||||||
+8
-8
@@ -532,15 +532,15 @@ def main(obj_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('code_'+k in r and r['code_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in CodeResult._fields):
|
for k in CodeResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
results.append(CodeResult(
|
results.append(CodeResult(
|
||||||
**{k: r[k] for k in CodeResult._by
|
**{k: r[k] for k in CodeResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['code_'+k] for k in CodeResult._fields
|
**{k: r[k] for k in CodeResult._fields
|
||||||
if 'code_'+k in r and r['code_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -562,14 +562,14 @@ def main(obj_paths, *,
|
|||||||
with openio(args['output'], 'w') as f:
|
with openio(args['output'], 'w') as f:
|
||||||
writer = csv.DictWriter(f,
|
writer = csv.DictWriter(f,
|
||||||
(by if by is not None else CodeResult._by)
|
(by if by is not None else CodeResult._by)
|
||||||
+ ['code_'+k for k in (
|
+ [k for k in (
|
||||||
fields if fields is not None else CodeResult._fields)])
|
fields if fields is not None else CodeResult._fields)])
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for r in results:
|
for r in results:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
{k: getattr(r, k) for k in (
|
{k: getattr(r, k) for k in (
|
||||||
by if by is not None else CodeResult._by)}
|
by if by is not None else CodeResult._by)}
|
||||||
| {'code_'+k: getattr(r, k) for k in (
|
| {k: getattr(r, k) for k in (
|
||||||
fields if fields is not None else CodeResult._fields)})
|
fields if fields is not None else CodeResult._fields)})
|
||||||
|
|
||||||
# find previous results?
|
# find previous results?
|
||||||
@@ -583,15 +583,15 @@ def main(obj_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('code_'+k in r and r['code_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in CodeResult._fields):
|
for k in CodeResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
diff_results.append(CodeResult(
|
diff_results.append(CodeResult(
|
||||||
**{k: r[k] for k in CodeResult._by
|
**{k: r[k] for k in CodeResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['code_'+k] for k in CodeResult._fields
|
**{k: r[k] for k in CodeResult._fields
|
||||||
if 'code_'+k in r and r['code_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
+8
-10
@@ -604,17 +604,16 @@ def main(gcda_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('cov_'+k in r and r['cov_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in CovResult._fields):
|
for k in CovResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
results.append(CovResult(
|
results.append(CovResult(
|
||||||
**{k: r[k] for k in CovResult._by
|
**{k: r[k] for k in CovResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['cov_'+k]
|
**{k: r[k]
|
||||||
for k in CovResult._fields
|
for k in CovResult._fields
|
||||||
if 'cov_'+k in r
|
if k in r and r[k].strip()}))
|
||||||
and r['cov_'+k].strip()}))
|
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -636,14 +635,14 @@ def main(gcda_paths, *,
|
|||||||
with openio(args['output'], 'w') as f:
|
with openio(args['output'], 'w') as f:
|
||||||
writer = csv.DictWriter(f,
|
writer = csv.DictWriter(f,
|
||||||
(by if by is not None else CovResult._by)
|
(by if by is not None else CovResult._by)
|
||||||
+ ['cov_'+k for k in (
|
+ [k for k in (
|
||||||
fields if fields is not None else CovResult._fields)])
|
fields if fields is not None else CovResult._fields)])
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for r in results:
|
for r in results:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
{k: getattr(r, k) for k in (
|
{k: getattr(r, k) for k in (
|
||||||
by if by is not None else CovResult._by)}
|
by if by is not None else CovResult._by)}
|
||||||
| {'cov_'+k: getattr(r, k) for k in (
|
| {k: getattr(r, k) for k in (
|
||||||
fields if fields is not None else CovResult._fields)})
|
fields if fields is not None else CovResult._fields)})
|
||||||
|
|
||||||
# find previous results?
|
# find previous results?
|
||||||
@@ -657,17 +656,16 @@ def main(gcda_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('cov_'+k in r and r['cov_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in CovResult._fields):
|
for k in CovResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
diff_results.append(CovResult(
|
diff_results.append(CovResult(
|
||||||
**{k: r[k] for k in CovResult._by
|
**{k: r[k] for k in CovResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['cov_'+k]
|
**{k: r[k]
|
||||||
for k in CovResult._fields
|
for k in CovResult._fields
|
||||||
if 'cov_'+k in r
|
if k in r and r[k].strip()}))
|
||||||
and r['cov_'+k].strip()}))
|
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
+7
-7
@@ -536,8 +536,8 @@ def main(obj_paths, *,
|
|||||||
results.append(DataResult(
|
results.append(DataResult(
|
||||||
**{k: r[k] for k in DataResult._by
|
**{k: r[k] for k in DataResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['data_'+k] for k in DataResult._fields
|
**{k: r[k] for k in DataResult._fields
|
||||||
if 'data_'+k in r and r['data_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -559,14 +559,14 @@ def main(obj_paths, *,
|
|||||||
with openio(args['output'], 'w') as f:
|
with openio(args['output'], 'w') as f:
|
||||||
writer = csv.DictWriter(f,
|
writer = csv.DictWriter(f,
|
||||||
(by if by is not None else DataResult._by)
|
(by if by is not None else DataResult._by)
|
||||||
+ ['data_'+k for k in (
|
+ [k for k in (
|
||||||
fields if fields is not None else DataResult._fields)])
|
fields if fields is not None else DataResult._fields)])
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for r in results:
|
for r in results:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
{k: getattr(r, k) for k in (
|
{k: getattr(r, k) for k in (
|
||||||
by if by is not None else DataResult._by)}
|
by if by is not None else DataResult._by)}
|
||||||
| {'data_'+k: getattr(r, k) for k in (
|
| {k: getattr(r, k) for k in (
|
||||||
fields if fields is not None else DataResult._fields)})
|
fields if fields is not None else DataResult._fields)})
|
||||||
|
|
||||||
# find previous results?
|
# find previous results?
|
||||||
@@ -580,15 +580,15 @@ def main(obj_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('data_'+k in r and r['data_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in DataResult._fields):
|
for k in DataResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
diff_results.append(DataResult(
|
diff_results.append(DataResult(
|
||||||
**{k: r[k] for k in DataResult._by
|
**{k: r[k] for k in DataResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['data_'+k] for k in DataResult._fields
|
**{k: r[k] for k in DataResult._fields
|
||||||
if 'data_'+k in r and r['data_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
+8
-8
@@ -1064,15 +1064,15 @@ def report(perf_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('perf_'+k in r and r['perf_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in PerfResult._fields):
|
for k in PerfResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
results.append(PerfResult(
|
results.append(PerfResult(
|
||||||
**{k: r[k] for k in PerfResult._by
|
**{k: r[k] for k in PerfResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['perf_'+k] for k in PerfResult._fields
|
**{k: r[k] for k in PerfResult._fields
|
||||||
if 'perf_'+k in r and r['perf_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -1094,14 +1094,14 @@ def report(perf_paths, *,
|
|||||||
with openio(args['output'], 'w') as f:
|
with openio(args['output'], 'w') as f:
|
||||||
writer = csv.DictWriter(f,
|
writer = csv.DictWriter(f,
|
||||||
(by if by is not None else PerfResult._by)
|
(by if by is not None else PerfResult._by)
|
||||||
+ ['perf_'+k for k in (
|
+ [k for k in (
|
||||||
fields if fields is not None else PerfResult._fields)])
|
fields if fields is not None else PerfResult._fields)])
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for r in results:
|
for r in results:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
{k: getattr(r, k) for k in (
|
{k: getattr(r, k) for k in (
|
||||||
by if by is not None else PerfResult._by)}
|
by if by is not None else PerfResult._by)}
|
||||||
| {'perf_'+k: getattr(r, k) for k in (
|
| {k: getattr(r, k) for k in (
|
||||||
fields if fields is not None else PerfResult._fields)})
|
fields if fields is not None else PerfResult._fields)})
|
||||||
|
|
||||||
# find previous results?
|
# find previous results?
|
||||||
@@ -1115,15 +1115,15 @@ def report(perf_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('perf_'+k in r and r['perf_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in PerfResult._fields):
|
for k in PerfResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
diff_results.append(PerfResult(
|
diff_results.append(PerfResult(
|
||||||
**{k: r[k] for k in PerfResult._by
|
**{k: r[k] for k in PerfResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['perf_'+k] for k in PerfResult._fields
|
**{k: r[k] for k in PerfResult._fields
|
||||||
if 'perf_'+k in r and r['perf_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
+8
-9
@@ -1042,15 +1042,15 @@ def report(obj_path='', trace_paths=[], *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('perfbd_'+k in r and r['perfbd_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in PerfBdResult._fields):
|
for k in PerfBdResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
results.append(PerfBdResult(
|
results.append(PerfBdResult(
|
||||||
**{k: r[k] for k in PerfBdResult._by
|
**{k: r[k] for k in PerfBdResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['perfbd_'+k] for k in PerfBdResult._fields
|
**{k: r[k] for k in PerfBdResult._fields
|
||||||
if 'perfbd_'+k in r and r['perfbd_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -1072,14 +1072,14 @@ def report(obj_path='', trace_paths=[], *,
|
|||||||
with openio(args['output'], 'w') as f:
|
with openio(args['output'], 'w') as f:
|
||||||
writer = csv.DictWriter(f,
|
writer = csv.DictWriter(f,
|
||||||
(by if by is not None else PerfBdResult._by)
|
(by if by is not None else PerfBdResult._by)
|
||||||
+ ['perfbd_'+k for k in (
|
+ [k for k in (
|
||||||
fields if fields is not None else PerfBdResult._fields)])
|
fields if fields is not None else PerfBdResult._fields)])
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for r in results:
|
for r in results:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
{k: getattr(r, k) for k in (
|
{k: getattr(r, k) for k in (
|
||||||
by if by is not None else PerfBdResult._by)}
|
by if by is not None else PerfBdResult._by)}
|
||||||
| {'perfbd_'+k: getattr(r, k) for k in (
|
| {k: getattr(r, k) for k in (
|
||||||
fields if fields is not None else PerfBdResult._fields)})
|
fields if fields is not None else PerfBdResult._fields)})
|
||||||
|
|
||||||
# find previous results?
|
# find previous results?
|
||||||
@@ -1093,16 +1093,15 @@ def report(obj_path='', trace_paths=[], *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('perfbd_'+k in r and r['perfbd_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in PerfBdResult._fields):
|
for k in PerfBdResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
diff_results.append(PerfBdResult(
|
diff_results.append(PerfBdResult(
|
||||||
**{k: r[k] for k in PerfBdResult._by
|
**{k: r[k] for k in PerfBdResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['perfbd_'+k] for k in PerfBdResult._fields
|
**{k: r[k] for k in PerfBdResult._fields
|
||||||
if 'perfbd_'+k in r
|
if k in r and r[k].strip()}))
|
||||||
and r['perfbd_'+k].strip()}))
|
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
+8
-8
@@ -558,15 +558,15 @@ def main(ci_paths,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('stack_'+k in r and r['stack_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in StackResult._fields):
|
for k in StackResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
results.append(StackResult(
|
results.append(StackResult(
|
||||||
**{k: r[k] for k in StackResult._by
|
**{k: r[k] for k in StackResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['stack_'+k] for k in StackResult._fields
|
**{k: r[k] for k in StackResult._fields
|
||||||
if 'stack_'+k in r and r['stack_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -588,14 +588,14 @@ def main(ci_paths,
|
|||||||
with openio(args['output'], 'w') as f:
|
with openio(args['output'], 'w') as f:
|
||||||
writer = csv.DictWriter(f,
|
writer = csv.DictWriter(f,
|
||||||
(by if by is not None else StackResult._by)
|
(by if by is not None else StackResult._by)
|
||||||
+ ['stack_'+k for k in (
|
+ [k for k in (
|
||||||
fields if fields is not None else StackResult._fields)])
|
fields if fields is not None else StackResult._fields)])
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for r in results:
|
for r in results:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
{k: getattr(r, k) for k in (
|
{k: getattr(r, k) for k in (
|
||||||
by if by is not None else StackResult._by)}
|
by if by is not None else StackResult._by)}
|
||||||
| {'stack_'+k: getattr(r, k) for k in (
|
| {k: getattr(r, k) for k in (
|
||||||
fields if fields is not None else StackResult._fields)})
|
fields if fields is not None else StackResult._fields)})
|
||||||
|
|
||||||
# find previous results?
|
# find previous results?
|
||||||
@@ -609,15 +609,15 @@ def main(ci_paths,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('stack_'+k in r and r['stack_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in StackResult._fields):
|
for k in StackResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
diff_results.append(StackResult(
|
diff_results.append(StackResult(
|
||||||
**{k: r[k] for k in StackResult._by
|
**{k: r[k] for k in StackResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['stack_'+k] for k in StackResult._fields
|
**{k: r[k] for k in StackResult._fields
|
||||||
if 'stack_'+k in r and r['stack_'+k].strip()}))
|
if k in r and r[k].strip()}))
|
||||||
except TypeError:
|
except TypeError:
|
||||||
raise
|
raise
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
+8
-10
@@ -481,17 +481,16 @@ def main(obj_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('struct_'+k in r and r['struct_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in StructResult._fields):
|
for k in StructResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
results.append(StructResult(
|
results.append(StructResult(
|
||||||
**{k: r[k] for k in StructResult._by
|
**{k: r[k] for k in StructResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['struct_'+k]
|
**{k: r[k]
|
||||||
for k in StructResult._fields
|
for k in StructResult._fields
|
||||||
if 'struct_'+k in r
|
if k in r and r[k].strip()}))
|
||||||
and r['struct_'+k].strip()}))
|
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -513,14 +512,14 @@ def main(obj_paths, *,
|
|||||||
with openio(args['output'], 'w') as f:
|
with openio(args['output'], 'w') as f:
|
||||||
writer = csv.DictWriter(f,
|
writer = csv.DictWriter(f,
|
||||||
(by if by is not None else StructResult._by)
|
(by if by is not None else StructResult._by)
|
||||||
+ ['struct_'+k for k in (
|
+ [k for k in (
|
||||||
fields if fields is not None else StructResult._fields)])
|
fields if fields is not None else StructResult._fields)])
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
for r in results:
|
for r in results:
|
||||||
writer.writerow(
|
writer.writerow(
|
||||||
{k: getattr(r, k) for k in (
|
{k: getattr(r, k) for k in (
|
||||||
by if by is not None else StructResult._by)}
|
by if by is not None else StructResult._by)}
|
||||||
| {'struct_'+k: getattr(r, k) for k in (
|
| {k: getattr(r, k) for k in (
|
||||||
fields if fields is not None else StructResult._fields)})
|
fields if fields is not None else StructResult._fields)})
|
||||||
|
|
||||||
# find previous results?
|
# find previous results?
|
||||||
@@ -534,17 +533,16 @@ def main(obj_paths, *,
|
|||||||
if not all(k in r and r[k] in vs for k, vs in defines):
|
if not all(k in r and r[k] in vs for k, vs in defines):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not any('struct_'+k in r and r['struct_'+k].strip()
|
if not any(k in r and r[k].strip()
|
||||||
for k in StructResult._fields):
|
for k in StructResult._fields):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
diff_results.append(StructResult(
|
diff_results.append(StructResult(
|
||||||
**{k: r[k] for k in StructResult._by
|
**{k: r[k] for k in StructResult._by
|
||||||
if k in r and r[k].strip()},
|
if k in r and r[k].strip()},
|
||||||
**{k: r['struct_'+k]
|
**{k: r[k]
|
||||||
for k in StructResult._fields
|
for k in StructResult._fields
|
||||||
if 'struct_'+k in r
|
if k in r and r[k].strip()}))
|
||||||
and r['struct_'+k].strip()}))
|
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
|
|||||||
+4
-4
@@ -1034,8 +1034,8 @@ def run_stage(name, runner, test_ids, stdout_, trace_, output_, **args):
|
|||||||
'suite': suite,
|
'suite': suite,
|
||||||
'case': case,
|
'case': case,
|
||||||
**defines,
|
**defines,
|
||||||
'test_passed': '1/1',
|
'passed': '1/1',
|
||||||
'test_time': '%.6f' % (
|
'time': '%.6f' % (
|
||||||
time.time() - last_time)})
|
time.time() - last_time)})
|
||||||
elif op == 'skipped':
|
elif op == 'skipped':
|
||||||
locals.seen_perms += 1
|
locals.seen_perms += 1
|
||||||
@@ -1096,7 +1096,7 @@ def run_stage(name, runner, test_ids, stdout_, trace_, output_, **args):
|
|||||||
output_.writerow({
|
output_.writerow({
|
||||||
'suite': suite,
|
'suite': suite,
|
||||||
'case': case,
|
'case': case,
|
||||||
'test_passed': '0/1',
|
'passed': '0/1',
|
||||||
**defines})
|
**defines})
|
||||||
|
|
||||||
# race condition for multiple failures?
|
# race condition for multiple failures?
|
||||||
@@ -1230,7 +1230,7 @@ def run(runner, test_ids=[], **args):
|
|||||||
if args.get('output'):
|
if args.get('output'):
|
||||||
output = TestOutput(args['output'],
|
output = TestOutput(args['output'],
|
||||||
['suite', 'case'],
|
['suite', 'case'],
|
||||||
['test_passed', 'test_time'])
|
['passed', 'time'])
|
||||||
|
|
||||||
# measure runtime
|
# measure runtime
|
||||||
start = time.time()
|
start = time.time()
|
||||||
|
|||||||
Reference in New Issue
Block a user