[PATCH v2 2/5] p0008-abbrev.sh: Test find_unique_abbrev() perf
From: Derrick Stolee <hidden>
Date: 2017-09-25 09:55:30
Subsystem:
kernel build + files below scripts/ (unless maintained elsewhere), the rest · Maintainers:
Nathan Chancellor, Nicolas Schier, Linus Torvalds
Create helper program test-abbrev to compute the minimum length of a disambiguating short-sha for an input list of object ids. Perf test p0008-abbrev.sh runs test-abbrev for 100,000 object ids. For test 0008.1, these objects exist. For test 0008.2 these objects do not exist in the repo (with high probability). For each test, use `sort -R` to (deterministically) shuffle the sample of object ids to not check abbreviations in lexicographic order. Signed-off-by: Derrick Stolee <redacted> --- Makefile | 1 + t/helper/.gitignore | 1 + t/helper/test-abbrev.c | 19 +++++++++++++++++++ t/perf/p0008-abbrev.sh | 22 ++++++++++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 t/helper/test-abbrev.c create mode 100755 t/perf/p0008-abbrev.sh
diff --git a/Makefile b/Makefile
index af94b655a..75835c7c0 100644
--- a/Makefile
+++ b/Makefile@@ -633,6 +633,7 @@ X = PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS)) +TEST_PROGRAMS_NEED_X += test-abbrev TEST_PROGRAMS_NEED_X += test-chmtime TEST_PROGRAMS_NEED_X += test-ctype TEST_PROGRAMS_NEED_X += test-config
diff --git a/t/helper/.gitignore b/t/helper/.gitignore
index 9dd1c9f3c..ab9df8369 100644
--- a/t/helper/.gitignore
+++ b/t/helper/.gitignore@@ -1,3 +1,4 @@ +/test-abbrev /test-chmtime /test-ctype /test-config
diff --git a/t/helper/test-abbrev.c b/t/helper/test-abbrev.c
new file mode 100644
index 000000000..6866896eb
--- /dev/null
+++ b/t/helper/test-abbrev.c@@ -0,0 +1,19 @@ +#include "cache.h" +#include <stdio.h> + +int cmd_main(int ac, const char **av) +{ + struct object_id oid; + char hex[GIT_MAX_HEXSZ + 2]; + const char *end; + + setup_git_directory(); + + while (fgets(hex, GIT_MAX_HEXSZ + 2, stdin)) { + hex[GIT_MAX_HEXSZ] = 0; + if (!parse_oid_hex(hex, &oid, &end)) + find_unique_abbrev(oid.hash, MINIMUM_ABBREV); + } + + exit(0); +}
diff --git a/t/perf/p0008-abbrev.sh b/t/perf/p0008-abbrev.sh
new file mode 100755
index 000000000..ba25e7824
--- /dev/null
+++ b/t/perf/p0008-abbrev.sh@@ -0,0 +1,22 @@ +#!/bin/bash + +test_description='Test object disambiguation through abbreviations' +. ./perf-lib.sh + +test_perf_large_repo + +test-list-objects 100000 | sort -R > objs.txt + +test_perf 'find_unique_abbrev() for existing objects' ' + test-abbrev < objs.txt +' + +test-list-objects 100000 --missing | sort -R > objs.txt + +test_perf 'find_unique_abbrev() for missing objects' ' + test-abbrev < objs.txt +' + +rm objs.txt + +test_done
--
2.14.1.538.g56ec8fc98.dirty