Merge pull request #3091 from nymtech/feature/check-binaries

Feature/check binaries
This commit is contained in:
Tommy Verrall
2023-02-23 09:55:03 +02:00
committed by GitHub
7 changed files with 480 additions and 31 deletions
+19 -2
View File
@@ -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"
./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"
+107
View File
@@ -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
+67 -8
View File
@@ -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
+73 -19
View File
@@ -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
+106
View File
@@ -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
+108
View File
@@ -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
-2
View File
@@ -1,2 +0,0 @@
#!/bin/bash
# TODO