Feat: valgrind

This commit is contained in:
Dorian Zedler 2022-07-20 14:11:26 +02:00
parent 06992f0421
commit 79712efa7f
Signed by: dorian
GPG key ID: 989DE36109AFA354

View file

@ -7,6 +7,10 @@ CFLAGS = -Ilib -ggdb -std=c11 -g -Wall -Wextra -no-pie -O3
LDFLAGS = -pthread LDFLAGS = -pthread
TESTFILES = t/1 t/2 t/5 t/10 t/20 t/50 t/100 t/1000 t/2000 t/5000 t/10000 TESTFILES = t/1 t/2 t/5 t/10 t/20 t/50 t/100 t/1000 t/2000 t/5000 t/10000
TESTFILES_SIZES = ${subst t/,,${TESTFILES}} TESTFILES_SIZES = ${subst t/,,${TESTFILES}}
BLUE=\033[1;36m
RED=\033[1;31m
GREEN=\033[1;32m
NC=\033[0m
all: md2 all: md2
@ -32,9 +36,9 @@ md2: ${OBJ}
t/%: t/%:
@mkdir -p t @mkdir -p t
@echo @echo
@echo "=== Generating ${subst t/,,$@}MB of random data... ===" @echo -e "${BLUE}=== Generating ${subst t/,,$@}MB of random data... ===${NC}"
dd if=/dev/random of=$@ bs=1M count=${subst t/,,$@} status=progress dd if=/dev/random of=$@ bs=1M count=${subst t/,,$@} status=progress
@echo "=== done ===" @echo "${BLUE}=== done ===${NC}"
@echo @echo
benchmarks.csv: md2 ${TESTFILES} benchmarks.csv: md2 ${TESTFILES}
@ -47,13 +51,13 @@ benchmarks.csv: md2 ${TESTFILES}
@for i in 0 1 2 3 4; do \ @for i in 0 1 2 3 4; do \
echo ;\ echo ;\
echo "=== Testing implementation $$i ===";\ echo -e "${BLUE}=== Testing implementation $$i ===${NC}";\
echo -n "Implementierung-$$i" >> $@; \ echo -n "Implementierung-$$i" >> $@; \
for t in $(TESTFILES_SIZES); do \ for t in $(TESTFILES_SIZES); do \
echo -n "- with $${t}MB ... "; \ echo -n "- with $${t}MB ... "; \
if ! rr=$$(./md2 t/$${t} -B1 -V$${i}); then \ if ! rr=$$(./md2 t/$${t} -B1 -V$${i}); then \
echo; \ echo; \
echo "SKIPPED!"; \ echo -e "${RED}ERROR -> SKIPPED!${NC}"; \
echo -n ";0" >> $@; \ echo -n ";0" >> $@; \
else \ else \
r=$$(echo $$rr | xargs | sed -e 's/.*took \(.*\) seconds.*/\1/'); \ r=$$(echo $$rr | xargs | sed -e 's/.*took \(.*\) seconds.*/\1/'); \
@ -62,10 +66,30 @@ benchmarks.csv: md2 ${TESTFILES}
fi; \ fi; \
done; \ done; \
echo "" >> $@; \ echo "" >> $@; \
echo "=== done ===";\ echo -e "${BLUE}=== done ===${NC}";\
echo;\ echo;\
done done
benchmarks: benchmarks.csv benchmarks: benchmarks.csv
.PHONY: all clean help benchmarks lint: md2 t/3
@for i in 0 1 2 3 4; do \
echo; \
echo -e "${BLUE}=== Testing implementation $$i ===${NC}";\
if ! valgrind --error-exitcode=1 --leak-check=full --tool=memcheck -s ./md2 t/3 -V$$i -B1; then \
echo -e "${RED}ERROR found! (see above)${NC}"; \
exit 1; \
fi; \
echo -e "${BLUE}=== done ===${NC}";\
echo; \
done
@if ! valgrind -s ./md2 -T; then \
echo -e "${RED}ERROR found! (see above)${NC}"; \
exit 1;\
fi
@echo -e "${GREEN}=== all implementations PASSED valgrind ===${NC}"
.PHONY: all clean help benchmarks lint