git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/2] perf-lib: add test_perf_cleanup target

From
Thomas Gummerer <t.gummerer@gmail.com>
Date
Sep 17, 2013, 12:10 UTC
Message-ID
<1379419842-32627-2-git-send-email-t.gummerer@gmail.com>
In-Reply-To
<1379419842-32627-1-git-send-email-t.gummerer@gmail.com>

Currently there is no way to clean up the changes that have been made with test_perf for the next run. Add a way to reset the repository to the state before the test for testing commands that modify the git repository, e.g. for perf testing git add.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
---
This enables me to do something like (hint, hint, hint ;-)):

Test HEAD~1 HEAD ------------------------------------------------------------------------------------ .... 0003.16: v5 update-index file 0.19(0.12+0.06) 0.08(0.06+0.01) -57.9%

There are no performance tests currently using this, but since I have it anyway for a POC of partial writing of index-v5 (which is ugly and will have to wait a bit until I'm ready to send it to the list) I think this may be a worthwhile addition others can use in the meantime.

 t/perf/README      | 11 +++++++++++
 t/perf/perf-lib.sh | 25 +++++++++++++++++++++++++
 2 files changed, 36 insertions(+)
diff --git a/t/perf/README b/t/perf/README
index 8848c14..72f8a7b 100644
--- a/t/perf/README
+++ b/t/perf/README
@@ -123,6 +123,17 @@ tests, use
 		command2
 	'
 
+For performance tests that need cleaning up after them that should not
+be timed, use
+
+	test_perf_cleanup 'descriptive string' '
+		command1 &&
+		command2
+	' '
+		cleanupcommand1 &&
+		cleanupcommand2
+	'
+
 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 95e483c..11a93f1 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -174,6 +174,22 @@ perf_test_ () {
 				test_failure_ "$@"
 				break
 			fi
+			say >&3 "cleaning up: $3"
+			if test "$#" = 3
+			then
+				if test_run_ "$3"
+				then
+					if test -z "$verbose"; then
+						echo -n " c$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"
@@ -194,6 +210,15 @@ test_perf () {
 	perf_test_ "$1" "$2"
 }
 
+test_perf_cleanup () {
+	test_start_
+	test "$#" = 4 && { test_prereq=$1; shift; } || test_prereq=
+	test "$#" = 3 ||
+	error "bug in the test script: not 3 or 4 parameters to test-expect-success"
+	export test_prereq
+	perf_test_ "$1" "$2" "$3"
+}
+
 # We extend test_done to print timings at the end (./run disables this
 # and does it after running everything)
 test_at_end_hook_ () {
-- 
1.8.3.4.1238.ga800761
Previous: Thomas GummererNext: Junio C Hamano
Message 2 of 12 in “perf-lib: split starting the test from the execution”
  1. 1/2 perf-lib: split starting the test from the executionThomas Gummerer, Sep 17, 2013
  2. 2/2 perf-lib: add test_perf_cleanup targetThomas Gummerer, Sep 17, 2013
  3. Junio C HamanoSep 17, 2013
  4. Thomas GummererSep 19, 2013
  5. Junio C HamanoSep 19, 2013
  6. Junio C HamanoSep 19, 2013
  7. Junio C HamanoSep 19, 2013
  8. Thomas GummererSep 20, 2013
  9. 0/3 Add cleanup action to perf-libThomas Gummerer, Sep 23, 2013
  10. 1/3 test-lib: introduce "modern" style testsThomas Gummerer, Sep 23, 2013
  11. 2/3 perf-lib: add cleanup optionThomas Gummerer, Sep 23, 2013
  12. 3/3 p0003-index.sh: add perf test for the index formatsThomas Gummerer, Sep 23, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.