22 changed files with 469 additions and 7 deletions
Binary file not shown.
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
Test: nodejs server did NOT respond! |
||||
Test: nodejs server did NOT respond! |
||||
Test: nodejs server did NOT respond! |
||||
@ -1 +0,0 @@
|
||||
Test: md5 sum ok! |
||||
@ -1 +0,0 @@
|
||||
Test: md5 sum ok! |
||||
@ -1 +0,0 @@
|
||||
Test: md5 sum ok! |
||||
Binary file not shown.
@ -0,0 +1,8 @@
|
||||
Network Containers Test Sequence for: httpd_demo |
||||
|
||||
1) Creates a Netcon docker container with an intercepted instance of httpd |
||||
2) Creates a test monitor container |
||||
|
||||
3) Test monitor container waits for X seconds for the Netcon container to come online |
||||
4) Test monitor attempts to curl an index.html file |
||||
- If file is of sufficient size, it will append "OK." to the result file for this test, otherwise "FAIL." is appended |
||||
@ -0,0 +1,7 @@
|
||||
var http = require('http'); |
||||
var server = http.createServer(function (request, response) { |
||||
response.writeHead(200, {"Content-Type": "text/plain"}); |
||||
response.end("Welcome to the machine!\n"); |
||||
}); |
||||
server.listen(8080); |
||||
console.log("Server running!"); |
||||
@ -0,0 +1,25 @@
|
||||
# ZT Network Containers Test Monitor |
||||
FROM fedora:23 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
EXPOSE 9993/udp |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD monitor_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD monitor_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so / |
||||
RUN mkdir -p ext/bin/lwip |
||||
RUN cp liblwip.so ext/bin/lwip/liblwip.so |
||||
|
||||
# Start ZeroTier-One |
||||
ADD monitor_entrypoint.sh /monitor_entrypoint.sh |
||||
RUN chmod -v +x /monitor_entrypoint.sh |
||||
CMD ["./monitor_entrypoint.sh"] |
||||
@ -0,0 +1,65 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls *.conf) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
netcon_wait_time=25 # wait for test container to come online |
||||
app_timeout_time=15 # app-specific timeout |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
fail=FAIL. # appended to result file in event of failure |
||||
ok=OK. # appended to result file in event of success |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
|
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test Monitor' |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' |
||||
echo '*** Waiting for initial identity generation...' |
||||
while [ ! -s /var/lib/zerotier-one/identity.secret ]; do |
||||
sleep 0.2 |
||||
done |
||||
echo '*** Waiting for network config...' |
||||
virtip4="" |
||||
while [ ! -s /var/lib/zerotier-one/networks.d/"$nwconf" ]; do |
||||
sleep 0.2 |
||||
done |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
done |
||||
echo '*** Starting Test...' |
||||
echo '*** Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Sleeping for (' "$netcon_wait_time" 's ) while we wait for the Network Container to come online...' |
||||
sleep "$netcon_wait_time"s |
||||
ncvirtip=$(<$address_file) |
||||
|
||||
|
||||
# --- Test section --- |
||||
echo '*** Curling from intercepted server at' $ncvirtip |
||||
response_string=$(curl --connect-timeout "$app_timeout_time" -v http://"$ncvirtip":8080/) |
||||
|
||||
if [[ $response_string == *"welcome to the machine!"* ]] |
||||
then |
||||
echo 'NODEJS RESPONSE OK' |
||||
touch "$file_path$ok$test_name.txt" |
||||
printf 'Test: nodejs-server responded!\n' >> "$file_path$ok$test_name.txt" |
||||
else |
||||
echo 'NODEJS RESPONSE FAIL' |
||||
touch "$file_path$fail$test_name.txt" |
||||
printf 'Test: nodejs server did NOT respond!\n' >> "$file_path$fail$test_name.txt" |
||||
fi |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
# ZT Network Containers Test |
||||
FROM fedora:23 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
# Install apps |
||||
RUN yum -y update |
||||
RUN yum -y install nodejs |
||||
RUN yum clean all |
||||
|
||||
EXPOSE 9993/udp 8080/udp |
||||
|
||||
# |
||||
ADD httpserver.js / |
||||
|
||||
# Install syscall intercept library |
||||
ADD zerotier-intercept / |
||||
ADD libzerotierintercept.so.1.0 / |
||||
RUN cp libzerotierintercept.so.1.0 lib/libzerotierintercept.so.1.0 |
||||
RUN cp libzerotierintercept.so.1.0 /lib/libzerotierintercept.so.1.0 |
||||
RUN ln -sf /lib/libzerotierintercept.so.1.0 /lib/libzerotierintercept |
||||
RUN /usr/bin/install -c zerotier-intercept /usr/bin |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD netcon_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD netcon_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
|
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
|
||||
# Install test scripts |
||||
ADD netcon_entrypoint.sh /netcon_entrypoint.sh |
||||
RUN chmod -v +x /netcon_entrypoint.sh |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so / |
||||
RUN mkdir -p ext/bin/lwip |
||||
RUN cp liblwip.so ext/bin/lwip/liblwip.so |
||||
|
||||
# Start ZeroTier-One |
||||
CMD ["./netcon_entrypoint.sh"] |
||||
@ -0,0 +1,43 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls *.conf) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
|
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test: ' "$test_name" |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' |
||||
echo '*** Waiting for initial identity generation...' |
||||
while [ ! -s /var/lib/zerotier-one/identity.secret ]; do |
||||
sleep 0.2 |
||||
done |
||||
echo '*** Waiting for network config...' |
||||
virtip4="" |
||||
while [ ! -s /var/lib/zerotier-one/networks.d/"$nwconf" ]; do |
||||
sleep 0.2 |
||||
done |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
done |
||||
echo '*** Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Writing address to ' "$address_file" |
||||
echo $virtip4 > "$address_file" |
||||
|
||||
|
||||
# --- Test section --- |
||||
echo '*** Starting application...' |
||||
sleep 0.5 |
||||
zerotier-intercept node httpserver.js |
||||
@ -0,0 +1,40 @@
|
||||
|
||||
test_name=${PWD##*/} |
||||
echo 'Building dockerfiles for test: ' "$test_name" |
||||
touch "$test_name".name |
||||
|
||||
# Docker won't allow the inclusion of files outside of the build directory |
||||
cp ../../*.conf . |
||||
cp ../../zerotier-one zerotier-one |
||||
cp ../../zerotier-cli zerotier-cli |
||||
cp ../../zerotier-intercept zerotier-intercept |
||||
cp ../../libzerotierintercept.so.1.0 libzerotierintercept.so.1.0 |
||||
cp ../../liblwip.so liblwip.so |
||||
cp ../../netcon_identity.public netcon_identity.public |
||||
cp ../../netcon_identity.secret netcon_identity.secret |
||||
cp ../../monitor_identity.public monitor_identity.public |
||||
cp ../../monitor_identity.secret monitor_identity.secret |
||||
|
||||
docker build --tag="$test_name" -f netcon_dockerfile . |
||||
docker build --tag="$test_name"_monitor -f monitor_dockerfile . |
||||
|
||||
rm -f zerotier-one |
||||
rm -f zerotier-cli |
||||
rm -f zerotier-intercept |
||||
rm -f libzerotierintercept.so.1.0 |
||||
rm -f liblwip.so |
||||
rm -f netcon_identity.public |
||||
rm -f netcon_identity.secret |
||||
rm -f monitor_identity.public |
||||
rm -f monitor_identity.secret |
||||
rm -f *.conf |
||||
rm -f *.name |
||||
|
||||
# Start netcon container to be tested |
||||
docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name":latest |
||||
docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name"_monitor:latest |
||||
|
||||
sleep 45s |
||||
docker kill $(docker ps -a -q) |
||||
|
||||
rm -rf ../../_results/*.tmp |
||||
@ -0,0 +1,8 @@
|
||||
Network Containers Test Sequence for: httpd_demo |
||||
|
||||
1) Creates a Netcon docker container with an intercepted instance of httpd |
||||
2) Creates a test monitor container |
||||
|
||||
3) Test monitor container waits for X seconds for the Netcon container to come online |
||||
4) Test monitor attempts to curl an index.html file |
||||
- If file is of sufficient size, it will append "OK." to the result file for this test, otherwise "FAIL." is appended |
||||
@ -0,0 +1,3 @@
|
||||
local msg = "welcome to the machine!" |
||||
redis.call("SET", "msg", msg) |
||||
return redis.call("GET", "msg") |
||||
@ -0,0 +1,29 @@
|
||||
# ZT Network Containers Test Monitor |
||||
FROM fedora:23 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
RUN yum -y install redis-3.0.4-1.fc23.x86_64 |
||||
|
||||
EXPOSE 9993/udp |
||||
|
||||
ADD hello.lua / |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD monitor_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD monitor_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so / |
||||
RUN mkdir -p ext/bin/lwip |
||||
RUN cp liblwip.so ext/bin/lwip/liblwip.so |
||||
|
||||
# Start ZeroTier-One |
||||
ADD monitor_entrypoint.sh /monitor_entrypoint.sh |
||||
RUN chmod -v +x /monitor_entrypoint.sh |
||||
CMD ["./monitor_entrypoint.sh"] |
||||
@ -0,0 +1,64 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls *.conf) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
netcon_wait_time=25 # wait for test container to come online |
||||
app_timeout_time=15 # app-specific timeout |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
fail=FAIL. # appended to result file in event of failure |
||||
ok=OK. # appended to result file in event of success |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
|
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test Monitor' |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' |
||||
echo '*** Waiting for initial identity generation...' |
||||
while [ ! -s /var/lib/zerotier-one/identity.secret ]; do |
||||
sleep 0.2 |
||||
done |
||||
echo '*** Waiting for network config...' |
||||
virtip4="" |
||||
while [ ! -s /var/lib/zerotier-one/networks.d/"$nwconf" ]; do |
||||
sleep 0.2 |
||||
done |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
done |
||||
echo '*** Starting Test...' |
||||
echo '*** Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Sleeping for (' "$netcon_wait_time" 's ) while we wait for the Network Container to come online...' |
||||
sleep "$netcon_wait_time"s |
||||
ncvirtip=$(<$address_file) |
||||
|
||||
|
||||
# --- Test section --- |
||||
echo '*** Running lua script against redis host at' $ncvirtip |
||||
redis-cli -h $ncvirtip EVAL "$(cat hello.lua)" 0 > redis_response.txt |
||||
response_string=$(<redis_response.txt) |
||||
|
||||
if [[ $response_string == *"welcome to the machine!"* ]] |
||||
then |
||||
echo 'REDIS RESPONSE OK' |
||||
touch "$file_path$ok$test_name.txt" |
||||
printf 'Test: redis-server responded!\n' >> "$file_path$ok$test_name.txt" |
||||
else |
||||
echo 'REDIS RESPONSE FAIL' |
||||
touch "$file_path$fail$test_name.txt" |
||||
printf 'Test: redis server did NOT respond!\n' >> "$file_path$fail$test_name.txt" |
||||
fi |
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
# ZT Network Containers Test |
||||
FROM fedora:23 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
# Install apps |
||||
RUN yum -y update |
||||
RUN yum -y install redis-3.0.4-1.fc23.x86_64 |
||||
RUN yum clean all |
||||
|
||||
EXPOSE 9993/udp 6379/udp |
||||
|
||||
# Install syscall intercept library |
||||
ADD zerotier-intercept / |
||||
ADD libzerotierintercept.so.1.0 / |
||||
RUN cp libzerotierintercept.so.1.0 lib/libzerotierintercept.so.1.0 |
||||
RUN cp libzerotierintercept.so.1.0 /lib/libzerotierintercept.so.1.0 |
||||
RUN ln -sf /lib/libzerotierintercept.so.1.0 /lib/libzerotierintercept |
||||
RUN /usr/bin/install -c zerotier-intercept /usr/bin |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD netcon_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD netcon_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
|
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
|
||||
# Install test scripts |
||||
ADD netcon_entrypoint.sh /netcon_entrypoint.sh |
||||
RUN chmod -v +x /netcon_entrypoint.sh |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so / |
||||
RUN mkdir -p ext/bin/lwip |
||||
RUN cp liblwip.so ext/bin/lwip/liblwip.so |
||||
|
||||
# Start ZeroTier-One |
||||
CMD ["./netcon_entrypoint.sh"] |
||||
@ -0,0 +1,43 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls *.conf) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
|
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test: ' "$test_name" |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' |
||||
echo '*** Waiting for initial identity generation...' |
||||
while [ ! -s /var/lib/zerotier-one/identity.secret ]; do |
||||
sleep 0.2 |
||||
done |
||||
echo '*** Waiting for network config...' |
||||
virtip4="" |
||||
while [ ! -s /var/lib/zerotier-one/networks.d/"$nwconf" ]; do |
||||
sleep 0.2 |
||||
done |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
done |
||||
echo '*** Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Writing address to ' "$address_file" |
||||
echo $virtip4 > "$address_file" |
||||
|
||||
|
||||
# --- Test section --- |
||||
echo '*** Starting application...' |
||||
sleep 0.5 |
||||
zerotier-intercept /usr/bin/redis-server --port 6379 |
||||
@ -0,0 +1,40 @@
|
||||
|
||||
test_name=${PWD##*/} |
||||
echo 'Building dockerfiles for test: ' "$test_name" |
||||
touch "$test_name".name |
||||
|
||||
# Docker won't allow the inclusion of files outside of the build directory |
||||
cp ../../*.conf . |
||||
cp ../../zerotier-one zerotier-one |
||||
cp ../../zerotier-cli zerotier-cli |
||||
cp ../../zerotier-intercept zerotier-intercept |
||||
cp ../../libzerotierintercept.so.1.0 libzerotierintercept.so.1.0 |
||||
cp ../../liblwip.so liblwip.so |
||||
cp ../../netcon_identity.public netcon_identity.public |
||||
cp ../../netcon_identity.secret netcon_identity.secret |
||||
cp ../../monitor_identity.public monitor_identity.public |
||||
cp ../../monitor_identity.secret monitor_identity.secret |
||||
|
||||
docker build --tag="$test_name" -f netcon_dockerfile . |
||||
docker build --tag="$test_name"_monitor -f monitor_dockerfile . |
||||
|
||||
rm -f zerotier-one |
||||
rm -f zerotier-cli |
||||
rm -f zerotier-intercept |
||||
rm -f libzerotierintercept.so.1.0 |
||||
rm -f liblwip.so |
||||
rm -f netcon_identity.public |
||||
rm -f netcon_identity.secret |
||||
rm -f monitor_identity.public |
||||
rm -f monitor_identity.secret |
||||
rm -f *.conf |
||||
rm -f *.name |
||||
|
||||
# Start netcon container to be tested |
||||
docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name":latest |
||||
docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name"_monitor:latest |
||||
|
||||
sleep 45s |
||||
docker kill $(docker ps -a -q) |
||||
|
||||
rm -rf ../../_results/*.tmp |
||||
Loading…
Reference in new issue