-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
87 lines (72 loc) · 2.31 KB
/
Copy pathMakefile
File metadata and controls
87 lines (72 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
CC = gcc
CFLAGS = -Wall -Wextra -O2 -pthread
LDFLAGS = -lpthread
SERVER = db_server
CLIENT = db_client
BENCH = db_benchmark
all: $(SERVER) $(CLIENT) $(BENCH)
$(SERVER): kvstore_server.o kvstore.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
$(CLIENT): kvstore_client.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
$(BENCH): benchmark.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(SERVER) $(CLIENT) $(BENCH) *.o data.db data.tmp server.pid /tmp/db_socket
# Benchmarking targets
bench: $(SERVER) $(BENCH)
@echo "Starting server..."
@./$(SERVER) > /dev/null 2>&1 &
@SERVER_PID=$$!; \
sleep 1; \
echo "Running benchmarks..."; \
./$(BENCH) all; \
kill $$SERVER_PID 2>/dev/null || true; \
rm -f /tmp/db_socket data.db data.tmp server.pid
bench-seq-set: $(SERVER) $(BENCH)
@./$(SERVER) > /dev/null 2>&1 &
@SERVER_PID=$$!; \
sleep 1; \
./$(BENCH) seq_set 1000; \
kill $$SERVER_PID 2>/dev/null || true; \
rm -f /tmp/db_socket data.db data.tmp server.pid
bench-seq-get: $(SERVER) $(BENCH)
@./$(SERVER) > /dev/null 2>&1 &
@SERVER_PID=$$!; \
sleep 1; \
./$(BENCH) seq_get 500; \
kill $$SERVER_PID 2>/dev/null || true; \
rm -f /tmp/db_socket data.db data.tmp server.pid
bench-concurrent: $(SERVER) $(BENCH)
@./$(SERVER) > /dev/null 2>&1 &
@SERVER_PID=$$!; \
sleep 1; \
./$(BENCH) concurrent 8 250; \
kill $$SERVER_PID 2>/dev/null || true; \
rm -f /tmp/db_socket data.db data.tmp server.pid
bench-mixed: $(SERVER) $(BENCH)
@./$(SERVER) > /dev/null 2>&1 &
@SERVER_PID=$$!; \
sleep 1; \
./$(BENCH) mixed 1000; \
kill $$SERVER_PID 2>/dev/null || true; \
rm -f /tmp/db_socket data.db data.tmp server.pid
bench-size: $(SERVER) $(BENCH)
@./$(SERVER) > /dev/null 2>&1 &
@SERVER_PID=$$!; \
sleep 1; \
./$(BENCH) size 100; \
kill $$SERVER_PID 2>/dev/null || true; \
rm -f /tmp/db_socket data.db data.tmp server.pid
test: $(SERVER) $(CLIENT)
@echo "Starting server..."
@./$(SERVER) > /dev/null 2>&1 &
@SERVER_PID=$$!; \
sleep 1; \
echo "Running quick functionality test..."; \
(echo "set test_key test_value"; sleep 0.5; echo "get test_key"; sleep 0.5; echo "size"; sleep 0.5; echo "quit") | ./$(CLIENT); \
kill $$SERVER_PID 2>/dev/null || true; \
rm -f /tmp/db_socket data.db data.tmp server.pid
.PHONY: all clean bench bench-seq-set bench-seq-get bench-concurrent bench-mixed bench-size test