From 8336422c8ad72b98e3af9c038468b62a9eafac3c Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Sat, 14 Feb 2015 19:34:49 +0100 Subject: Add first btree test ; fix first btree test. --- Makefile | 14 +++++++++++++- run_bochs_debug.sh | 7 ------- run_qemu.sh | 6 ------ run_qemu_debug.sh | 7 ------- src/common/libalgo/btree.c | 6 +++--- src/kernel/Makefile | 4 ++-- src/kernel/core/kmain.c | 2 +- src/kernel/core/sys.c | 4 ++-- src/tests/ktests/btree1/Makefile | 1 + src/tests/ktests/btree1/test.c | 41 ++++++++++++++++++++++++++++++++++++++++ src/tests/ktests/rules.make | 8 ++++---- src/tests/run_tests.sh | 4 ++-- 12 files changed, 69 insertions(+), 35 deletions(-) delete mode 100755 run_bochs_debug.sh delete mode 100755 run_qemu.sh delete mode 100755 run_qemu_debug.sh create mode 120000 src/tests/ktests/btree1/Makefile create mode 100644 src/tests/ktests/btree1/test.c diff --git a/Makefile b/Makefile index 44ae021..9bccf44 100644 --- a/Makefile +++ b/Makefile @@ -20,5 +20,17 @@ mrproper: $(MAKE) -C $$dir mrproper; \ done -run_tests: +run_tests: rebuild src/tests/run_tests.sh + +run_qemu: all + qemu-system-i386 -kernel src/kernel/kernel.bin -serial stdio -m 16 -initrd src/apps/init/init.bin + +run_qemu_debug: all + qemu-system-i386 -kernel src/kernel/kernel.bin -serial stdio -s -S & \ + (sleep 0.1; gdb src/kernel/kernel.bin -x gdb_cmd) + +run_bochs_debug: all + ./make_cdrom.sh + bochs -f bochs_debug.cfg -q + diff --git a/run_bochs_debug.sh b/run_bochs_debug.sh deleted file mode 100755 index 7bc7d1c..0000000 --- a/run_bochs_debug.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -cd `dirname $0` - -make || exit 1 -./make_cdrom.sh -bochs -f bochs_debug.cfg -q diff --git a/run_qemu.sh b/run_qemu.sh deleted file mode 100755 index 4dce76a..0000000 --- a/run_qemu.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -cd `dirname $0` - -make || exit 1 -qemu-system-i386 -kernel src/kernel/kernel.bin -serial stdio -m 16 -initrd src/apps/init/init.bin diff --git a/run_qemu_debug.sh b/run_qemu_debug.sh deleted file mode 100755 index 16c0311..0000000 --- a/run_qemu_debug.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -cd `dirname $0` - -make || exit 1 -qemu-system-i386 -kernel src/kernel/kernel.bin -serial stdio -s -S & -(sleep 0.1; gdb src/kernel/kernel.bin -x gdb_cmd) diff --git a/src/common/libalgo/btree.c b/src/common/libalgo/btree.c index da0e25b..08a43ef 100644 --- a/src/common/libalgo/btree.c +++ b/src/common/libalgo/btree.c @@ -24,7 +24,7 @@ btree_t* create_btree(key_cmp_fun_t cf, kv_iter_fun_t relf) { if (t == 0) return 0; t->cf = cf; - t->releasef = relf; + if (t->releasef) t->releasef = relf; t->root = 0; t->nitems = 0; @@ -39,7 +39,7 @@ void delete_btree(btree_t *t) { delete_item_rec(i->left, relf); delete_item_rec(i->right, relf); - relf(i->key, i->val); + if (relf) relf(i->key, i->val); free(i); } @@ -182,7 +182,7 @@ void btree_remove(btree_t *t, const void* key) { new_i = equilibrate(new_i); } - t->releasef(i->key, i->val); + if (t->releasef) t->releasef(i->key, i->val); free(i); t->nitems--; diff --git a/src/kernel/Makefile b/src/kernel/Makefile index cbd6a96..a6f9a1b 100644 --- a/src/kernel/Makefile +++ b/src/kernel/Makefile @@ -1,5 +1,5 @@ -OBJ = core/loader.o core/dbglog.o core/sys.o \ +OBJ = core/loader.o core/dbglog.o \ core/gdt.o core/idt.o core/interrupt.o core/context_switch.o core/thread.o \ core/frame.o core/paging.o core/region.o core/kmalloc.o \ user/vfs.o user/nullfs.o user/process.o user/elf.o user/syscall.o @@ -14,7 +14,7 @@ OUT = kernel.lib include ../rules.make -kernel.bin: kernel.lib core/kmain.o +kernel.bin: kernel.lib core/kmain.o core/sys.o $(LD) $(LDFLAGS) -o $@ $^ all: $(OUT) kernel.bin diff --git a/src/kernel/core/kmain.c b/src/kernel/core/kmain.c index 2e8991e..f5d2ace 100644 --- a/src/kernel/core/kmain.c +++ b/src/kernel/core/kmain.c @@ -28,7 +28,7 @@ #define TEST_PLACEHOLDER_AFTER_KMALLOC #define TEST_PLACEHOLDER_AFTER_TASKING #define TEST_PLACEHOLDER_AFTER_DEVFS -#ifdef IS_A_TEST +#ifdef BUILD_KERNEL_TEST #define BEGIN_TEST(n) dbg_printf("(BEGIN-TEST %s)\n", n); #define TEST_OK { dbg_printf("(TEST-OK)\n"); asm volatile("cli; hlt"); } #include diff --git a/src/kernel/core/sys.c b/src/kernel/core/sys.c index b1e69ad..fceada7 100644 --- a/src/kernel/core/sys.c +++ b/src/kernel/core/sys.c @@ -11,8 +11,8 @@ static void panic_do(const char* type, const char *msg, const char* file, int li dbg_printf("| System halted -_-'\n"); dbg_printf("\\---------------------------------------------------------/"); BOCHS_BREAKPOINT; -#ifdef IS_A_TEST - dbg_printf("(TEST-FAIL)\n"); +#ifdef BUILD_KERNEL_TEST + dbg_printf("\n(TEST-FAIL)\n"); #endif asm volatile("hlt"); } diff --git a/src/tests/ktests/btree1/Makefile b/src/tests/ktests/btree1/Makefile new file mode 120000 index 0000000..4630a7c --- /dev/null +++ b/src/tests/ktests/btree1/Makefile @@ -0,0 +1 @@ +../rules.make \ No newline at end of file diff --git a/src/tests/ktests/btree1/test.c b/src/tests/ktests/btree1/test.c new file mode 100644 index 0000000..1207a28 --- /dev/null +++ b/src/tests/ktests/btree1/test.c @@ -0,0 +1,41 @@ +#include + +void test_btree_1() { + BEGIN_TEST("test-btree-1"); + + // hashtable test + btree_t *ht = create_btree(str_key_cmp_fun, 0); + ASSERT(ht != 0); + + ASSERT(btree_add(ht, "test1", "STRTEST1")); + ASSERT(btree_add(ht, "test2", "STRTEST2")); + ASSERT(btree_find(ht, "test1") != 0 && + strcmp(btree_find(ht, "test1"), "STRTEST1") == 0); + ASSERT(btree_find(ht, "test2") != 0 && + strcmp(btree_find(ht, "test2"), "STRTEST2") == 0); + ASSERT(btree_find(ht, "test") == 0); + + ASSERT(btree_add(ht, "test", "Forever alone")); + ASSERT(btree_find(ht, "test1") != 0 && + strcmp(btree_find(ht, "test1"), "STRTEST1") == 0); + ASSERT(btree_find(ht, "test2") != 0 && + strcmp(btree_find(ht, "test2"), "STRTEST2") == 0); + ASSERT(btree_find(ht, "test") != 0 && + strcmp(btree_find(ht, "test"), "Forever alone") == 0); + + btree_remove(ht, "test1"); + ASSERT(btree_find(ht, "test1") == 0); + ASSERT(btree_find(ht, "test2") != 0 && + strcmp(btree_find(ht, "test2"), "STRTEST2") == 0); + ASSERT(btree_find(ht, "test") != 0 && + strcmp(btree_find(ht, "test"), "Forever alone") == 0); + + delete_btree(ht); + + TEST_OK; +} + +#undef TEST_PLACEHOLDER_AFTER_TASKING +#define TEST_PLACEHOLDER_AFTER_TASKING { test_btree_1(); } + +/* vim: set ts=4 sw=4 tw=0 noet :*/ diff --git a/src/tests/ktests/rules.make b/src/tests/ktests/rules.make index f31ab89..fac175d 100644 --- a/src/tests/ktests/rules.make +++ b/src/tests/ktests/rules.make @@ -1,17 +1,17 @@ LIB = ../../../kernel/kernel.lib -OBJ = kmain.o +OBJ = kmain.o sys.o -CFLAGS = -I . -I ../../../common/include -I ../../../kernel/include -DIS_A_TEST +CFLAGS = -I . -I ../../../common/include -I ../../../kernel/include -DBUILD_KERNEL_TEST LDFLAGS = -T ../../../kernel/linker.ld -Xlinker -Map=test_kernel.map OUT = test_kernel.bin include ../../../rules.make -kmain.o: ../../../kernel/core/kmain.c test.c +%.o: ../../../kernel/core/%.c test.c $(CC) -c $< -o $@ $(CFLAGS) -run_test: all +run_test: rebuild ../run_qemu_test.sh diff --git a/src/tests/run_tests.sh b/src/tests/run_tests.sh index bd23801..470959b 100755 --- a/src/tests/run_tests.sh +++ b/src/tests/run_tests.sh @@ -6,8 +6,8 @@ for FILE in */Makefile */*/Makefile; do TEST=`dirname $FILE` echo -n "Running test $TEST ... " if make -C $TEST run_test > $TEST/test.log 2>&1; then - echo OK + echo -e "\033[0;32mOK\033[0m" else - echo FAIL + echo -e "\033[0;31mFAIL\033[0m" fi done -- cgit v1.2.3