diff --git a/tests/build_and_run.sh b/tests/build_and_run.sh index f6ff95f3cd..765e053bf7 100755 --- a/tests/build_and_run.sh +++ b/tests/build_and_run.sh @@ -19,10 +19,27 @@ echo "working directory ${PWD}" cargo build --release --all #here there should be the applicable binaries to test inits - +echo "running mixnode binary check" ./nym-mixnode-binary-check.sh "$VERSION_NUMBER" sleep 2 echo "running gateway binary check" -#./nym-gateway-binary-check.sh "$VERSION_NUMBER" \ No newline at end of file +./nym-gateway-binary-check.sh "$VERSION_NUMBER" + +sleep 2 + +echo "running socks-5 binary check" +./nym-socks-5-binary-check.sh "$VERSION_NUMBER" + +sleep 2 + +echo "running network-requester binary check" +./nym-network-requester-binary-check.sh "$VERSION_NUMBER" + +sleep 2 + +echo "running client binary check" +./nym-client-binary-check.sh "$VERSION_NUMBER" + + diff --git a/tests/nym-client-binary-check.sh b/tests/nym-client-binary-check.sh new file mode 100755 index 0000000000..ef22d439cd --- /dev/null +++ b/tests/nym-client-binary-check.sh @@ -0,0 +1,107 @@ +#!/bin/bash + +set -e + +. assert.sh -v -x + +PWD="../" +RELEASE_DIRECTORY="target/release" +VERSION_NUMBER=$1 +OUTPUT=$(for i in {1..8}; do echo -n $(($RANDOM % 10)); done) +ID="test-${OUTPUT}" +BINARY_NAME="nym-client" + +echo "the version number is ${VERSION_NUMBER} to be installed from github" + +cd ${PWD}${RELEASE_DIRECTORY} + +# install the current release binary +# so this is dependant on running on a linux machine for the time being + +curl -L https://github.com/nymtech/nym/releases/download/nym-binaries-${RELEASE_VERSION_NUMBER}/$BINARY_NAME -o $BINARY_NAME +chmod u+x $BINARY_NAME + +#---------------------------------------------------------------------------------------------------------- +# functions +#---------------------------------------------------------------------------------------------------------- + +check_nym_client_binary_build() if [ -f $BINARY_NAME ]; then + echo "running init tests" + ./${BINARY_NAME} init --id ${ID} --output-json >/dev/null 2>&1 + + # currently this outputs to a file name name + # we currently store the output in a file in the same directory + + if [ -f client_init_results.json ]; then + OUTPUT=$(cat client_init_results.json) + + # get jq values for things we can assert against + # until the service provider is provided in the output we can validate the id is correct on init + VALUE=$(echo ${OUTPUT} | jq .id) + VALUE=${VALUE#\"} + VALUE=${VALUE%\"} + + echo "${OUTPUT}" + sleep 2 + + # do asserts here based upon the output on init + + assert $(echo ${VALUE}) $(echo ${ID}) + assert_end nym-client-tests + else + echo "exting test no binary found" + fi +else + echo "exting test no binary found" +fi + +#---------------------------------------------------------------------------------------------------------- +# tests +#---------------------------------------------------------------------------------------------------------- +# we run the release version first + +check_nym_client_binary_build + +first_init=$(cat /root/.nym/clients/${ID}/config/config.toml | grep -v "^version =") + +#---------------------------------------------------------------------------------------------------------- +# lets remove the binary then navigate to the target/release directory for checking the latest version +# expect to have successful output and configuration +#---------------------------------------------------------------------------------------------------------- + +if [ -f $BINARY_NAME ]; then + echo "removing client binary" + rm -rf $BINARY_NAME +else + echo "no binary found exiting" + exit 1 +fi + +#---------------------------------------------------------------------------------------------------------- +# we should expect it to pass because no errors should be presented when performing the upgrade of an init +# this should be caught at testing stage - navigate to latest binary build +#---------------------------------------------------------------------------------------------------------- + +cd ${PWD}${RELEASE_DIRECTORY} + +# re-run against the current binary built locally + +echo "diff the config files after each init" +echo "-------------------------------------" + +check_nym_client_binary_build + +second_init=$(cat /root/.nym/clients/${ID}/config/config.toml | grep -v "^version =") + +diff -w <(echo "$first_init") <(echo "$second_init") + +# check the status of the diff +if [ $? -eq 0 ]; then + echo "no differences in config files, exiting script" + exit 0 +else + echo "there are differences in the config files, it may require a fresh init on the binary" + exit 1 +fi + +# we should expect it to pass because no errors should be presented when performing the upgrade of an init diff --git a/tests/nym-gateway-binary-check.sh b/tests/nym-gateway-binary-check.sh index 7489553617..5c8df30fb8 100755 --- a/tests/nym-gateway-binary-check.sh +++ b/tests/nym-gateway-binary-check.sh @@ -9,30 +9,89 @@ RELEASE_DIRECTORY="target/release" VERSION_NUMBER=$1 WALLET_ADDRESS_CONST=n1435n84se65tn7yv536am0sfvng4yyrwj7thhxr MOCK_HOST="1.2.3.4" -OUTPUT=$(for i in {1..8}; do echo -n $(( $RANDOM % 10 )); done) -ID="test-${OUTPUT}" +RANDOM_ID=$(for i in {1..8}; do echo -n $(($RANDOM % 10)); done) +ID="test-${RANDOM_ID}" +BINARY_NAME="nym-gateway" -echo "the version number is ${VERSION_NUMBER}" +echo "the version number is ${VERSION_NUMBER} to be installed from github" cd ${PWD}${RELEASE_DIRECTORY} -if [ -f nym-gateway ]; then +# install the current release binary +# so this is dependant on running on a linux machine for the time being + +curl -L https://github.com/nymtech/nym/releases/download/nym-binaries-${RELEASE_VERSION_NUMBER}/$BINARY_NAME -o $BINARY_NAME +chmod u+x $BINARY_NAME + +#-------------------------------------- +# functions +#-------------------------------------- + +check_gateway_binary_build() if [ -f nym-gateway ]; then echo "running init tests" # we wont use config env files for now # unless we want to use a specific environment - OUTPUT=$(./nym-gateway --output json init --id ${ID} --host ${MOCK_HOST} --wallet-address ${WALLET_ADDRESS_CONST}) > /dev/null 2>&1 - + OUTPUT=$(./nym-gateway --output json init --id ${ID} --host ${MOCK_HOST} --wallet-address ${WALLET_ADDRESS_CONST}) >/dev/null 2>&1 + # get jq values for things we can assert against VALUE=$(echo ${OUTPUT} | jq .wallet_address) VALUE=${VALUE#\"} VALUE=${VALUE%\"} - + + echo $OUTPUT + sleep 2 + # do asserts here based upon the output on init - assert $(cat ${VALUE}) $(echo ${WALLET_ADDRESS_CONST}) + assert $(echo ${VALUE}) $(echo ${WALLET_ADDRESS_CONST}) assert_end nym-gateway-tests else echo "exting test no binary found" fi +#---------------------------------------------------------------------------------------------------------- +# tests +#---------------------------------------------------------------------------------------------------------- +# we run the release version first +check_gateway_binary_build +# whoami +# this is dependant on where it runs on ci potentially, will need to tweak this in the future +first_init=$(cat /root/.nym/gateways/${ID}/config/config.toml | grep -v "^\[gateway\]$" | grep -v "^version =") + +#lets remove the binary then navigate to the target/release directory for checking the latest version +if [ -f "$BINARY_NAME" ]; then + echo "removing nym-gateway" + rm -rf "$BINARY_NAME" + echo "successfully removed nym-gateway" +else + echo "no binary found exiting" + exit 1 +fi + +#---------------------------------------------------------------------------------------------------------- +# we should expect it to pass because no errors should be presented when performing the upgrade of an init +# this should be caught at testing stage - navigate to latest binary build +#---------------------------------------------------------------------------------------------------------- + +cd ${PWD}${RELEASE_DIRECTORY} + +#re run against the current binary built locally + +check_gateway_binary_build + +echo "diff the config files after each init" +echo "-------------------------------------" + +second_init=$(cat /root/.nym/gateways/${ID}/config/config.toml | grep -v "^\[gateway\]$" | grep -v "^version =") + +diff -w <(echo "$first_init") <(echo "$second_init") + +# check the status of the diff +if [ $? -eq 0 ]; then + echo "no differences in config files, exiting script" + exit 0 +else + echo "there are differences in the config files, it may require a fresh init on the binary" + exit 1 +fi diff --git a/tests/nym-mixnode-binary-check.sh b/tests/nym-mixnode-binary-check.sh index 1e62b21318..b670113c0d 100755 --- a/tests/nym-mixnode-binary-check.sh +++ b/tests/nym-mixnode-binary-check.sh @@ -4,31 +4,85 @@ PWD="../" RELEASE_DIRECTORY="target/release" -VERSION_NUMBER=$1 +RELEASE_VERSION_NUMBER=$1 WALLET_ADDRESS_CONST=n1435n84se65tn7yv536am0sfvng4yyrwj7thhxr MOCK_HOST="1.2.3.4" -OUTPUT=$(for i in {1..8}; do echo -n $(( $RANDOM % 10 )); done) +OUTPUT=$(for i in {1..8}; do echo -n $(($RANDOM % 10)); done) ID="test-${OUTPUT}" +BINARY_NAME="nym-mixnode" -echo "the version number is ${VERSION_NUMBER}" +echo "the version number is ${VERSION_NUMBER} to be installed from github" -cd $PWD/$RELEASE_DIRECTORY +# install the current release binary +# so this is dependant on running on a linux machine for the time being +curl -L "https://github.com/nymtech/nym/releases/download/nym-binaries-${RELEASE_VERSION_NUMBER}/${BINARY_NAME}" -o nym-mixnode +chmod u+x "$BINARY_NAME" -if [ -f nym-mixnode ]; then - echo "running init tests" - # we wont use config env files for now - OUTPUT=$(./nym-mixnode --output json init --id ${ID} --host ${MOCK_HOST} --wallet-address ${WALLET_ADDRESS_CONST}) > /dev/null 2>&1 - - # get jq values for things we can assert against - # tidy this bit up - okay for first push - VALUE=$(echo ${OUTPUT} | jq .wallet_address) - VALUE=${VALUE#\"} - VALUE=${VALUE%\"} - - # do asserts here based upon the output on init +#---------------------------------------------------------------------------------------------------------- +# functions +#---------------------------------------------------------------------------------------------------------- - assert $(cat ${VALUE}) $(echo ${WALLET_ADDRESS_CONST}) - assert_end nym-mixnode-tests +check_mixnode_binary_build() { + if [ -f "$BINARY_NAME" ]; then + echo "running init tests" + # we wont use config env files for now + OUTPUT=$(./${BINARY_NAME} --output json init --id ${ID} --host ${MOCK_HOST} --wallet-address ${WALLET_ADDRESS_CONST} >/dev/null) + # get jq values for things we can assert against + # tidy this bit up - okay for first push + + VALUE="$(echo ${OUTPUT} | jq .wallet_address | tr -d '"')" + + # do asserts here based upon the output on init + assert "echo ${VALUE}" $(echo ${WALLET_ADDRESS_CONST}) + assert_end nym-mixnode-tests + else + echo "exiting test no binary found" + fi +} + +#---------------------------------------------------------------------------------------------------------- +# tests +#---------------------------------------------------------------------------------------------------------- + +# we run the release version first +check_mixnode_binary_build +# whoami +# this is dependant on where it runs on ci potentially, will need to tweak this in the future +first_init=$(cat /root/.nym/mixnodes/${ID}/config/config.toml | grep -v "^\[mixnode\]$" | grep -v "^version =") + +#lets remove the binary then navigate to the target/release directory for checking the latest version +if [ -f "$BINARY_NAME" ]; then + echo "removing nym-mixnode" + rm -rf "$BINARY_NAME" + echo "successfully removed nym-mixnode" else - echo "exting test no binary found" + echo "no binary found exiting" + exit 1 +fi + +#---------------------------------------------------------------------------------------------------------- +# we should expect it to pass because no errors should be presented when performing the upgrade of an init +# this should be caught at testing stage - navigate to latest binary build +#---------------------------------------------------------------------------------------------------------- + +cd ${PWD}${RELEASE_DIRECTORY} + +#re run against the current binary built locally + +check_mixnode_binary_build + +echo "diff the config files after each init" +echo "-------------------------------------" + +second_init=$(cat /root/.nym/mixnodes/${ID}/config/config.toml | grep -v "^\[mixnode\]$" | grep -v "^version =") + +diff -w <(echo "$first_init") <(echo "$second_init") + +# check the status of the diff +if [ $? -eq 0 ]; then + echo "no differences in config files, exiting script" + exit 0 +else + echo "there are differences in the config files, it may require a fresh init on the binary" + exit 1 fi diff --git a/tests/nym-network-requester-binary-check.sh b/tests/nym-network-requester-binary-check.sh new file mode 100755 index 0000000000..a82fe1284e --- /dev/null +++ b/tests/nym-network-requester-binary-check.sh @@ -0,0 +1,106 @@ +#!/bin/bash + +set -e + +. assert.sh -v -x + +PWD="../" +RELEASE_DIRECTORY="target/release" +VERSION_NUMBER=$1 +RANDOM_ID=$(for i in {1..8}; do echo -n $(($RANDOM % 10)); done) +ID="test-${RANDOM_ID}" +BINARY_NAME="nym-network-requester" + +echo "the version number is ${VERSION_NUMBER} to be installed from github" + +cd ${PWD}${RELEASE_DIRECTORY} + +# we have now the bundled the client into the network requester, more a less the same output as the client + +curl -L https://github.com/nymtech/nym/releases/download/nym-binaries-${RELEASE_VERSION_NUMBER}/$BINARY_NAME -o $BINARY_NAME +chmod u+x $BINARY_NAME + +#---------------------------------------------------------------------------------------------------------- +# functions +#---------------------------------------------------------------------------------------------------------- + +check_nym_network_requester_binary_build() if [ -f $BINARY_NAME ]; then + echo "running init tests" + ./${BINARY_NAME} init --id ${ID} --output-json >/dev/null 2>&1 + + # currently this outputs to a file name name + # we currently store the output in a file in the same directory + + if [ -f "client_init_results.json" ]; then + OUTPUT=$(cat client_init_results.json) + + # get jq values for things we can assert against + # until the service provider is provided in the output we can validate the id is correct on init + VALUE=$(echo ${OUTPUT} | jq .id) + VALUE=${VALUE#\"} + VALUE=${VALUE%\"} + + echo "${OUTPUT}" + sleep 2 + + # do asserts here based upon the output on init + + assert $(echo ${VALUE}) $(echo ${ID}) + assert_end nym-network-requester-tests + else + echo "exting test no binary found" + fi +else + echo "exting test no binary found" +fi + +#---------------------------------------------------------------------------------------------------------- +# tests +#---------------------------------------------------------------------------------------------------------- +# we run the release version first + +check_nym_network_requester_binary_build + +first_init=$(cat /root/.nym/service-providers/network-requester/${ID}/config/config.toml | grep -v "^version =") + +#---------------------------------------------------------------------------------------------------------- +# lets remove the binary then navigate to the target/release directory for checking the latest version +# expect to have successful output and configuration +#---------------------------------------------------------------------------------------------------------- + +if [ -f $BINARY_NAME ]; then + echo "removing nym-network-requester binary" + rm -rf $BINARY_NAME +else + echo "no binary found exiting" + exit 1 +fi + +#---------------------------------------------------------------------------------------------------------- +# we should expect it to pass because no errors should be presented when performing the upgrade of an init +# this should be caught at testing stage - navigate to latest binary build +#---------------------------------------------------------------------------------------------------------- + +cd ${PWD}${RELEASE_DIRECTORY} + +# re-run against the current binary built locally + +echo "diff the config files after each init" +echo "-------------------------------------" + +check_nym_network_requester_binary_build + +second_init=$(cat /root/.nym/service-providers/network-requester/${ID}/config/config.toml | grep -v "^version =") + +diff -w <(echo "$first_init") <(echo "$second_init") + +# check the status of the diff +if [ $? -eq 0 ]; then + echo "no differences in config files, exiting script" + exit 0 +else + echo "there are differences in the config files, it may require a fresh init on the binary" + exit 1 +fi + +# we should expect it to pass because no errors should be presented when performing the upgrade of an init diff --git a/tests/nym-socks-5-binary-check.sh b/tests/nym-socks-5-binary-check.sh new file mode 100755 index 0000000000..b818db3b9a --- /dev/null +++ b/tests/nym-socks-5-binary-check.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +set -e + +. assert.sh -v -x + +PWD="../" +RELEASE_DIRECTORY="target/release" +VERSION_NUMBER=$1 +MOCK_SERVICE_PROVIDER="36cUqdggtdXixZhmXfyZm3Dep3Q5QsKVPotMrVSmS4oY.ZCCAdFPwPNSTtUMYveA62ttEFe8FDiB3cdheWHtCytX@6Lnxj9vD2YMtSmfe8zp5RBtj1uZLYQAFRxY9q7ANwrZz" +RANDOM_ID=$(for i in {1..8}; do echo -n $(($RANDOM % 10)); done) +ID="test-${RANDOM_ID}" +BINARY_NAME="nym-socks5-client" + +echo "the version number is ${VERSION_NUMBER} to be installed from github" + +cd ${PWD}${RELEASE_DIRECTORY} + +# install the current release binary +# so this is dependant on running on a linux machine for the time being + +curl -L https://github.com/nymtech/nym/releases/download/nym-binaries-${RELEASE_VERSION_NUMBER}/$BINARY_NAME -o $BINARY_NAME +chmod u+x $BINARY_NAME + +#---------------------------------------------------------------------------------------------------------- +# functions +#---------------------------------------------------------------------------------------------------------- + +check_nym_socks5_client_binary_build() if [ -f $BINARY_NAME ]; then + echo "running init tests" + ./${BINARY_NAME} init --id ${ID} --provider ${MOCK_SERVICE_PROVIDER} --output-json >/dev/null 2>&1 + + # currently this outputs to a file name name + # we currently store the output in a file in the same directory + + if [ -f "socks5_client_init_results.json" ]; then + OUTPUT=$(cat socks5_client_init_results.json) + + # get jq values for things we can assert against + # until the service provider is provided in the output we can validate the id is correct on init + VALUE=$(echo ${OUTPUT} | jq .id) + VALUE=${VALUE#\"} + VALUE=${VALUE%\"} + + echo "${OUTPUT}" + sleep 2 + + # do asserts here based upon the output on init + + assert $(echo ${VALUE}) $(echo ${ID}) + assert_end nym-socks-5-client-tests + else + echo "exting test no binary found" + fi +else + echo "exting test no binary found" +fi + +#---------------------------------------------------------------------------------------------------------- +# tests +#---------------------------------------------------------------------------------------------------------- +# we run the release version first + +check_nym_socks5_client_binary_build + +first_init=$(cat /root/.nym/socks5-clients/${ID}/config/config.toml | grep -v "^version =") + +#---------------------------------------------------------------------------------------------------------- +# lets remove the binary then navigate to the target/release directory for checking the latest version +# expect to have successful output and configuration +#---------------------------------------------------------------------------------------------------------- + +if [ -f $BINARY_NAME ]; then + echo "removing socks-5-client binary" + rm -rf $BINARY_NAME +else + echo "no binary found exiting" + exit 1 +fi + +#---------------------------------------------------------------------------------------------------------- +# we should expect it to pass because no errors should be presented when performing the upgrade of an init +# this should be caught at testing stage - navigate to latest binary build +#---------------------------------------------------------------------------------------------------------- + +cd ${PWD}${RELEASE_DIRECTORY} + +# re-run against the current binary built locally + +echo "diff the config files after each init" +echo "-------------------------------------" + +check_nym_socks5_client_binary_build + +second_init=$(cat /root/.nym/socks5-clients/${ID}/config/config.toml | grep -v "^version =") + +diff -w <(echo "$first_init") <(echo "$second_init") + +# check the status of the diff +if [ $? -eq 0 ]; then + echo "no differences in config files, exiting script" + exit 0 +else + echo "there are differences in the config files, it may require a fresh init on the binary" + exit 1 +fi + +# we should expect it to pass because no errors should be presented when performing the upgrade of an init diff --git a/tests/socks5-binary-check.sh b/tests/socks5-binary-check.sh deleted file mode 100755 index 74c27dbf69..0000000000 --- a/tests/socks5-binary-check.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -# TODO \ No newline at end of file