summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2004-05-04 17:01:00 -0400
committerNathan Binkert <binkertn@umich.edu>2004-05-04 17:01:00 -0400
commit25a358983a31167e048b19dd21bc1ec872890a74 (patch)
treefc275ade79d5237ef873131f39471b93f2732bc2 /test
parent1eb08bcf896e6973b6e0e317b483804e6639f067 (diff)
downloadgem5-25a358983a31167e048b19dd21bc1ec872890a74.tar.xz
Major stats package cleanup
Add support for generic visitors for stats and use them to implement independent output functions. Support for mysql output and some initial code for hacking on mysql output with python arch/alpha/pseudo_inst.cc: base/hybrid_pred.cc: base/hybrid_pred.hh: base/sat_counter.cc: base/sat_counter.hh: cpu/simple_cpu/simple_cpu.cc: kern/tru64/tru64_events.cc: sim/main.cc: sim/process.cc: sim/process.hh: sim/sim_events.cc: sim/sim_object.cc: sim/system.hh: update for changes in stats package base/statistics.cc: move the python output code to base/stats/puthon.(cc|hh) and reimplement it as a visitor. move the text output code to base/stats/text.(cc|hh) and reimplement it as a visitor. move the database stuff into base/stats/statdb.(cc|hh) and get rid of the class. Put everything as globals in the Statistics::Database namespace. allocate unique ids for all stats. directly implement the check routine and get rid of the various dumping routines since they're now in separate files. make sure that no two stats have the same name clean up some loops base/statistics.hh: major changes to the statistics package again lots of code was factored out of statistics.hh into several separate files in base/stats/ (this will continue) There are now two Stat package types Result and Counter that are specified to allow the user to keep the counted type separate from the result type. They are currently both doubles but that's an experiment. There is no more per stat ability to set the type. Statistics::Counter is not the same as Counter! Implement a visitor for statistics output so that new output types can be implemented independently from the stats package itself. Add a unique id to each stat so that it can be used to keep track of stats more simply. This number can also be used in debugging problems with stats. Tweak the bucket size stuff a bit to make it work better. fixed VectorDist size bug cpu/memtest/memtest.cc: Fix up for changes in stats package Don't use value() since it doesn't work with binning. If you want a number as a stat, and to use it in the program itself, you really want two separate variables, one that's a stat, and one that's not. cpu/memtest/memtest.hh: Fix up for changes in stats package test/Makefile: Try to build stuff now that directories matter test/stattest.cc: test all new output types choose which one with command line options --HG-- extra : convert_revision : e3a3f5f0828c67c0e2de415d936ad240adaddc89
Diffstat (limited to 'test')
-rw-r--r--test/Makefile94
-rw-r--r--test/stattest.cc81
2 files changed, 104 insertions, 71 deletions
diff --git a/test/Makefile b/test/Makefile
index d62dba64a..bf4200ba3 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -5,81 +5,61 @@ CXX?= g++
CURDIR?= $(shell /bin/pwd)
SRCDIR?= ..
-TARGET?= alpha
-
-TEST_SRCDIR?= $(SRCDIR)/test
-ARCH_SRCDIR?= $(SRCDIR)/arch/$(TARGET)
-BASE_SRCDIR?= $(SRCDIR)/base
-SIM_SRCDIR?= $(SRCDIR)/sim
-CACHE_SRCDIR?= $(SRCDIR)/sim/cache
-OLD_SRCDIR= $(SRCDIR)/old
-
-vpath % $(TEST_SRCDIR)
-vpath % $(BASE_SRCDIR)
-vpath % $(SIM_SRCDIR)
-vpath % $(CACHE_SRCDIR)
-vpath % $(OLD_SRCDIR)
CCFLAGS= -g -O0 -MMD -I. -I$(SRCDIR) -I- -DTRACING_ON=0
+MYSQL= -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
+
+VPATH=$(SRCDIR)
default:
@echo "You must specify a target"
-targetarch:
- ln -s ../arch/$(TARGET) targetarch
-
-bitvectest: bitvectest.o
- $(CXX) $(LFLAGS) -o $@ $^
+bitvectest: test/bitvectest.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-circletest: circletest.o circlebuf.o
- $(CXX) $(LFLAGS) -o $@ $^
+circletest: test/circletest.cc base/circlebuf.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-cprintftest: cprintftest.o cprintf.o
- $(CXX) $(LFLAGS) -o $@ $^
+cprintftest: test/cprintftest.cc base/cprintf.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-initest: initest.o str.o inifile.o cprintf.o
- $(CXX) $(LFLAGS) -o $@ $^
+initest: test/initest.cc base/str.cc base/inifile.cc base/cprintf.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-lrutest: lru_test.o
- $(CXX) $(LFLAGS) -o $@ $^
+lrutest: test/lru_test.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-nmtest: nmtest.o object_file.o symtab.o misc.o str.o
- $(CXX) $(LFLAGS) -o $@ $^
+nmtest: test/nmtest.cc base/object_file.cc base/symtab.cc base/misc.cc base/str.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-offtest: offtest.o
- $(CXX) $(LFLAGS) -o $@ $^
+offtest: test/offtest.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-rangetest: rangetest.o range.o str.o
- $(CXX) $(LFLAGS) -o $@ $^
+rangetest: test/rangetest.cc base/range.cc base/str.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-stattest: cprintf.o hostinfo.o misc.o python.o statistics.o stattest.o \
- str.o time.o
- $(CXX) $(LFLAGS) -o $@ $^
+STATTEST+= base/cprintf.cc base/hostinfo.cc base/misc.cc base/mysql.cc
+STATTEST+= base/python.cc base/str.cc base/time.cc
+STATTEST+= base/statistics.cc base/stats/mysql.cc base/stats/python.cc
+STATTEST+= base/stats/statdb.cc base/stats/text.cc base/stats/visit.cc
+STATTEST+= test/stattest.cc
+stattest: $(STATTEST)
+ $(CXX) $(CCFLAGS) $(MYSQL) -o $@ $^
-strnumtest: strnumtest.o str.o
- $(CXX) $(LFLAGS) -o $@ $^
+strnumtest: test/strnumtest.cc base/str.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-symtest: misc.o symtest.o symtab.o str.o
- $(CXX) $(LFLAGS) -o $@ $^
+symtest: test/symtest.cc base/misc.cc base/symtab.cc base/str.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-tokentest: tokentest.o str.o
- $(CXX) $(LFLAGS) -o $@ $^
+tokentest: test/tokentest.cc base/str.cc
+ $(CXX) $(CCFLAGS) -o $@ $^
-tracetest: tracetest.o trace.o trace_flags.o cprintf.o str.o misc.o
- $(CXX) $(LFLAGS) -o $@ $^
+TRACE+=test/tracetest.cc base/trace.cc base/trace_flags.cc base/cprintf.cc
+TRACE+=base/str.cc base/misc.cc
+tracetest: $(TRACE)
+ $(CXX) $(CCFLAGS) -o $@ $^
clean:
- @rm -f *.o *.d *test *~ .#* *.core core
+ @rm -f *test *~ .#* *.core core
.PHONY: clean
-
-# C++ Compilation
-%.o: %.cc
- @echo '$(CXX) $(CCFLAGS) -c $(notdir $<) -o $@'
- @$(CXX) $(CCFLAGS) -c $< -o $@
-
-# C Compilation
-%.o: %.c
- @echo '$(CC) $(CCFLAGS) -c $(notdir $<) -o $@'
- @$(CC) $(CCFLAGS) -c $< -o $@
-
--include *.d
diff --git a/test/stattest.cc b/test/stattest.cc
index 8dd8eeb8e..7bf355c0e 100644
--- a/test/stattest.cc
+++ b/test/stattest.cc
@@ -35,6 +35,9 @@
#include "base/cprintf.hh"
#include "base/misc.hh"
#include "base/statistics.hh"
+#include "base/stats/text.hh"
+#include "base/stats/python.hh"
+#include "base/stats/mysql.hh"
#include "sim/host.hh"
using namespace std;
@@ -46,14 +49,14 @@ Tick ticksPerSecond = ULL(2000000000);
Scalar<> s1;
Scalar<> s2;
Average<> s3;
-Scalar<Counter, MainBin> s4;
-Vector<Counter, MainBin> s5;
-Distribution<Counter, MainBin> s6;
-Vector<Counter, MainBin> s7;
+Scalar<MainBin> s4;
+Vector<MainBin> s5;
+Distribution<MainBin> s6;
+Vector<MainBin> s7;
AverageVector<> s8;
StandardDeviation<> s9;
AverageDeviation<> s10;
-Scalar<Counter> s11;
+Scalar<> s11;
Distribution<> s12;
VectorDistribution<> s13;
VectorStandardDeviation<> s14;
@@ -71,6 +74,8 @@ Formula f7;
MainBin bin1("bin1");
MainBin bin2("bin2");
+ostream *outputStream = &cout;
+
double
testfunc()
{
@@ -89,26 +94,57 @@ usage()
{
panic("incorrect usage.\n"
"usage:\n"
- "\t%s [-v]\n", progname);
+ "\t%s [-p <python file>] [-t [-c] [-d]]\n", progname);
}
int
main(int argc, char *argv[])
{
+ bool descriptions = false;
+ bool compat = false;
+ bool text = false;
+ string pyfile;
+ string mysql_name;
+ string mysql_host;
+ string mysql_user = "binkertn";
+ string mysql_passwd;
+
char c;
progname = argv[0];
- PrintDescriptions = false;
- while ((c = getopt(argc, argv, "v")) != -1) {
- cprintf("c == %c\n", c);
+ while ((c = getopt(argc, argv, "cdh:P:p:s:tu:")) != -1) {
switch (c) {
- case 'v':
- PrintDescriptions = true;
+ case 'c':
+ compat = true;
+ break;
+ case 'd':
+ descriptions = true;
+ break;
+ case 'h':
+ mysql_host = optarg;
+ break;
+ case 'P':
+ mysql_passwd = optarg;
+ break;
+ case 'p':
+ pyfile = optarg;
+ break;
+ case 's':
+ mysql_name = optarg;
+ break;
+ case 't':
+ text = true;
+ break;
+ case 'u':
+ mysql_user = optarg;
break;
default:
usage();
}
}
+ if (!text && (compat || descriptions))
+ usage();
+
s5.init(5);
s6.init(1, 100, 13);
s7.init(7);
@@ -214,6 +250,8 @@ main(int argc, char *argv[])
.flags(total)
.subname(0, "sub0")
.subname(1, "sub1")
+ .ysubname(0, "y0")
+ .ysubname(1, "y1")
;
f1
@@ -509,9 +547,24 @@ main(int argc, char *argv[])
s12.sample(100);
-// dump(cout, mode_simplescalar);
- python_start("/tmp/stats.py");
- python_dump("stattest", "all");
+ if (text) {
+ Text out(cout);
+ out.descriptions = descriptions;
+ out.compat = compat;
+ out();
+ }
+
+ if (!pyfile.empty()) {
+ Python out(pyfile);
+ out();
+ }
+
+ if (!mysql_name.empty()) {
+ MySql out;
+ out.connect(mysql_host, mysql_user, mysql_passwd, "m5stats",
+ mysql_name, "test");
+ out();
+ }
return 0;
}