Skip to content

Commit 32cfd32

Browse files
committed
Add cache-test
1 parent 9aaa81f commit 32cfd32

16 files changed

+3233
-3
lines changed

.github/workflows/main.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ jobs:
1313
sudo apt-get install libsdl2-dev
1414
- name: default build
1515
run: make
16-
- name: check
17-
run: make check
16+
- name: check + tests
17+
run: |
18+
make check
19+
make tests
1820
- name: diverse configurations
1921
run: |
2022
make distclean ENABLE_COMPUTED_GOTO=0

Makefile

+3-1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ OBJS := \
9393
emulate.o \
9494
riscv.o \
9595
elf.o \
96+
cache.o \
9697
$(OBJS_EXT) \
9798
main.o
9899

@@ -109,6 +110,7 @@ $(BIN): $(OBJS)
109110

110111
# RISC-V Architecture Tests
111112
include mk/riscv-arch-test.mk
113+
include mk/tests.mk
112114

113115
CHECK_ELF_FILES := \
114116
hello \
@@ -143,7 +145,7 @@ endif
143145
endif
144146

145147
clean:
146-
$(RM) $(BIN) $(OBJS) $(deps)
148+
$(RM) $(BIN) $(OBJS) $(deps) $(CACHE_OUT)
147149
distclean: clean
148150
-$(RM) $(DOOM_DATA) $(QUAKE_DATA)
149151
$(RM) -r $(OUT)/id1

mk/tests.mk

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
CACHE_TEST_DIR := tests/cache
2+
CACHE_BUILD_DIR := build/cache
3+
TARGET := test-cache
4+
5+
CACHE_OBJS := \
6+
test-cache.o
7+
8+
CACHE_OBJS := $(addprefix $(CACHE_BUILD_DIR)/, $(CACHE_OBJS))
9+
OBJS += $(CACHE_OBJS)
10+
deps += $(CACHE_OBJS:%.o=%.o.d)
11+
12+
13+
CACHE_CHECK_ELF_FILES := \
14+
cache-new \
15+
cache-put \
16+
cache-get \
17+
cache-lru-replace \
18+
cache-lfu-replace \
19+
cache-lfu-ghost-replace
20+
21+
CACHE_OUT = $(addprefix $(CACHE_BUILD_DIR)/, $(CACHE_CHECK_ELF_FILES:%=%.out))
22+
23+
tests : $(CACHE_OUT)
24+
$(Q)$(foreach e,$(CACHE_CHECK_ELF_FILES),\
25+
$(PRINTF) "Running $(e) ... "; \
26+
if cmp $(CACHE_TEST_DIR)/$(e).expect $(CACHE_BUILD_DIR)/$(e).out; then \
27+
$(call notice, [OK]); \
28+
else \
29+
$(PRINTF) "Failed.\n"; \
30+
exit 1; \
31+
fi; \
32+
)
33+
34+
$(CACHE_OUT): $(TARGET)
35+
$(Q)$(foreach e,$(CACHE_CHECK_ELF_FILES),\
36+
$(CACHE_BUILD_DIR)/$(TARGET) $(CACHE_TEST_DIR)/$(e).in > $(CACHE_BUILD_DIR)/$(e).out; \
37+
)
38+
39+
$(TARGET): $(CACHE_OBJS)
40+
$(VECHO) " CC\t$@\n"
41+
$(Q)$(CC) $^ build/cache.o -o $(CACHE_BUILD_DIR)/$(TARGET)
42+
43+
$(CACHE_BUILD_DIR)/%.o: $(CACHE_TEST_DIR)/%.c
44+
$(VECHO) " CC\t$@\n"
45+
$(Q)mkdir -p $(dir $@)
46+
$(Q)$(CC) -o $@ $(CFLAGS) -I./src -c -MMD -MF $@.d $<

tests/cache/cache-get.expect

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
NEW CACHE
2+
NULL
3+
NULL
4+
3
5+
FREE CACHE

tests/cache/cache-get.in

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
NEW
2+
GET 1
3+
GET 2
4+
PUT 3 3
5+
GET 3
6+
FREE
+259
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
NEW CACHE
2+
1
3+
2
4+
3
5+
4
6+
5
7+
6
8+
7
9+
8
10+
9
11+
10
12+
11
13+
12
14+
13
15+
14
16+
15
17+
16
18+
17
19+
18
20+
19
21+
20
22+
21
23+
22
24+
23
25+
24
26+
25
27+
26
28+
27
29+
28
30+
29
31+
30
32+
31
33+
32
34+
33
35+
34
36+
35
37+
36
38+
37
39+
38
40+
39
41+
40
42+
41
43+
42
44+
43
45+
44
46+
45
47+
46
48+
47
49+
48
50+
49
51+
50
52+
51
53+
52
54+
53
55+
54
56+
55
57+
56
58+
57
59+
58
60+
59
61+
60
62+
61
63+
62
64+
63
65+
64
66+
65
67+
66
68+
67
69+
68
70+
69
71+
70
72+
71
73+
72
74+
73
75+
74
76+
75
77+
76
78+
77
79+
78
80+
79
81+
80
82+
81
83+
82
84+
83
85+
84
86+
85
87+
86
88+
87
89+
88
90+
89
91+
90
92+
91
93+
92
94+
93
95+
94
96+
95
97+
96
98+
97
99+
98
100+
99
101+
100
102+
101
103+
102
104+
103
105+
104
106+
105
107+
106
108+
107
109+
108
110+
109
111+
110
112+
111
113+
112
114+
113
115+
114
116+
115
117+
116
118+
117
119+
118
120+
119
121+
120
122+
121
123+
122
124+
123
125+
124
126+
125
127+
126
128+
127
129+
128
130+
129
131+
130
132+
131
133+
132
134+
133
135+
134
136+
135
137+
136
138+
137
139+
138
140+
139
141+
140
142+
141
143+
142
144+
143
145+
144
146+
145
147+
146
148+
147
149+
148
150+
149
151+
150
152+
151
153+
152
154+
153
155+
154
156+
155
157+
156
158+
157
159+
158
160+
159
161+
160
162+
161
163+
162
164+
163
165+
164
166+
165
167+
166
168+
167
169+
168
170+
169
171+
170
172+
171
173+
172
174+
173
175+
174
176+
175
177+
176
178+
177
179+
178
180+
179
181+
180
182+
181
183+
182
184+
183
185+
184
186+
185
187+
186
188+
187
189+
188
190+
189
191+
190
192+
191
193+
192
194+
193
195+
194
196+
195
197+
196
198+
197
199+
198
200+
199
201+
200
202+
201
203+
202
204+
203
205+
204
206+
205
207+
206
208+
207
209+
208
210+
209
211+
210
212+
211
213+
212
214+
213
215+
214
216+
215
217+
216
218+
217
219+
218
220+
219
221+
220
222+
221
223+
222
224+
223
225+
224
226+
225
227+
226
228+
227
229+
228
230+
229
231+
230
232+
231
233+
232
234+
233
235+
234
236+
235
237+
236
238+
237
239+
238
240+
239
241+
240
242+
241
243+
242
244+
243
245+
244
246+
245
247+
246
248+
247
249+
248
250+
249
251+
250
252+
251
253+
252
254+
253
255+
254
256+
255
257+
256
258+
REPLACE 1
259+
FREE CACHE

0 commit comments

Comments
 (0)