diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2025-10-16 21:12:00 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2025-10-16 21:12:00 +0300 |
| commit | e962c7a4c70b6e2c3f2df89be176c491d62739e7 (patch) | |
| tree | a5c22494b81fdc52ff053fc417f5039a2efb6dba | |
| parent | 717eb9512cbd98e965c1b842cbc9d84e218c37c2 (diff) | |
| download | conts-e962c7a4c70b6e2c3f2df89be176c491d62739e7.tar.gz conts-e962c7a4c70b6e2c3f2df89be176c491d62739e7.zip | |
+ Regular tests are pretty darn slow with valgrind on certain virtual
machines, speed them up a bit
| -rw-r--r-- | Makefile | 18 | ||||
| -rw-r--r-- | tests/map.c | 10 | ||||
| -rw-r--r-- | tests/sptree.c | 20 | ||||
| -rw-r--r-- | tests/spvec.c | 16 | ||||
| -rw-r--r-- | tests/test.h | 4 | ||||
| -rw-r--r-- | tests/vec.c | 17 |
6 files changed, 46 insertions, 39 deletions
@@ -2,31 +2,33 @@ CFLAGS = -g -Wall -Wextra -O2 check: check-vec check-spvec check-sptree check-map # see scripts/coverage for coverage testing +TESTITER = 1000 +BENCHITER = 10000000 check-vec: mkdir -p build - $(CC) $(CFLAGS) $(COVERAGEFLAGS) \ + $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \ -Iinclude -Ideps/covsrv/include \ deps/covsrv/src/client.c tests/vec.c -o build/vec ./scripts/run-test ./build/vec check-spvec: mkdir -p build - $(CC) $(CFLAGS) $(COVERAGEFLAGS) \ + $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \ -Iinclude -Ideps/covsrv/include \ deps/covsrv/src/client.c tests/spvec.c -o build/spvec ./scripts/run-test ./build/spvec check-sptree: mkdir -p build - $(CC) $(CFLAGS) $(COVERAGEFLAGS) \ + $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \ -Iinclude -Ideps/covsrv/include \ deps/covsrv/src/client.c tests/sptree.c -o build/sptree ./scripts/run-test ./build/sptree check-map: mkdir -p build - $(CC) $(CFLAGS) $(COVERAGEFLAGS) \ + $(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \ -Iinclude -Ideps/covsrv/include \ deps/covsrv/src/client.c tests/map.c -o build/map ./scripts/run-test ./build/map @@ -35,28 +37,28 @@ bench: bench-vec bench-spvec bench-sptree bench-map bench-vec: mkdir -p build - $(CC) $(CFLAGS) \ + $(CC) $(CFLAGS) -DITER=$(BENCHITER) \ -Iinclude -Ideps/covsrv/include \ tests/vec.c -o build/vec_opt time ./build/vec_opt 2> build/vec_bench.txt bench-spvec: mkdir -p build - $(CC) $(CFLAGS) \ + $(CC) $(CFLAGS) -DITER=$(BENCHITER)\ -Iinclude -Ideps/covsrv/include \ tests/spvec.c -o build/spvec_opt time ./build/spvec_opt 2> build/spvec_bench.txt bench-sptree: mkdir -p build - $(CC) $(CFLAGS) \ + $(CC) $(CFLAGS) -DITER=$(BENCHITER) \ -Iinclude -Ideps/covsrv/include \ tests/sptree.c -o build/sptree_opt time ./build/sptree_opt 2> build/sptree_bench.txt bench-map: mkdir -p build - $(CC) $(CFLAGS) \ + $(CC) $(CFLAGS) -DITER=$(BENCHITER) \ -Iinclude -Ideps/covsrv/include \ tests/map.c -o build/map_opt time ./build/map_opt 2> build/map_bench.txt diff --git a/tests/map.c b/tests/map.c index f9f919b..9af0b01 100644 --- a/tests/map.c +++ b/tests/map.c @@ -37,17 +37,17 @@ int main() assert(false && "iterating empty map"); } - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { if (!ints_insert(&ints, i, i)) { fprintf(stderr, "failed inserting %d\n", i); ints_destroy(&ints); return -1; } } - assert(ints_len(&ints) == 1000000); + assert(ints_len(&ints) == ITER); - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { int *v = ints_find(&ints, i); assert(v && *v == i); } @@ -71,9 +71,9 @@ int main() count++; } - assert(count == 1000000); + assert(count == ITER); - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { ints_remove(&ints, i); } diff --git a/tests/sptree.c b/tests/sptree.c index 9eff356..3499d61 100644 --- a/tests/sptree.c +++ b/tests/sptree.c @@ -16,6 +16,10 @@ #include <conts/sptree.h> +#define RANDITER (ITER / 100) + +int inserted[RANDITER]; + int main() { #if defined(COVERAGE) @@ -29,16 +33,16 @@ int main() assert(false && "iterating empty tree"); } - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { if (!ints_insert(&ints, i)) { fprintf(stderr, "failed inserting %d\n", i); ints_destroy(&ints); return -1; } } - assert(ints_len(&ints) == 1000000); + assert(ints_len(&ints) == ITER); - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { int *v = ints_find(&ints, i); assert(v && *v == i); } @@ -57,7 +61,7 @@ int main() i++; } - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { ints_remove(&ints, i); } @@ -69,25 +73,23 @@ int main() /* insert random integers to hopefully exercise the code a bit more */ srand(0); - int inserted[1000]; - for (int i = 0; i < 1000; ++i) { + for (int i = 0; i < RANDITER; ++i) { inserted[i] = rand(); /* covsrv shouldn't fail anymore */ assert(ints_insert(&ints, inserted[i])); } - for (int i = 0; i < 1000; ++i) { + for (int i = 0; i < RANDITER; ++i) { int *v = ints_find(&ints, inserted[i]); assert(v && *v == inserted[i]); } - for (int i = 0; i < 1000; ++i) { + for (int i = 0; i < RANDITER; ++i) { ints_remove(&ints, inserted[i]); } assert(ints_len(&ints) == 0); - ints_destroy(&ints); } diff --git a/tests/spvec.c b/tests/spvec.c index b46bd88..b169884 100644 --- a/tests/spvec.c +++ b/tests/spvec.c @@ -38,16 +38,16 @@ int main() ints_reset(&ints); assert(ints_len(&ints) == 0); - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { if (!ints_append(&ints, i)) { fprintf(stderr, "failed appending %d to vec\n", i); ints_destroy(&ints); return -1; } } - assert(ints_len(&ints) == 1000000); + assert(ints_len(&ints) == ITER); - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { int *v = ints_at(&ints, i); assert(v && *v == i); } @@ -59,7 +59,7 @@ int main() } /* TEN million !!1! */ - if (!ints_reserve(&ints, 10000000)) { + if (!ints_reserve(&ints, 10 * ITER)) { fprintf(stderr, "failed reserving vec\n"); ints_destroy(&ints); return -1; @@ -69,13 +69,13 @@ int main() * (is shrink necessary when we already have reserve? I * guess it shows intention a bit better and just asserts instead of * maybe fails?) */ - ints_shrink(&ints, 1000000); + ints_shrink(&ints, ITER); /* so the above is equivalent to */ - assert(ints_reserve(&ints, 1000000)); - assert(ints_len(&ints) == 1000000); + assert(ints_reserve(&ints, ITER)); + assert(ints_len(&ints) == ITER); - for (int i = 1000000 - 1; i >= 0; --i) { + for (int i = ITER - 1; i >= 0; --i) { ints_remove(&ints, i); } assert(ints_len(&ints) == 0); diff --git a/tests/test.h b/tests/test.h index 2fa0879..ea50db0 100644 --- a/tests/test.h +++ b/tests/test.h @@ -9,4 +9,8 @@ #define callocc(...) cover_ptr(calloc, __VA_ARGS__) #define reallocc(...) cover_ptr(realloc, __VA_ARGS__) +#ifndef ITER +#define ITER 1000000 +#endif + #endif /* TEST_H */ diff --git a/tests/vec.c b/tests/vec.c index af36b5c..09a8deb 100644 --- a/tests/vec.c +++ b/tests/vec.c @@ -32,16 +32,16 @@ int main() assert(false && "iterating empty vec"); } - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { if (!ints_append(&ints, i)) { fprintf(stderr, "failed appending %d to vec\n", i); ints_destroy(&ints); return -1; } } - assert(ints_len(&ints) == 1000000); + assert(ints_len(&ints) == ITER); - for (int i = 0; i < 1000000; ++i) { + for (int i = 0; i < ITER; ++i) { int *v = ints_at(&ints, i); assert(v && *v == i); } @@ -52,8 +52,7 @@ int main() i++; } - /* TEN million !!1! */ - if (!ints_reserve(&ints, 10000000)) { + if (!ints_reserve(&ints, 10 * ITER)) { fprintf(stderr, "failed reserving vec\n"); ints_destroy(&ints); return -1; @@ -63,13 +62,13 @@ int main() * (is shrink necessary when we already have reserve? I * guess it shows intention a bit better and just asserts instead of * maybe fails?) */ - ints_shrink(&ints, 1000000); + ints_shrink(&ints, ITER); /* so the above is equivalent to */ - assert(ints_reserve(&ints, 1000000)); - assert(ints_len(&ints) == 1000000); + assert(ints_reserve(&ints, ITER)); + assert(ints_len(&ints) == ITER); - for (int i = 1000000 - 1; i >= 0; --i) { + for (int i = ITER - 1; i >= 0; --i) { ints_remove(&ints, i); } assert(ints_len(&ints) == 0); |
