From 79712efa7fcd65ebb52ccb95313f1fc506de024d Mon Sep 17 00:00:00 2001 From: Dorian Zedler Date: Wed, 20 Jul 2022 14:11:26 +0200 Subject: [PATCH] Feat: valgrind --- Implementierung/Makefile | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/Implementierung/Makefile b/Implementierung/Makefile index 5d0ea38..0226926 100644 --- a/Implementierung/Makefile +++ b/Implementierung/Makefile @@ -7,6 +7,10 @@ CFLAGS = -Ilib -ggdb -std=c11 -g -Wall -Wextra -no-pie -O3 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_SIZES = ${subst t/,,${TESTFILES}} +BLUE=\033[1;36m +RED=\033[1;31m +GREEN=\033[1;32m +NC=\033[0m all: md2 @@ -32,9 +36,9 @@ md2: ${OBJ} t/%: @mkdir -p t @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 - @echo "=== done ===" + @echo "${BLUE}=== done ===${NC}" @echo benchmarks.csv: md2 ${TESTFILES} @@ -47,13 +51,13 @@ benchmarks.csv: md2 ${TESTFILES} @for i in 0 1 2 3 4; do \ echo ;\ - echo "=== Testing implementation $$i ===";\ + echo -e "${BLUE}=== Testing implementation $$i ===${NC}";\ echo -n "Implementierung-$$i" >> $@; \ for t in $(TESTFILES_SIZES); do \ echo -n "- with $${t}MB ... "; \ if ! rr=$$(./md2 t/$${t} -B1 -V$${i}); then \ echo; \ - echo "SKIPPED!"; \ + echo -e "${RED}ERROR -> SKIPPED!${NC}"; \ echo -n ";0" >> $@; \ else \ r=$$(echo $$rr | xargs | sed -e 's/.*took \(.*\) seconds.*/\1/'); \ @@ -62,10 +66,30 @@ benchmarks.csv: md2 ${TESTFILES} fi; \ done; \ echo "" >> $@; \ - echo "=== done ===";\ + echo -e "${BLUE}=== done ===${NC}";\ echo;\ done - + 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