runtime: introduce build targets for running benchmarks
This introduces the "bench" build target, which can be used to run all benchmarks. It is also possible to run subsets of benchmarks with the "package/check" build targets by setting GOBENCH to a matching regex. From-SVN: r212212
This commit is contained in:
parent
25eff60deb
commit
ffa98da470
@ -1996,6 +1996,7 @@ BUILDPACKAGE = \
|
|||||||
$(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's/-go$$//'` -o $@ $$files
|
$(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's/-go$$//'` -o $@ $$files
|
||||||
|
|
||||||
GOTESTFLAGS =
|
GOTESTFLAGS =
|
||||||
|
GOBENCH =
|
||||||
|
|
||||||
# Check a package.
|
# Check a package.
|
||||||
CHECK = \
|
CHECK = \
|
||||||
@ -2015,6 +2016,8 @@ CHECK = \
|
|||||||
rm -f $@-testsum $@-testlog; \
|
rm -f $@-testsum $@-testlog; \
|
||||||
if test "$(USE_DEJAGNU)" = "yes"; then \
|
if test "$(USE_DEJAGNU)" = "yes"; then \
|
||||||
$(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
|
$(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
|
||||||
|
elif test "$(GOBENCH)" != ""; then \
|
||||||
|
$(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" --bench="$(GOBENCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
|
||||||
else \
|
else \
|
||||||
if $(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files) >>$@-testlog 2>&1; then \
|
if $(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files) >>$@-testlog 2>&1; then \
|
||||||
echo "PASS: $(@D)" >> $@-testlog; \
|
echo "PASS: $(@D)" >> $@-testlog; \
|
||||||
@ -3845,6 +3848,9 @@ check-am:
|
|||||||
check-multi:
|
check-multi:
|
||||||
$(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE)
|
$(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE)
|
||||||
|
|
||||||
|
bench:
|
||||||
|
-@$(MAKE) -k $(TEST_PACKAGES) GOBENCH=.
|
||||||
|
|
||||||
MOSTLYCLEAN_FILES = libgo.head libgo.sum.sep libgo.log.sep
|
MOSTLYCLEAN_FILES = libgo.head libgo.sum.sep libgo.log.sep
|
||||||
|
|
||||||
mostlyclean-local:
|
mostlyclean-local:
|
||||||
|
@ -2066,6 +2066,7 @@ BUILDPACKAGE = \
|
|||||||
$(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's/-go$$//'` -o $@ $$files
|
$(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's/-go$$//'` -o $@ $$files
|
||||||
|
|
||||||
GOTESTFLAGS =
|
GOTESTFLAGS =
|
||||||
|
GOBENCH =
|
||||||
|
|
||||||
# Check a package.
|
# Check a package.
|
||||||
CHECK = \
|
CHECK = \
|
||||||
@ -2085,6 +2086,8 @@ CHECK = \
|
|||||||
rm -f $@-testsum $@-testlog; \
|
rm -f $@-testsum $@-testlog; \
|
||||||
if test "$(USE_DEJAGNU)" = "yes"; then \
|
if test "$(USE_DEJAGNU)" = "yes"; then \
|
||||||
$(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
|
$(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
|
||||||
|
elif test "$(GOBENCH)" != ""; then \
|
||||||
|
$(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" --bench="$(GOBENCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
|
||||||
else \
|
else \
|
||||||
if $(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files) >>$@-testlog 2>&1; then \
|
if $(SHELL) $(srcdir)/testsuite/gotest --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files) >>$@-testlog 2>&1; then \
|
||||||
echo "PASS: $(@D)" >> $@-testlog; \
|
echo "PASS: $(@D)" >> $@-testlog; \
|
||||||
@ -6083,6 +6086,9 @@ check-am:
|
|||||||
check-multi:
|
check-multi:
|
||||||
$(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE)
|
$(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE)
|
||||||
|
|
||||||
|
bench:
|
||||||
|
-@$(MAKE) -k $(TEST_PACKAGES) GOBENCH=.
|
||||||
|
|
||||||
mostlyclean-local:
|
mostlyclean-local:
|
||||||
find . -name '*.lo' -print | xargs $(LIBTOOL) --mode=clean rm -f
|
find . -name '*.lo' -print | xargs $(LIBTOOL) --mode=clean rm -f
|
||||||
find . -name '*.$(OBJEXT)' -print | xargs rm -f
|
find . -name '*.$(OBJEXT)' -print | xargs rm -f
|
||||||
|
@ -36,6 +36,7 @@ dejagnu=no
|
|||||||
GOARCH=""
|
GOARCH=""
|
||||||
timeout=240
|
timeout=240
|
||||||
testname=""
|
testname=""
|
||||||
|
bench=""
|
||||||
trace=false
|
trace=false
|
||||||
while $loop; do
|
while $loop; do
|
||||||
case "x$1" in
|
case "x$1" in
|
||||||
@ -124,6 +125,15 @@ while $loop; do
|
|||||||
testname=`echo $1 | sed -e 's/^--testname=//'`
|
testname=`echo $1 | sed -e 's/^--testname=//'`
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
x--bench)
|
||||||
|
bench=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
x--bench=*)
|
||||||
|
bench=`echo $1 | sed -e 's/^--bench=//'`
|
||||||
|
shift
|
||||||
|
;;
|
||||||
x--trace)
|
x--trace)
|
||||||
trace=true
|
trace=true
|
||||||
shift
|
shift
|
||||||
@ -473,20 +483,28 @@ xno)
|
|||||||
fi
|
fi
|
||||||
${GL} *.o ${GOLIBS}
|
${GL} *.o ${GOLIBS}
|
||||||
|
|
||||||
if test "$trace" = "true"; then
|
if test "$bench" = ""; then
|
||||||
echo ./a.out -test.short -test.timeout=${timeout}s "$@"
|
if test "$trace" = "true"; then
|
||||||
fi
|
echo ./a.out -test.short -test.timeout=${timeout}s "$@"
|
||||||
./a.out -test.short -test.timeout=${timeout}s "$@" &
|
fi
|
||||||
pid=$!
|
./a.out -test.short -test.timeout=${timeout}s "$@" &
|
||||||
(sleep `expr $timeout + 10`
|
pid=$!
|
||||||
echo > gotest-timeout
|
(sleep `expr $timeout + 10`
|
||||||
echo "timed out in gotest" 1>&2
|
echo > gotest-timeout
|
||||||
kill -9 $pid) &
|
echo "timed out in gotest" 1>&2
|
||||||
alarmpid=$!
|
kill -9 $pid) &
|
||||||
wait $pid
|
alarmpid=$!
|
||||||
status=$?
|
wait $pid
|
||||||
if ! test -f gotest-timeout; then
|
status=$?
|
||||||
kill $alarmpid
|
if ! test -f gotest-timeout; then
|
||||||
|
kill $alarmpid
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if test "$trace" = "true"; then
|
||||||
|
echo ./a.out -test.run=^\$ -test.bench="${bench}" "$@"
|
||||||
|
fi
|
||||||
|
./a.out -test.run=^\$ -test.bench="${bench}" "$@"
|
||||||
|
status=$?
|
||||||
fi
|
fi
|
||||||
exit $status
|
exit $status
|
||||||
;;
|
;;
|
||||||
|
Loading…
Reference in New Issue
Block a user