From a1b42b3d715d29f78be377193cda1cc6be22cbd3 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Thu, 1 Nov 2018 14:33:28 +0100 Subject: [PATCH] Add more memguard checks --- test/memguard-test.c | 90 +++++++++++++++++++++++++++++++++----------- 1 file changed, 69 insertions(+), 21 deletions(-) diff --git a/test/memguard-test.c b/test/memguard-test.c index 8238524..dde5f64 100644 --- a/test/memguard-test.c +++ b/test/memguard-test.c @@ -127,12 +127,12 @@ static void print_test_info(uint64_t timeout_us, uint64_t mem_budget, uint64_t f r.mem, r.mem_ovf ? '!' : ' '); } -void wvtest_pass(bool cond, const char* str) +void wvtest_pass(bool cond, const char* file, int line, const char* str) { - printf("! %s %s\n", str, cond ? "ok" : "FAILURE"); + printf("! %s:%d %s %s\n", file, line, str, cond ? "ok" : "FAILURE"); } -#define WVPASS(cond) wvtest_pass(cond, #cond) +#define WVPASS(cond) wvtest_pass(cond, __FILE__, __LINE__, #cond) #define MGTEST(timeout_us, mem_budget, flags, code) \ ({ \ @@ -165,26 +165,74 @@ int main(int argc, char *argv[]) struct mg_ret r; for (uint64_t flags = 0; flags < 4; flags++) { compute_kernel(1); /* warm up */ + + /////////////////////////////////////////////////////// r = MGTEST(5000, 10000, flags, compute_kernel(1000)); - WVPASS(!r.mem_ovf); + WVPASS(!r.time_ovf); + WVPASS(r.time > 900); + + r = MGTEST(500, 10000, flags, compute_kernel(1000)); + WVPASS(r.time_ovf); WVPASS(r.time > 900); - MGTEST(500, 10000, flags, compute_kernel(1000)); - MGTEST(5000, 10000, flags, compute_kernel(2000)); - MGTEST(500, 10000, flags, compute_kernel(2000)); - - MGTEST(100000, 500000, flags, read_memory(100000)); - MGTEST(100000, 50000, flags, read_memory(100000)); - MGTEST(100000, 500000, flags, read_memory_rnd(100000)); - MGTEST(100000, 50000, flags, read_memory_rnd(100000)); - MGTEST(100000, 500000, flags, write_memory(100000)); - MGTEST(100000, 50000, flags, write_memory(100000)); - - MGTEST(100000, 5000000, flags, read_memory(1000000)); - MGTEST(100000, 500000, flags, read_memory(1000000)); - MGTEST(100000, 5000000, flags, read_memory_rnd(1000000)); - MGTEST(100000, 500000, flags, read_memory_rnd(1000000)); - MGTEST(100000, 5000000, flags, write_memory(1000000)); - MGTEST(100000, 500000, flags, write_memory(1000000)); + + r = MGTEST(5000, 10000, flags, compute_kernel(2000)); + WVPASS(!r.time_ovf); + WVPASS(r.time > 1900); + + r = MGTEST(500, 10000, flags, compute_kernel(2000)); + WVPASS(r.time_ovf); + WVPASS(r.time > 1900); + + /////////////////////////////////////////////////////// + r = MGTEST(100000, 500000, flags, read_memory(100000)); + WVPASS(!r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 50000, flags, read_memory(100000)); + WVPASS(r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 500000, flags, read_memory_rnd(100000)); + WVPASS(!r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 50000, flags, read_memory_rnd(100000)); + WVPASS(r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 500000, flags, write_memory(100000)); + WVPASS(!r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 50000, flags, write_memory(100000)); + WVPASS(r.mem_ovf); + WVPASS(r.mem >= 100000); + + + /////////////////////////////////////////////////////// + r = MGTEST(100000, 5000000, flags, read_memory(1000000)); + WVPASS(!r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 500000, flags, read_memory(1000000)); + WVPASS(r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 5000000, flags, read_memory_rnd(1000000)); + WVPASS(!r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 500000, flags, read_memory_rnd(1000000)); + WVPASS(r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 5000000, flags, write_memory(1000000)); + WVPASS(!r.mem_ovf); + WVPASS(r.mem >= 100000); + + r = MGTEST(100000, 500000, flags, write_memory(1000000)); + WVPASS(r.mem_ovf); + WVPASS(r.mem >= 100000); printf("\n"); } -- 2.39.2