The git-notes expensive timing test is only expensive because it
either did 1k iterations or nothing. Change it to do 10 by default,
with an option to run the expensive version with the old
GIT_NOTES_TIMING_TESTS=ZomgYesPlease variable.
Since nobody was ostensibly running this test under TAP the code had
bitrotted so that it emitted invalid TAP. This change fixes that.
The old version would also mysteriously fail on systems without
/usr/bin/time, there's now a check for that using the test
prerequisite facility.
Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
t/t3302-notes-index-expensive.sh | 39 ++++++++++++++++++++++++++-----------
1 files changed, 27 insertions(+), 12 deletions(-)
@@ -7,11 +7,16 @@ test_description='Test commit notes index (expensive!)' ../test-lib.sh-test-z"$GIT_NOTES_TIMING_TESTS"&&{-skip_all="Skipping timing tests"-test_done-exit-}+test_set_prereqNOT_EXPENSIVE+test-n"$GIT_NOTES_TIMING_TESTS"&&test_set_prereqEXPENSIVE++iftest-x/usr/bin/time+then+# Hack around multiple test prerequisites not supporting AND-ing+# of terms+test_set_prereqUSR_BIN_TIME+NOT_EXPENSIVE+test_have_prereqEXPENSIVE&&test_set_prereqUSR_BIN_TIME+EXPENSIVE+fi create_repo(){number_of_commits=$1
Heya,
On Tue, Aug 10, 2010 at 14:56, Ævar Arnfjörð Bjarmason [off-list ref] wrote:
The git-notes expensive timing test is only expensive because it
either did 1k iterations or nothing. Change it to do 10 by default,
with an option to run the expensive version with the old
GIT_NOTES_TIMING_TESTS=ZomgYesPlease variable.
Nice, why 10 though? Any motivation for that particular value?
Since nobody was ostensibly running this test under TAP the code had
bitrotted so that it emitted invalid TAP. This change fixes that.
Nice catch.
The old version would also mysteriously fail on systems without
/usr/bin/time, there's now a check for that using the test
prerequisite facility.
Should this patch be split up?
--
Cheers,
Sverre Rabbelier
On Tue, Aug 10, 2010 at 20:29, Sverre Rabbelier [off-list ref] wrote:
Heya,
On Tue, Aug 10, 2010 at 14:56, Ævar Arnfjörð Bjarmason [off-list ref] wrote:
quoted
The git-notes expensive timing test is only expensive because it
either did 1k iterations or nothing. Change it to do 10 by default,
with an option to run the expensive version with the old
GIT_NOTES_TIMING_TESTS=ZomgYesPlease variable.
Nice, why 10 though? Any motivation for that particular value?
The old version had "for count in 10 100 1000 10000; do". Mine has 10
as non-expensive, and "for count in 100 1000 10000; do" as expensive.
I.e. I'm running the first test batch from the old tests.
I have no idea whether it actually needs to run 10..10k times, I
didn't try to grok the actual test code.
quoted
The old version would also mysteriously fail on systems without
/usr/bin/time, there's now a check for that using the test
prerequisite facility.
Should this patch be split up?
It all touched the same bits, it'd be nastier to split it up IMO.
The git-notes expensive timing test is only expensive because it
either did 10,100,1k and 10k iterations or nothing.
Change it to do 10 by default, with an option to run the expensive
version with the old GIT_NOTES_TIMING_TESTS=ZomgYesPlease variable.
Since nobody was ostensibly running this test under TAP the code had
bitrotted so that it emitted invalid TAP. This change fixes that.
The old version would also mysteriously fail on systems without
/usr/bin/time, there's now a check for that using the multiple test
prerequisite facility.
Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
---
On Tue, Aug 10, 2010 at 21:56, Ævar Arnfjörð Bjarmason [off-list ref] wrote:
On Tue, Aug 10, 2010 at 19:56, Ævar Arnfjörð Bjarmason [off-list ref] wrote:
quoted
+ # Hack around multiple test prerequisites not supporting AND-ing
+ # of terms
+ test_set_prereq USR_BIN_TIME+NOT_EXPENSIVE
+ test_have_prereq EXPENSIVE && test_set_prereq USR_BIN_TIME+EXPENSIVE
+fi
In retrospect this may have been some brainfried code, I'll check it
out tomorrow.
Here's a patch that's not crazy. In v1 I was hacking around not having
a facility I already added to the test-lib (tired).
This patch goes on top of my "test-lib: Multi-prereq support only
checked the last prereq" patch, which fixes up the test prereq
facility so that it actually works.
t/t3302-notes-index-expensive.sh | 32 ++++++++++++++++++++------------
1 files changed, 20 insertions(+), 12 deletions(-)
From: Jonathan Nieder <hidden> Date: 2016-06-15 22:49:22
Ævar Arnfjörð Bjarmason wrote:
It turns out that this fails on Solaris because its /usr/bin/time is different.
Odd. Different how? As far as I can tell, all that test asks
of time is to execv() its arguments and pass on a 0 exit status.
Ah, maybe this is it: perhaps /usr/bin/time sh runs /bin/sh. Does the
following help?
Patch is against next. Untested except on Linux where it wouldn't
make a difference.
-- 8< --
Subject: t3302 (notes): Port to Solaris
The time_notes script, which uses POSIX shell features, is
currently sometimes run with a non-POSIX /bin/sh.
Reported-by: Ævar Arnfjörð Bjarmason <redacted>
Signed-off-by: Jonathan Nieder <redacted>
---