diff options
| -rw-r--r-- | Makefile | 21 | ||||
| -rw-r--r-- | test/test.c | 7 | ||||
| -rwxr-xr-x | vm.sh | 113 |
3 files changed, 121 insertions, 20 deletions
@@ -1,17 +1,21 @@ -.PHONY: kpl_test_memory kpl_test_thread clean +.PHONY: kpl_test_memory kpl_test_thread rsync_list clean MAKEFLAGS := -j$(shell nproc) +INCLUDE_DIR := include +SOURCE_DIR := source +TEST_DIR := test + CC := gcc OO := -g -Og FFLAGS := -fno-omit-frame-pointer -fhardened WFLAGS := -Wall -Wextra -Wstack-protector -CFLAGS = -std=gnu99 $(FLAGS) -I./include $(OO) $(FFLAGS) $(WFLAGS) +CFLAGS = -std=gnu99 $(FLAGS) -I./$(INCLUDE_DIR) $(OO) $(FFLAGS) $(WFLAGS) CCOBJ = $(CC) $(CFLAGS) -o $@ $^ -SOURCE_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./source/*.c)) -TEST_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./test/*.c)) +SOURCE_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./$(SOURCE_DIR)/*.c)) +TEST_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./$(TEST_DIR)/*.c)) kpl: OO := -O2 kpl: WFLAGS += -Werror @@ -28,6 +32,15 @@ kpl_test_memory: kpl_test kpl_test_thread: FFLAGS += -fsanitize=thread kpl_test_thread: kpl_test +rsync_list: + @echo "$(INCLUDE_DIR)/" + @echo "$(INCLUDE_DIR)/*/" + @echo "$(SOURCE_DIR)/" + @echo "$(TEST_DIR)/" + @echo "*.c" + @echo "*.h" + @echo "Makefile" + clean: @rm -fv kpl @rm -fv kpl_test diff --git a/test/test.c b/test/test.c index b232e4c..c0ef935 100644 --- a/test/test.c +++ b/test/test.c @@ -38,9 +38,10 @@ static int32_t kpl_test_error_list(void) { return KPL_EXIT_CODE_SUCCESS; } printf(KPL_COLOR2(BOLD, LIGHT_RED) "FAILED TEST COUNT:" KPL_COLOR(RESET) - KPL_COLOR(WHITE) " %d\n" KPL_COLOR(RESET), _kpl_test_error_count); + KPL_COLOR(WHITE) " %d\n\n" KPL_COLOR(RESET), _kpl_test_error_count); while (_kpl_error_head) { kpl_test_report_error(_kpl_error_head, false); + putchar('\n'); _kpl_error_head = _kpl_error_head->next_test; } return KPL_EXIT_CODE_ERROR; @@ -141,8 +142,8 @@ int32_t main(int32_t argc, char *argv[]) { KPL_TEST(test_pass_by_default) { // Pass by default - // Uncomment below to fail - // KPL_FAIL("Failure Message"); + // Uncomment below to f ail + KPL_FAIL("Failure Message"); } KPL_TEST(test_counting) { @@ -7,6 +7,7 @@ ARG_COUNT=$# DIR="qemu" USER="user" HOST="localhost" +RSYNC_LIST="rsync_list" CORES="2" MEMORY="2G" DEVICE="virtio-net-pci,netdev=net0" @@ -45,6 +46,7 @@ vm_init() { mkdir $DIR echo "DO NOT MODIFY CONTENTS OF THIS DIRECTORY" > "$DIR/README" fi + make rsync_list > "$DIR/$RSYNC_LIST" cd $DIR if [[ ! -d "$USER" ]] then @@ -68,10 +70,10 @@ vm_setup() { echo $HEADER echo " mkdir .ssh; cd .ssh; echo \"$PUB\" > authorized_keys; chmod 600 authorized_keys; cd ~" echo $HEADER - echo " sudo apt update; sudo apt upgrade; sudo apt install ssh make gcc gdb; sudo poweroff" + echo " sudo apt update; yes | sudo apt upgrade; yes | sudo apt install ssh make gcc gdb rsync; sudo poweroff" } -vm_check() { +vm_machine_check() { if [[ "$1" != "$X64" && "$1" != "$A64" ]] then echo "Usage $SCRIPT $OPTION $X64|$A64" @@ -107,9 +109,18 @@ vm_boot() { "${CMD[@]}" } -vm_cli() { +vm_dir_check() { + if [[ ! -d "$DIR" ]] + then + echo "Environment not setup, run: $SCRIPT -init" + exit 1 + fi cd $DIR - vm_check $VM +} + +vm_cli() { + vm_dir_check + vm_machine_check $VM if [[ $? != 0 ]] then return @@ -118,15 +129,17 @@ vm_cli() { } vm_start() { - cd $DIR + vm_dir_check if [[ $ARG_COUNT == 2 ]] then - vm_check $VM + vm_machine_check $VM if [[ $? == 0 ]] then vm_boot $VM "-display" "none" "-daemonize" - return + else + echo "Invalid Machine Specified" fi + return fi for NAME in "${NAMES[@]}" do @@ -134,32 +147,105 @@ vm_start() { done } +vm_ssh_options() { + local MACHINE=$1 + local -n OPTIONS=$2 + OPTIONS=( + "ssh" + "-o" "UserKnownHostsFile=/dev/null" + "-o" "StrictHostKeyChecking=no" + "-p" "${SSH_PORTS[$MACHINE]}" + ) +} + vm_cmd() { - vm_check $1 + local MACHINE=$1 + vm_machine_check $MACHINE if [[ $? != 0 ]] then return fi - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "$USER@$HOST" -p "${SSH_PORTS[$1]}" $2 + local SSH_OPTIONS=() + vm_ssh_options $MACHINE SSH_OPTIONS + "${SSH_OPTIONS[@]}" "$USER@$HOST" $2 } vm_ssh() { - cd $DIR + vm_dir_check ssh-add "$USER/$USER" &> /dev/null vm_cmd $VM } +vm_rsync_machine() { + local MACHINE=$1 + vm_machine_check $MACHINE + if [[ $? != 0 ]] + then + echo "Invalid Machine Specified" + return + fi + local SSH_OPTIONS=() + vm_ssh_options $MACHINE SSH_OPTIONS + SSH_STRING="${SSH_OPTIONS[@]}" + local CMD=( + "rsync" + "-avz" + "-e" "$SSH_STRING" + "--include-from=$DIR/$RSYNC_LIST" + "--exclude=*" + "$PWD/" + "$USER@$HOST:/home/$USER" + ) + echo "${CMD[*]}" + ssh-add "$DIR/$USER/$USER" &> /dev/null + "${CMD[@]}" +} + vm_sync() { - echo "TODO ${FUNCNAME[0]}" + if [[ "$ARG_COUNT" == 2 ]] + then + vm_rsync_machine $VM + return + fi + for NAME in "${NAMES[@]}" + do + vm_rsync_machine $NAME + done +} + +vm_test_cmd() { + local MACHINE=$1 + vm_cmd $MACHINE "make kpl_test; ./kpl_test -a" } vm_test() { - echo "TODO ${FUNCNAME[0]}" + if [[ "$ARG_COUNT" == 2 ]] + then + vm_rsync_machine $VM + vm_test_cmd $VM + return + fi + local -A TEST_STATUS=([$X64]=0 [$A64]=0) + for NAME in "${NAMES[@]}" + do + vm_rsync_machine $NAME + vm_test_cmd $NAME + TEST_STATUS[$NAME]=$? + done + for NAME in "${NAMES[@]}" + do + if [[ ${TEST_STATUS[$NAME]} != 0 ]] + then + echo "----------------------------" + echo " MACHINE $NAME FAILED TESTS" + echo "----------------------------" + fi + done } vm_stop() { local ACTION="$1" - cd $DIR + vm_dir_check if [[ "$ACTION" != "KILL" ]] then ssh-add "$USER/$USER" &> /dev/null @@ -193,6 +279,7 @@ vm_clean() { echo return fi + vm_stop "KILL" rm -r $DIR echo -e "\nRemoved $DIR directory" } |
