]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/perf/p7519: add fsmonitor--daemon test cases
authorJeff Hostetler <jeffhost@microsoft.com>
Fri, 25 Mar 2022 18:03:09 +0000 (18:03 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 25 Mar 2022 23:04:17 +0000 (16:04 -0700)
Repeat all of the fsmonitor perf tests using `git fsmonitor--daemon` and
the "Simple IPC" interface.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/perf/p7519-fsmonitor.sh

index a6c2a910e70768e125ea11504f520d36edc9117a..0b9129ca7bc55a61d3692834fe44940214669244 100755 (executable)
@@ -141,7 +141,7 @@ test_expect_success "one time repo setup" '
        fi
 '
 
-setup_for_fsmonitor () {
+setup_for_fsmonitor_hook () {
        # set INTEGRATION_SCRIPT depending on the environment
        if test -n "$INTEGRATION_PATH"
        then
@@ -182,7 +182,11 @@ test_perf_w_drop_caches () {
 }
 
 test_fsmonitor_suite () {
-       if test -n "$INTEGRATION_SCRIPT"; then
+       if test -n "$USE_FSMONITOR_DAEMON"
+       then
+               DESC="builtin fsmonitor--daemon"
+       elif test -n "$INTEGRATION_SCRIPT"
+       then
                DESC="fsmonitor=$(basename $INTEGRATION_SCRIPT)"
        else
                DESC="fsmonitor=disabled"
@@ -261,11 +265,11 @@ test_fsmonitor_suite () {
 trace_start fsmonitor-watchman
 if test -n "$GIT_PERF_7519_FSMONITOR"; then
        for INTEGRATION_PATH in $GIT_PERF_7519_FSMONITOR; do
-               test_expect_success "setup for fsmonitor $INTEGRATION_PATH" 'setup_for_fsmonitor'
+               test_expect_success "setup for fsmonitor $INTEGRATION_PATH" 'setup_for_fsmonitor_hook'
                test_fsmonitor_suite
        done
 else
-       test_expect_success "setup for fsmonitor" 'setup_for_fsmonitor'
+       test_expect_success "setup for fsmonitor hook" 'setup_for_fsmonitor_hook'
        test_fsmonitor_suite
 fi
 
@@ -293,4 +297,30 @@ test_expect_success "setup without fsmonitor" '
 test_fsmonitor_suite
 trace_stop
 
+#
+# Run a full set of perf tests using the built-in fsmonitor--daemon.
+# It does not use the Hook API, so it has a different setup.
+# Explicitly start the daemon here and before we start client commands
+# so that we can later add custom tracing.
+#
+if test_have_prereq FSMONITOR_DAEMON
+then
+       USE_FSMONITOR_DAEMON=t
+
+       test_expect_success "setup for builtin fsmonitor" '
+               trace_start fsmonitor--daemon--server &&
+               git fsmonitor--daemon start &&
+
+               trace_start fsmonitor--daemon--client &&
+
+               git config core.fsmonitor true &&
+               git update-index --fsmonitor
+       '
+
+       test_fsmonitor_suite
+
+       git fsmonitor--daemon stop
+       trace_stop
+fi
+
 test_done