diff options
author | Magnus Ahltorp <map@kth.se> | 2016-02-12 16:07:20 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2016-04-25 13:14:11 +0200 |
commit | 5eb9ac471fa1b635e70305ecdc57ac82f7af532d (patch) | |
tree | 7ba6ff24dc8fda39abbadb6eb130b4f90cb62868 | |
parent | 27ebeff879126434740af3db63004cb4eb4b0021 (diff) |
Allow all data sizes in permdbtest
-rw-r--r-- | c_src/Makefile | 18 | ||||
-rw-r--r-- | c_src/permdbtest.c | 34 |
2 files changed, 42 insertions, 10 deletions
diff --git a/c_src/Makefile b/c_src/Makefile index 644a8a9..deae883 100644 --- a/c_src/Makefile +++ b/c_src/Makefile @@ -55,5 +55,19 @@ permdb.so: $(permdbso_OBJS) permdbtest: $(permdbtest_OBJS) $(CC) $(permdbtest_OBJS) $(LDFLAGS) -o permdbtest -permdb-valgrind: - valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10000 2048 10000 +permdb-valgrind: permdbtest + rm -f /tmp/permdb-valgrind-test{,.idx} + touch /tmp/permdb-valgrind-test /tmp/permdb-valgrind-test.idx + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10000 2048 1000 + rm /tmp/permdb-valgrind-test.idx + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10000 2048 1000 + rm /tmp/permdb-valgrind-test /tmp/permdb-valgrind-test.idx + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10000 2048 1000 + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10000 2048 1000 + rm /tmp/permdb-valgrind-test /tmp/permdb-valgrind-test.idx + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10 99 1 + rm /tmp/permdb-valgrind-test.idx + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10 99 1 + rm /tmp/permdb-valgrind-test /tmp/permdb-valgrind-test.idx + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10 99 1 + valgrind --leak-check=full ./permdbtest /tmp/permdb-valgrind-test 10 99 1 diff --git a/c_src/permdbtest.c b/c_src/permdbtest.c index 7fb17b7..e4b54c2 100644 --- a/c_src/permdbtest.c +++ b/c_src/permdbtest.c @@ -68,26 +68,28 @@ main(int argc, char *argv[]) void *testdata = gentestdata(nentries); printf("inserting test data\n"); int written_since_fsync = 0; - int datamultiplier = datasize / 32; - if (datasize % 32 != 0) { - printf("datasize %d not multiple of 32, truncating to %d\n", datasize, datamultiplier * 32); - } - datasize = datamultiplier * 32; unsigned char *value = malloc(datasize); for (long long i = 0; i < nentries; i++) { unsigned char *key = testdata + i * 32 * 2; - for (int j = 0; j < datamultiplier; j++) { + for (int j = 0; j < datasize / 32; j++) { memcpy(value + j * 32, testdata + i * 32 * 2 + 32, 32); } + if (datasize % 32 > 0) { + memcpy(value + (datasize / 32) * 32, testdata + i * 32 * 2 + 32, datasize % 32); + } int result = addvalue(state, key, 32, value, datasize); if (result < 0) { - errx(1, "addvalue: %d\n", result); + free(testdata); + permdb_free(state); + errx(1, "addvalue: %d\n", result); } written_since_fsync += 1; if (written_since_fsync >= nfsync) { result = committree(state); if (result < 0) { + free(testdata); + permdb_free(state); errx(1, "committree: %d\n", result); } written_since_fsync = 0; @@ -96,6 +98,8 @@ main(int argc, char *argv[]) free(value); int result = committree(state); if (result < 0) { + free(testdata); + permdb_free(state); errx(1, "committree: %d\n", result); } written_since_fsync = 0; @@ -106,13 +110,27 @@ main(int argc, char *argv[]) size_t datalen; unsigned char *result = getvalue(state, key, 32, &datalen); if (datalen != datasize) { + free(testdata); + permdb_free(state); + free(result); errx(1, "getvalue returned datalen %zd\n", datalen); } - for (int j = 0; j < datamultiplier; j++) { + for (int j = 0; j < datasize / 32; j++) { if (memcmp(result + j * 32, testdata + i * 32 * 2 + 32, 32)) { + free(testdata); + permdb_free(state); + free(result); errx(1, "getvalue returned incorrect data\n"); } } + if (datasize % 32 > 0) { + if (memcmp(result + (datasize / 32) * 32, testdata + i * 32 * 2 + 32, datasize % 32)) { + free(testdata); + permdb_free(state); + free(result); + errx(1, "getvalue returned incorrect data\n"); + } + } free(result); } |