aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile21
-rw-r--r--test/test.c7
-rwxr-xr-xvm.sh113
3 files changed, 121 insertions, 20 deletions
diff --git a/Makefile b/Makefile
index 3361d02..6745090 100644
--- a/Makefile
+++ b/Makefile
@@ -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) {
diff --git a/vm.sh b/vm.sh
index e48ba3e..b011402 100755
--- a/vm.sh
+++ b/vm.sh
@@ -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"
}