data-aggregator: allow resulttype aggregation for all benchmarks

This change additionally allows to create a resulttype/occurrences summary
over all benchmarks in the database, instead of specifying a single one.

Change-Id: I4fc7fd735300168f1e4f9e24a51aba469a7269a8
This commit is contained in:
Horst Schirmeier
2016-02-14 17:29:07 +01:00
parent 5851f5d848
commit 584ef57aab
2 changed files with 46 additions and 8 deletions

View File

@ -1,8 +1,8 @@
#!/bin/bash
set -e
if [ ! $# -eq 3 ]; then
echo "usage: $0 DATABASE VARIANT BENCHMARK" >&2
if [ $# -ne 3 -a $# -ne 1 ]; then
echo "usage: $0 DATABASE [ VARIANT BENCHMARK ]" >&2
exit 1
fi
@ -12,6 +12,20 @@ BENCHMARK=$3
# add "-t" for more readable output
MYSQL="mysql -B --quick $DATABASE"
if [ -z "$VARIANT" ]; then
$MYSQL << EOT
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
SELECT v.benchmark, v.variant, r.resulttype, SUM((t.time2-t.time1+1) * t.width) AS occurrences
FROM result_GenericExperimentMessage r
INNER JOIN fspgroup g ON g.pilot_id=r.pilot_id
INNER JOIN trace t ON g.instr2=t.instr2
AND g.data_address=t.data_address
AND g.variant_id=t.variant_id
INNER JOIN variant v ON t.variant_id=v.id
GROUP BY v.id, r.resulttype
ORDER BY v.benchmark, v.variant, r.resulttype;
EOT
else
$MYSQL << EOT
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
SELECT r.resulttype, SUM((t.time2-t.time1+1) * t.width) AS occurrences
@ -26,3 +40,4 @@ $MYSQL << EOT
GROUP BY r.resulttype
ORDER BY r.resulttype ASC;
EOT
fi

View File

@ -1,8 +1,8 @@
#!/bin/bash
set -e
if [ ! $# -eq 3 ]; then
echo "usage: $0 DATABASE VARIANT BENCHMARK" >&2
if [ $# -ne 3 -a $# -ne 1 ]; then
echo "usage: $0 DATABASE [ VARIANT BENCHMARK ]" >&2
exit 1
fi
@ -12,6 +12,30 @@ BENCHMARK=$3
# add "-t" for more readable output
MYSQL="mysql -B --quick $DATABASE"
if [ -z "$VARIANT" ]; then
$MYSQL << EOT
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
SELECT v.benchmark, v.variant, r.resulttype,
SUM((t.time2-t.time1+1) * t.width)
/
(SELECT SUM(t.time2-t.time1+1)*t.width
FROM result_GenericExperimentMessage r
INNER JOIN fspgroup g ON g.pilot_id=r.pilot_id
INNER JOIN trace t ON g.instr2=t.instr2
AND g.data_address=t.data_address
AND g.variant_id=t.variant_id
WHERE t.variant_id = v.id -- refers to parent query
) AS coverage
FROM result_GenericExperimentMessage r
INNER JOIN fspgroup g ON g.pilot_id=r.pilot_id
INNER JOIN trace t ON g.instr2=t.instr2
AND g.data_address=t.data_address
AND g.variant_id=t.variant_id
INNER JOIN variant v ON t.variant_id=v.id
GROUP BY v.id, r.resulttype
ORDER BY v.benchmark, v.variant, r.resulttype;
EOT
else
$MYSQL << EOT
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
SELECT r.resulttype,
@ -23,9 +47,7 @@ $MYSQL << EOT
INNER JOIN trace t ON g.instr2=t.instr2
AND g.data_address=t.data_address
AND g.variant_id=t.variant_id
INNER JOIN variant v ON t.variant_id=v.id
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
WHERE t.variant_id = v.id -- refers to parent query
) AS coverage
FROM result_GenericExperimentMessage r
INNER JOIN fspgroup g ON g.pilot_id=r.pilot_id
@ -36,5 +58,6 @@ $MYSQL << EOT
WHERE v.variant="$VARIANT"
AND v.benchmark="$BENCHMARK"
GROUP BY r.resulttype
ORDER BY r.resulttype ASC;
ORDER BY r.resulttype;
EOT
fi