From 021e03c4186bde630b1b4912afaab1e7f8417c1e Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 9 Apr 2010 15:54:02 +0930 Subject: [PATCH] tools: fastcheck adjust; 750ms works well for me. --- Makefile | 43 +++++++++++++++++++++++++++++++++++++-- Makefile-ccan | 4 ++-- tools/ccanlint/ccanlint.c | 17 +++++++++------- 3 files changed, 53 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 0f1d9421..4bdbf89c 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,45 @@ ALL_DEPENDS=$(patsubst %, ccan/%/.depends, $(ALL)) # Not all modules have tests. ALL_TESTS=$(patsubst ccan/%/test/, %, $(foreach dir, $(ALL), $(wildcard ccan/$(dir)/test/))) +# Here's my rough logarithmic timeout graph for my laptop: +# +# 302 - +# | / --* +# | / +# | / +# | / +# |Execution Time, seconds / +# | / +# | ---// +# | / +# | // +# | ---\ --- +# | --- \\ ------ +# |----------------- \--- +# 19 +------------------------------------------------------+-- +# 0 Timeout (ms, logarithmic) 262144 +# +# 140 +# | +# |------------ +# | --- +# | --------- +# | ------- +# | --\ +# | \\- +# | Tests skipped --\ +# | \ +# | \\ +# | \\\ +# | \ +# | \---- +# --+0---------------------------------------------------==+-- +# 0 Timeout (ms, logarithmic) 262144 +# +# On my laptop, this runs 574 tests in 40 seconds, vs. a full check which +# runs 676 tests in 260 seconds. +FASTTIMEOUT=750 + default: libccan.a include Makefile-ccan @@ -39,14 +78,14 @@ check-%: tools/ccanlint/ccanlint @tools/ccanlint/ccanlint -d ccan/$* fastcheck-%: tools/ccanlint/ccanlint - @tools/ccanlint/ccanlint -t -d ccan/$* + @tools/ccanlint/ccanlint -t $(FASTTIMEOUT) -d ccan/$* # Doesn't test dependencies, doesn't print verbose fail results. summary-check-%: tools/ccanlint/ccanlint $(OBJFILES) @tools/ccanlint/ccanlint -s -d ccan/$* summary-fastcheck-%: tools/ccanlint/ccanlint $(OBJFILES) - @tools/ccanlint/ccanlint -t -s -d ccan/$* + @tools/ccanlint/ccanlint -t $(FASTTIMEOUT) -s -d ccan/$* ccan/%/info: ccan/%/_info $(CC) $(CFLAGS) -o $@ -x c $< diff --git a/Makefile-ccan b/Makefile-ccan index 59d540b4..9b248a53 100644 --- a/Makefile-ccan +++ b/Makefile-ccan @@ -2,8 +2,8 @@ # For simple projects you could just do: # SRCFILES += $(wildcard ccan/*/*.c) -#CFLAGS=-g -O3 -Wall -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Werror -I. $(DEPGEN) -CFLAGS=-g -Wall -Wstrict-prototypes -Wold-style-definition -Werror -I. $(DEPGEN) +CFLAGS=-g -O3 -Wall -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Werror -I. $(DEPGEN) +#CFLAGS=-g -Wall -Wstrict-prototypes -Wold-style-definition -Werror -I. $(DEPGEN) default: libccan.a diff --git a/tools/ccanlint/ccanlint.c b/tools/ccanlint/ccanlint.c index a65c6410..20c3b9bf 100644 --- a/tools/ccanlint/ccanlint.c +++ b/tools/ccanlint/ccanlint.c @@ -37,18 +37,18 @@ static LIST_HEAD(normal_tests); static LIST_HEAD(finished_tests); bool safe_mode = false; static struct btree *exclude; -static bool fastmode = false; +static unsigned int timeout; static void usage(const char *name) { - fprintf(stderr, "Usage: %s [-s] [-n] [-v] [-t] [-d ]\n" + fprintf(stderr, "Usage: %s [-s] [-n] [-v] [-t ] [-d ] [-x ]\n" " -v: verbose mode\n" " -s: simply give one line summary\n" " -d: use this directory instead of the current one\n" " -n: do not compile anything\n" " -l: list tests ccanlint performs\n" " -x: exclude tests (e.g. -x trailing_whitespace,valgrind)\n" - " -t: ignore (terminate) tests that are slow\n", + " -t: ignore (terminate) tests that are slower than this\n", name); exit(1); } @@ -130,9 +130,9 @@ static bool run_test(struct ccanlint *i, return true; } - timeleft = fastmode ? 1000 : default_timeout_ms; + timeleft = timeout ? timeout : default_timeout_ms; result = i->check(m, &timeleft); - if (fastmode && timeleft == 0) { + if (timeout && timeleft == 0) { skip = "timeout"; goto skip; } @@ -320,7 +320,7 @@ int main(int argc, char *argv[]) /* I'd love to use long options, but that's not standard. */ /* FIXME: getopt_long ccan package? */ - while ((c = getopt(argc, argv, "sd:vnlx:t")) != -1) { + while ((c = getopt(argc, argv, "sd:vnlx:t:")) != -1) { switch (c) { case 'd': dir = optarg; @@ -346,7 +346,10 @@ int main(int argc, char *argv[]) btree_insert(exclude, exclude_strs[i]); } break; case 't': - fastmode = true; + timeout = atoi(optarg); + if (!timeout) + errx(1, "Invalid timeout %s: 1 ms minumum", + optarg); break; default: usage(argv[0]); -- 2.39.2