From patchwork Tue Aug 24 09:15:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12454281 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D97BC432BE for ; Tue, 24 Aug 2021 09:15:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5068261262 for ; Tue, 24 Aug 2021 09:15:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235841AbhHXJQT (ORCPT ); Tue, 24 Aug 2021 05:16:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235872AbhHXJQR (ORCPT ); Tue, 24 Aug 2021 05:16:17 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9D40EC061757 for ; Tue, 24 Aug 2021 02:15:33 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id e5so13646920wrp.8 for ; Tue, 24 Aug 2021 02:15:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FL064AzexlrSGZmL8Gv9VXzA7yyS86A4Wr86hubsW0E=; b=V1R8czo342X4L57xMpultZh03pP1eXTrAoi2AEuiqC7bcK44SbB0DdvAJkCYph1fMI bami1Ranpa/+lkQveyTjrU9Fz5Fyb9VGWIiMqyHcMNd/MH9X3yCsEflr9jnM6VrHGaWi zJ9oBVtCnz1fDZFORBJdnEIGdTIrf76MVQvoaxIeHG9btZ5k0cHPKFVCJzVZu5Nr++m1 C4di6moA9xYOOvGIbuBDhGSlhOId5UT40toQmIy6scnSM/FIHkUSc0Lj8XHVMu7HzCKJ uCoekYsNxy8s3g3rm5nW0FBMWFFBuBz7GpkdOyrzymmbfe91+lCDufrXtuUvguM2H0YH OkPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FL064AzexlrSGZmL8Gv9VXzA7yyS86A4Wr86hubsW0E=; b=ukn0cjRqFtnsZCQQP+/CXl6F4QDoEg/ypImsguKMnBEbbkVcEbmvMwFFVabOd9BcKk dkQp0Ls0RnW7FU5r4lnpamjLUHWs5Xb6IGYr9fddQPUraTkjmCRGZwe1UfszCOgEWPo7 QG1VYN7FPRAWSHmuznWDZkstDCovLK9pzP6pgoDH9EpkueUjGaLb1sgQQkLS9XNoM1Ey 4dEM1/fUnngfeFJ6s1Jlqbv0c8QDspBYme+MwdYX9oy0aMuJQZmqEGtbTPLq83FQ1tsp x0wP+xFPnzw+qESlXJs8BuxRnwfkjCzrkB+U1JqocfOQIQL49dxWHRewgosJfD+QK+fi WlXg== X-Gm-Message-State: AOAM530Yor45B7tJELFeTRr3Ej/3Npo2dw/61+z2MnQHdVeALDt5L2fz xW4DPOBGNRZ4cjKpXF7vhffPViYrkeZ0Zg== X-Google-Smtp-Source: ABdhPJyRwv4YqRpbW5jVGCtF/3mFSH8NCohMB9uL6wmxdkvgIEHqHb2JKCaBIBGdfSZlXenOR/wJ6Q== X-Received: by 2002:adf:d4c2:: with SMTP id w2mr18725956wrk.235.1629796531926; Tue, 24 Aug 2021 02:15:31 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id u8sm1853104wmq.45.2021.08.24.02.15.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Aug 2021 02:15:31 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Derrick Stolee , Elijah Newren , Emily Shaffer , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH v2 1/4] test-tool: split up test-tool read-cache Date: Tue, 24 Aug 2021 11:15:22 +0200 Message-Id: X-Mailer: git-send-email 2.33.0.663.gbaff4edb973 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Since the "test-tool read-cache" was originally added back in 1ecb5ff141 (read-cache: add simple performance test, 2013-06-09) the test-read-cache.c tool has been growing various features that make the code harder to read. I.e. sometimes running as a one-off, sometimes looping. It's also been unconditionally reading config since dc76852df2f (fsmonitor: demonstrate that it is not refreshed after discard_index(), 2019-05-07), which introduces unnecessary noise into the performance test. Then in recent changes in e2df6c3972 (test-read-cache: print cache entries with --table, 2021-03-30) and 2782db3eed (test-tool: don't force full index, 2021-03-30) we gained even more logic to deal with sparse index testing. I think that having one test tool do so many different things makes it harder to read its code. Let's instead split up the "again" and "perf" uses for it into their own small tools, this makes the main "test-read-cache.c" a simpler. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 2 ++ t/helper/test-read-cache-again.c | 31 ++++++++++++++++++ t/helper/test-read-cache-perf.c | 21 ++++++++++++ t/helper/test-read-cache.c | 56 +++++++++++++------------------- t/helper/test-tool.c | 2 ++ t/helper/test-tool.h | 2 ++ t/perf/p0002-read-cache.sh | 2 +- t/t7519-status-fsmonitor.sh | 2 +- 8 files changed, 83 insertions(+), 35 deletions(-) create mode 100644 t/helper/test-read-cache-again.c create mode 100644 t/helper/test-read-cache-perf.c diff --git a/Makefile b/Makefile index 9573190f1d7..4d3f8ece74f 100644 --- a/Makefile +++ b/Makefile @@ -739,6 +739,8 @@ TEST_BUILTINS_OBJS += test-prio-queue.o TEST_BUILTINS_OBJS += test-proc-receive.o TEST_BUILTINS_OBJS += test-progress.o TEST_BUILTINS_OBJS += test-reach.o +TEST_BUILTINS_OBJS += test-read-cache-again.o +TEST_BUILTINS_OBJS += test-read-cache-perf.o TEST_BUILTINS_OBJS += test-read-cache.o TEST_BUILTINS_OBJS += test-read-graph.o TEST_BUILTINS_OBJS += test-read-midx.o diff --git a/t/helper/test-read-cache-again.c b/t/helper/test-read-cache-again.c new file mode 100644 index 00000000000..707db036cb1 --- /dev/null +++ b/t/helper/test-read-cache-again.c @@ -0,0 +1,31 @@ +#include "test-tool.h" +#include "cache.h" + +int cmd__read_cache_again(int argc, const char **argv) +{ + struct repository *r = the_repository; + int i, cnt; + const char *name; + + if (argc != 2) + die("usage: test-tool read-cache-again "); + + cnt = strtol(argv[0], NULL, 0); + name = argv[2]; + + setup_git_directory(); + for (i = 0; i < cnt; i++) { + int pos; + repo_read_index(r); + refresh_index(r->index, REFRESH_QUIET, + NULL, NULL, NULL); + pos = index_name_pos(r->index, name, strlen(name)); + if (pos < 0) + die("%s not in index", name); + printf("%s is%s up to date\n", name, + ce_uptodate(r->index->cache[pos]) ? "" : " not"); + write_file(name, "%d\n", cnt); + discard_index(r->index); + } + return 0; +} diff --git a/t/helper/test-read-cache-perf.c b/t/helper/test-read-cache-perf.c new file mode 100644 index 00000000000..90176c010a1 --- /dev/null +++ b/t/helper/test-read-cache-perf.c @@ -0,0 +1,21 @@ +#include "test-tool.h" +#include "cache.h" + +int cmd__read_cache_perf(int argc, const char **argv) +{ + struct repository *r = the_repository; + int i, cnt = 1; + + if (argc == 2) + cnt = strtol(argv[1], NULL, 0); + else + die("usage: test-tool read-cache-perf []"); + + setup_git_directory(); + for (i = 0; i < cnt; i++) { + repo_read_index(r); + discard_index(r->index); + } + + return 0; +} diff --git a/t/helper/test-read-cache.c b/t/helper/test-read-cache.c index b52c174acc7..616894072d1 100644 --- a/t/helper/test-read-cache.c +++ b/t/helper/test-read-cache.c @@ -5,6 +5,12 @@ #include "commit.h" #include "tree.h" #include "sparse-index.h" +#include "parse-options.h" + +static const char *read_cache_usage[] = { + "test-tool read-cache [...]", + NULL +}; static void print_cache_entry(struct cache_entry *ce) { @@ -34,49 +40,33 @@ static void print_cache(struct index_state *istate) int cmd__read_cache(int argc, const char **argv) { struct repository *r = the_repository; - int i, cnt = 1; - const char *name = NULL; int table = 0, expand = 0; + struct option options[] = { + OPT_BOOL(0, "table", &table, + "print a dump of the cache"), + OPT_BOOL(0, "expand", &expand, + "call ensure_full_index()"), + OPT_END() + }; + + argc = parse_options(argc, argv, "test-tools", options, read_cache_usage, 0); + if (argc) + usage_msg_opt("Too many arguments.", read_cache_usage, options); initialize_the_repository(); prepare_repo_settings(r); r->settings.command_requires_full_index = 0; - for (++argv, --argc; *argv && starts_with(*argv, "--"); ++argv, --argc) { - if (skip_prefix(*argv, "--print-and-refresh=", &name)) - continue; - if (!strcmp(*argv, "--table")) - table = 1; - else if (!strcmp(*argv, "--expand")) - expand = 1; - } - - if (argc == 1) - cnt = strtol(argv[0], NULL, 0); setup_git_directory(); git_config(git_default_config, NULL); + repo_read_index(r); - for (i = 0; i < cnt; i++) { - repo_read_index(r); - - if (expand) - ensure_full_index(r->index); + if (expand) + ensure_full_index(r->index); - if (name) { - int pos; + if (table) + print_cache(r->index); + discard_index(r->index); - refresh_index(r->index, REFRESH_QUIET, - NULL, NULL, NULL); - pos = index_name_pos(r->index, name, strlen(name)); - if (pos < 0) - die("%s not in index", name); - printf("%s is%s up to date\n", name, - ce_uptodate(r->index->cache[pos]) ? "" : " not"); - write_file(name, "%d\n", i); - } - if (table) - print_cache(r->index); - discard_index(r->index); - } return 0; } diff --git a/t/helper/test-tool.c b/t/helper/test-tool.c index 3ce5585e53a..fb537c158e9 100644 --- a/t/helper/test-tool.c +++ b/t/helper/test-tool.c @@ -57,6 +57,8 @@ static struct test_cmd cmds[] = { { "progress", cmd__progress }, { "reach", cmd__reach }, { "read-cache", cmd__read_cache }, + { "read-cache-again", cmd__read_cache_again }, + { "read-cache-perf", cmd__read_cache_perf }, { "read-graph", cmd__read_graph }, { "read-midx", cmd__read_midx }, { "ref-store", cmd__ref_store }, diff --git a/t/helper/test-tool.h b/t/helper/test-tool.h index 9f0f5228508..e5616e6f7a7 100644 --- a/t/helper/test-tool.h +++ b/t/helper/test-tool.h @@ -46,6 +46,8 @@ int cmd__proc_receive(int argc, const char **argv); int cmd__progress(int argc, const char **argv); int cmd__reach(int argc, const char **argv); int cmd__read_cache(int argc, const char **argv); +int cmd__read_cache_again(int argc, const char **argv); +int cmd__read_cache_perf(int argc, const char **argv); int cmd__read_graph(int argc, const char **argv); int cmd__read_midx(int argc, const char **argv); int cmd__ref_store(int argc, const char **argv); diff --git a/t/perf/p0002-read-cache.sh b/t/perf/p0002-read-cache.sh index cdd105a5945..d0ba5173fb1 100755 --- a/t/perf/p0002-read-cache.sh +++ b/t/perf/p0002-read-cache.sh @@ -8,7 +8,7 @@ test_perf_default_repo count=1000 test_perf "read_cache/discard_cache $count times" " - test-tool read-cache $count + test-tool read-cache-perf $count " test_done diff --git a/t/t7519-status-fsmonitor.sh b/t/t7519-status-fsmonitor.sh index deea88d4431..7de5fcb1bd7 100755 --- a/t/t7519-status-fsmonitor.sh +++ b/t/t7519-status-fsmonitor.sh @@ -360,7 +360,7 @@ test_expect_success UNTRACKED_CACHE 'ignore .git changes when invalidating UNTR' test_expect_success 'discard_index() also discards fsmonitor info' ' test_config core.fsmonitor "$TEST_DIRECTORY/t7519/fsmonitor-all" && test_might_fail git update-index --refresh && - test-tool read-cache --print-and-refresh=tracked 2 >actual && + test-tool read-cache-again 2 tracked >actual && printf "tracked is%s up to date\n" "" " not" >expect && test_cmp expect actual ' From patchwork Tue Aug 24 09:15:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12454283 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 581B0C4338F for ; Tue, 24 Aug 2021 09:15:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 432DC61262 for ; Tue, 24 Aug 2021 09:15:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235689AbhHXJQ0 (ORCPT ); Tue, 24 Aug 2021 05:16:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60422 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235833AbhHXJQS (ORCPT ); Tue, 24 Aug 2021 05:16:18 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4EAD2C061764 for ; Tue, 24 Aug 2021 02:15:34 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id g135so3022092wme.5 for ; Tue, 24 Aug 2021 02:15:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aWFfsPaZVecHUlqbApkl7Mt4nHs4zvWSqxz/im34/Aw=; b=PfLceNaQd3QyciTkl0cjeaWLUZk5a871aEFL1VuJjFW134QdvIUuIn06AHX5+cRqEg XBFDF1trMscsp4I2NtndHkJ6UPN641EbTq8DSYzjOuh4WY4L9LQFb9ycUr+ifr3+K4YL pHOZUYua4FvAHl82cWIdgUOOmvUDjNAqJSnfNJKfkiGffK2fIZMPxKvdUEK0l/ROVDV9 /qDTexeWHDAuyix2smPsRNYIj0fL+vevSi0bpguq9fPsgWCyrV9cvtgVVPPSKSKtXjJa U5LBNkd/sSJjdNBb+zoErVM34rgLjksKEACs4PBF9ir/SYy7lbx0L5ZGoPlh4OAa40c0 NP4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aWFfsPaZVecHUlqbApkl7Mt4nHs4zvWSqxz/im34/Aw=; b=k2+/0eSSQtVvDt/yXVEk3GCQFdz/CGqzltpAAH6hFboCT9PCM8oOxJBQRMzGcQLziF mImsKKTvmYsvtnrSrQYA7P7gIDw9LVP12B7oIlD9peJPEH9PmL6O3yaDLRTJKNjrDPTJ qP522QBHWVySkJBRrn+QIfeONX9ldPhqME94GvtIsjseiMO+zTWFBxIT6gJxOgSqD9W0 tkXWDaB0CpO0q92IFaysY8vgLL5S0rnsoCTuPXBt0H5XUwXa5rKGqAM/7wcLCFbKe3HC XLF60fM0OBmAsB0m8DcWGUxk6pQU/AHiMjK/R3yfuUXGoY0tzP7Y/U15EykNFNVd7xFQ Jjkw== X-Gm-Message-State: AOAM5326qEoq5PjOja9O7Ibel+ECVt6MbbJR6LIXWVb+PonfWIJ9Fftp UBP0Tiv1PiUc3WtePdI2AiAECt5CjmcIqg== X-Google-Smtp-Source: ABdhPJzBKsjeOkZyA1EumiEfMZfTo8Lssz2xxummYotZyi62fuyFxHAcdWuhNU3brk8MMhyx+2BI4w== X-Received: by 2002:a05:600c:2f90:: with SMTP id t16mr3190133wmn.136.1629796532663; Tue, 24 Aug 2021 02:15:32 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id u8sm1853104wmq.45.2021.08.24.02.15.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Aug 2021 02:15:32 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Derrick Stolee , Elijah Newren , Emily Shaffer , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH v2 2/4] test-tool: migrate read-cache-perf to parse_options() Date: Tue, 24 Aug 2021 11:15:23 +0200 Message-Id: X-Mailer: git-send-email 2.33.0.663.gbaff4edb973 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the newly added (but then mostly copy/pasted) read-cache-perf to use the parse_options() API. This will make things easier as we add new options. Since we check the "cnt = < 1" case now via more idiomatic post-parse_options() assertions we can move from the for-loop to a while-loop and ditch the "i" variable. Signed-off-by: Ævar Arnfjörð Bjarmason --- t/helper/test-read-cache-perf.c | 26 ++++++++++++++++++++------ t/perf/p0002-read-cache.sh | 2 +- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/t/helper/test-read-cache-perf.c b/t/helper/test-read-cache-perf.c index 90176c010a1..301e98797b4 100644 --- a/t/helper/test-read-cache-perf.c +++ b/t/helper/test-read-cache-perf.c @@ -1,18 +1,32 @@ #include "test-tool.h" #include "cache.h" +#include "parse-options.h" + +static const char *read_cache_perf_usage[] = { + "test-tool read-cache-perf [...]", + NULL +}; int cmd__read_cache_perf(int argc, const char **argv) { struct repository *r = the_repository; - int i, cnt = 1; + int cnt = -1; + struct option options[] = { + OPT_INTEGER(0, "count", &cnt, "number of passes"), + OPT_END() + }; - if (argc == 2) - cnt = strtol(argv[1], NULL, 0); - else - die("usage: test-tool read-cache-perf []"); + argc = parse_options(argc, argv, "test-tools", options, + read_cache_perf_usage, 0); + if (argc) + usage_msg_opt("Too many arguments.", read_cache_perf_usage, + options); + if (cnt < 1) + usage_msg_opt("Need at least one pass.", read_cache_perf_usage, + options); setup_git_directory(); - for (i = 0; i < cnt; i++) { + while (cnt--) { repo_read_index(r); discard_index(r->index); } diff --git a/t/perf/p0002-read-cache.sh b/t/perf/p0002-read-cache.sh index d0ba5173fb1..1762b648654 100755 --- a/t/perf/p0002-read-cache.sh +++ b/t/perf/p0002-read-cache.sh @@ -8,7 +8,7 @@ test_perf_default_repo count=1000 test_perf "read_cache/discard_cache $count times" " - test-tool read-cache-perf $count + test-tool read-cache-perf --count=$count " test_done From patchwork Tue Aug 24 09:15:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12454285 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28967C432BE for ; Tue, 24 Aug 2021 09:15:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1208361165 for ; Tue, 24 Aug 2021 09:15:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235690AbhHXJQ0 (ORCPT ); Tue, 24 Aug 2021 05:16:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235820AbhHXJQT (ORCPT ); Tue, 24 Aug 2021 05:16:19 -0400 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07369C061757 for ; Tue, 24 Aug 2021 02:15:35 -0700 (PDT) Received: by mail-wr1-x42a.google.com with SMTP id q11so3246900wrr.9 for ; Tue, 24 Aug 2021 02:15:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cEH/Y2Fj28mOc6KhxS95liyo07g/nVNTIYC4DIb4Vaw=; b=Poz6m9EAFCQkMZxDTOz6hYwShD+BZFEpq9Zr+q9Q/WGoPc/inyU06CpJOhWsEWGAYi MLde0imuXMG5/tSimLAsTHmBT5Ow/sqaPGYwzy3o3RKKrjN5aSF4pZE7OopyASpHrWms 5pykGmTzUa/J7F3yLK5ZgnlPSpz3oYkWDmH7IuliwYUQArp/K60z6GkWPcwStQzHxb/P BLEuLK/XXul8XF2gEq0MsXlA0I+UAnreYTk4vuBnWIDO5VqNx+JLHfCtzehzlmDCmTTo YXAEZJi2j7bVM4+Ia5pTrNsmaJEGSzZW9UV6Du46b7j5zYu1+OpbrLUrGkZWqNmGTD6l uiqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cEH/Y2Fj28mOc6KhxS95liyo07g/nVNTIYC4DIb4Vaw=; b=a6IE+m9bB0BYK2/S1wjQbmp5JrdXl8f9b+TFE3oztCTY3Ef/k4sOiOrSg4Ldx37i0r sdzv1Wk3W0nMlJyds83vA/dGMSZ23lAtzfXg4CgRv0zOG6XEPWgpDktIi0yEuG/uqemp 5zOyY0CNhNZ8R1v15fJxt8OQu5Au+EOsZCN3OLkdSvO8YGQMfkqylypb91WQoCkCcJZ6 9V7raySUZbe7ozNHyeKhrYaRshtuUQiBw8XG10jTIVDNZweNxDIsF3+LzbVGREvNwR83 ax6Ra3VrPGUNU8GKnkxrJbSBX4TkiDBCTs30wRRwsILVqWvH/LgIFQZWDLA1Bso/Ai2W Ov1A== X-Gm-Message-State: AOAM531UH3f9nG65b3riH6xnH3HA4zcsqCfgIeBWOCn8PQy+6AY11OZa qO4rMWlAIad7lO1IN6RLLk/erXSC3qmKsQ== X-Google-Smtp-Source: ABdhPJyCnuv8nGEuqaHc8vstefq1D2M5lsPXG0Egd1tusj8FRr5D7kuMgUzsfcCBDkMj9Vku4J/lUg== X-Received: by 2002:adf:edcf:: with SMTP id v15mr16500971wro.61.1629796533408; Tue, 24 Aug 2021 02:15:33 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id u8sm1853104wmq.45.2021.08.24.02.15.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Aug 2021 02:15:32 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Derrick Stolee , Elijah Newren , Emily Shaffer , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH v2 3/4] test-tool: migrate read-cache-again to parse_options() Date: Tue, 24 Aug 2021 11:15:24 +0200 Message-Id: X-Mailer: git-send-email 2.33.0.663.gbaff4edb973 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the newly added (but then mostly copy/pasted) read-cache-perf to use the parse_options() API. I have no plans to further modify read-cache-again, but making these commands consistent has a value in and of itself. Since we check the "cnt = < 1" case now via more idiomatic post-parse_options() assertions we can move from the for-loop to a while-loop and ditch the "i" variable. Signed-off-by: Ævar Arnfjörð Bjarmason --- t/helper/test-read-cache-again.c | 26 ++++++++++++++++++++------ t/t7519-status-fsmonitor.sh | 2 +- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/t/helper/test-read-cache-again.c b/t/helper/test-read-cache-again.c index 707db036cb1..fa456ca229e 100644 --- a/t/helper/test-read-cache-again.c +++ b/t/helper/test-read-cache-again.c @@ -1,20 +1,34 @@ #include "test-tool.h" #include "cache.h" +#include "parse-options.h" + +static const char *read_cache_again_usage[] = { + "test-tool read-cache-again [...] ", + NULL +}; int cmd__read_cache_again(int argc, const char **argv) { struct repository *r = the_repository; - int i, cnt; + int cnt = 2; const char *name; + struct option options[] = { + OPT_INTEGER(0, "count", &cnt, "number of passes"), + OPT_END() + }; - if (argc != 2) - die("usage: test-tool read-cache-again "); - - cnt = strtol(argv[0], NULL, 0); + argc = parse_options(argc, argv, "test-tools", options, + read_cache_again_usage, 0); + if (argc != 1) + usage_msg_opt("Too many arguments.", read_cache_again_usage, + options); + if (cnt < 1) + usage_msg_opt("Need at least one pass.", read_cache_again_usage, + options); name = argv[2]; setup_git_directory(); - for (i = 0; i < cnt; i++) { + while (cnt--) { int pos; repo_read_index(r); refresh_index(r->index, REFRESH_QUIET, diff --git a/t/t7519-status-fsmonitor.sh b/t/t7519-status-fsmonitor.sh index 7de5fcb1bd7..817e642f58e 100755 --- a/t/t7519-status-fsmonitor.sh +++ b/t/t7519-status-fsmonitor.sh @@ -360,7 +360,7 @@ test_expect_success UNTRACKED_CACHE 'ignore .git changes when invalidating UNTR' test_expect_success 'discard_index() also discards fsmonitor info' ' test_config core.fsmonitor "$TEST_DIRECTORY/t7519/fsmonitor-all" && test_might_fail git update-index --refresh && - test-tool read-cache-again 2 tracked >actual && + test-tool read-cache-again --count=2 tracked >actual && printf "tracked is%s up to date\n" "" " not" >expect && test_cmp expect actual ' From patchwork Tue Aug 24 09:15:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12454287 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10804C4338F for ; Tue, 24 Aug 2021 09:15:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E5C8461165 for ; Tue, 24 Aug 2021 09:15:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229990AbhHXJQ2 (ORCPT ); Tue, 24 Aug 2021 05:16:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235652AbhHXJQT (ORCPT ); Tue, 24 Aug 2021 05:16:19 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDC70C061760 for ; Tue, 24 Aug 2021 02:15:35 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id f9-20020a05600c1549b029025b0f5d8c6cso1331608wmg.4 for ; Tue, 24 Aug 2021 02:15:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sWGIxOrcSa7Vn/di+6qSQSu9BiHtTe5SOwI3VUYeoKc=; b=L7PhgRoGW1t+EWAHsYxrR3uFoMom/xbPuu2BabF+pKuSuDeF7usqC7pl6gdrZvGmlj NtnSrNVFDH6FQesHeKlzjPD7JBambp0/7ioVxlqWTVjkqG60AMdUq1QoW24UfFhbE57y lKHjGPhCymRYOSfc8uH5swO4uhNooEizd3ElrkzvH8rubj1X2e0dpCJv1MEVLn1A2k5e PSFSZg/5nmmgV3xZdQdle+eNxoM+31r2Ff+xnAr9hOy0847QpMPBJ6sdeVZfbRTHEmGk svjdps4vWSQUjYRwMV74IciSKvQ0qgYrXVvw2Nn5iWbgX3GPL4y0bwKMNIPXc94D6tCT Bmvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sWGIxOrcSa7Vn/di+6qSQSu9BiHtTe5SOwI3VUYeoKc=; b=GT6dyeR7Ro52S+KtjZbTKir+O2VMv5dW3PhsA83AqMPkLrVwq12F2H/NRLTAbglaoO jFyI8bzAOgzhfv4xuHPykI4PcvGpQMm6Q2IK574lUA4G/JWMC49MtGKpyGsiCT7BVy/U vkKZhKqQCtzOq7cZE7DuHnMyF0WV/ejjiJ+ohUc5voXTeVNGIISggOkuM60WQrUAZ6YB a6fJPg2LlfCAibncynWEODmlW8wtEW0stVWwH63jlH8MzOZTIbkopU3jggFnMEbeu+TV qB0TfZmhKBp53WETbndOT/2r5r081Zc/QOIv6JEFGRNc9F1+UXrxgudETDt1tUH1r9ND iFRQ== X-Gm-Message-State: AOAM531uaZTiEGXDHt7ij623RzTnN6KEMftWVapepPIsMS/3GHBTUqSs i69EHeYYChVKH+w2ZqTih1jRKjYHidxJ9g== X-Google-Smtp-Source: ABdhPJw0PcOAVn469evGmoAdRx0ZI6jmUUlmvOKZhJA5dv38BivoISrQVpo1zEXtn+vnzUdTqzUB5g== X-Received: by 2002:a05:600c:350d:: with SMTP id h13mr3024238wmq.38.1629796534161; Tue, 24 Aug 2021 02:15:34 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id u8sm1853104wmq.45.2021.08.24.02.15.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Aug 2021 02:15:33 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Derrick Stolee , Elijah Newren , Emily Shaffer , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBC?= =?utf-8?b?amFybWFzb24=?= Subject: [PATCH v2 4/4] read-cache perf: add a perf test for refresh_index() Date: Tue, 24 Aug 2021 11:15:25 +0200 Message-Id: X-Mailer: git-send-email 2.33.0.663.gbaff4edb973 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a perf test for the refresh_index() function to compliment the existing read()/discard() in a loop perf test added in 1ecb5ff141f (read-cache: add simple performance test, 2013-06-09). Since this test is much slower (around 10x) than the previous read()/discard() test let's run it 100 times instead of the 1000 time the first one runs. Signed-off-by: Ævar Arnfjörð Bjarmason --- t/helper/test-read-cache-perf.c | 12 ++++++++++++ t/perf/p0002-read-cache.sh | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/t/helper/test-read-cache-perf.c b/t/helper/test-read-cache-perf.c index 301e98797b4..630c126fbf3 100644 --- a/t/helper/test-read-cache-perf.c +++ b/t/helper/test-read-cache-perf.c @@ -11,8 +11,11 @@ int cmd__read_cache_perf(int argc, const char **argv) { struct repository *r = the_repository; int cnt = -1; + int refresh = 0; struct option options[] = { OPT_INTEGER(0, "count", &cnt, "number of passes"), + OPT_BOOL(0, "refresh", &refresh, + "call refresh_index() in a loop, not read()/discard()"), OPT_END() }; @@ -26,10 +29,19 @@ int cmd__read_cache_perf(int argc, const char **argv) options); setup_git_directory(); + if (refresh) + repo_read_index(r); while (cnt--) { + if (refresh) { + unsigned int flags = REFRESH_QUIET|REFRESH_PROGRESS; + refresh_index(r->index, flags, NULL, NULL, NULL); + continue; + } repo_read_index(r); discard_index(r->index); } + if (refresh) + discard_index(r->index); return 0; } diff --git a/t/perf/p0002-read-cache.sh b/t/perf/p0002-read-cache.sh index 1762b648654..cbccc5ace95 100755 --- a/t/perf/p0002-read-cache.sh +++ b/t/perf/p0002-read-cache.sh @@ -11,4 +11,9 @@ test_perf "read_cache/discard_cache $count times" " test-tool read-cache-perf --count=$count " +count=100 +test_perf "refresh_index() $count times" " + test-tool read-cache-perf --count=$count --refresh +" + test_done