git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Gummerer <t.gummerer@gmail.com>
To: gitster@pobox.com
Cc: trast@inf.ethz.ch, git@vger.kernel.org, t.gummerer@gmail.com
Subject: [PATCH v2 2/3] perf-lib: add cleanup option
Date: Mon, 23 Sep 2013 23:08:45 +0200	[thread overview]
Message-ID: <1379970526-27997-3-git-send-email-t.gummerer@gmail.com> (raw)
In-Reply-To: <1379970526-27997-1-git-send-email-t.gummerer@gmail.com>

Add a --cleanup for the performance tests.  This option can be used to
clean up the tested repository after each time the performance tests are
run.  The option can be specified for normal tests too, although it will
not do anything for them.  Use test_when_finished for those tests.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
---
 t/perf/README           | 11 ++++++++++-
 t/perf/perf-lib.sh      | 15 +++++++++++++++
 t/test-lib-functions.sh |  6 ++++++
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/t/perf/README b/t/perf/README
index 21abbaf..73a1d1c 100644
--- a/t/perf/README
+++ b/t/perf/README
@@ -123,7 +123,7 @@ tests, use
 		command2
 	'
 
-	test_perf [--prereq <prereq>] [--] 'descriptive string' '
+	test_perf [--prereq <prereq>] [--cleanup <cleanup>] [--] 'descriptive string' '
 		command1 &&
 		command2
 	'
@@ -133,6 +133,15 @@ tests are only executed if the prerequisite is fulfilled.  The modern
 version also allows to distinguish the message from the description
 and test script with --, in case the message starts with --.
 
+cleanup is another optional parameter to test_perf, which is executed
+after every run of the performance test.  It can specify actions to
+bring the repository to the original state, in order to be able to
+execute the exact same test multiple times, e.g:
+
+	test_perf --cleanup 'git reset' 'test performance of git add' '
+		  git add $somefile
+	'
+
 test_perf spawns a subshell, for lack of better options.  This means
 that
 
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index 6477d38..8ace4a3 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -176,6 +176,21 @@ test_perf () {
 				test_failure_ "$@"
 				break
 			fi
+			if ! test -z "$cleanup_action"; then
+				say >&3 "cleaning up: $cleanup_action"
+				if test_run_ "$cleanup_action"
+				then
+					if test -z "$verbose"; then
+						printf " c%s" "$i"
+					else
+						echo "* cleaning up run $i/$GIT_PERF_REPEAT_COUNT:"
+					fi
+				else
+					test -z $verbose && echo
+					test_failure_ "$@"
+					break
+				fi
+			fi
 		done
 		if test -z "$verbose"; then
 			echo " ok"
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 473b21d..4bad14f 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -360,6 +360,12 @@ test_expect_parse () {
 			test_prereq=$2
 			shift
 			;;
+		--cleanup)
+			test $# -gt 1 ||
+			error "bug in the test script: --cleanup needs a parameter"
+			cleanup_action=$2
+			shift
+			;;
 		--)
 			shift
 			break
-- 
1.8.3.4.1241.g1ce9896

  parent reply	other threads:[~2013-09-23 21:10 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-17 12:10 [PATCH 1/2] perf-lib: split starting the test from the execution Thomas Gummerer
2013-09-17 12:10 ` [PATCH 2/2] perf-lib: add test_perf_cleanup target Thomas Gummerer
2013-09-17 17:43   ` Junio C Hamano
2013-09-19 11:42     ` Thomas Gummerer
2013-09-19 17:19       ` Junio C Hamano
2013-09-19 19:52         ` Junio C Hamano
2013-09-19 20:11           ` Junio C Hamano
2013-09-20 22:14           ` Thomas Gummerer
2013-09-23 21:08           ` [PATCH v2 0/3] Add cleanup action to perf-lib Thomas Gummerer
2013-09-23 21:08             ` [PATCH v2 1/3] test-lib: introduce "modern" style tests Thomas Gummerer
2013-09-23 21:08             ` Thomas Gummerer [this message]
2013-09-23 21:08             ` [PATCH v2 3/3] p0003-index.sh: add perf test for the index formats Thomas Gummerer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1379970526-27997-3-git-send-email-t.gummerer@gmail.com \
    --to=t.gummerer@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=trast@inf.ethz.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).