7 changed files with 248 additions and 14 deletions
@ -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) |
||||
bigfile_name=bigfile # large, random test transfer file |
||||
rx_md5sumfile="$file_path"rx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
tx_md5sumfile="$file_path"tx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
|
||||
|
||||
# --- 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 '*** Copying file to intercepted server at' $ncvirtip |
||||
touch "$bigfile_name" |
||||
|
||||
# Check md5 |
||||
md5sum < "$bigfile_name" >> "$rx_md5sumfile" |
||||
tx_md5sum=$(<$tx_md5sumfile) |
||||
|
||||
# ... |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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 openssh-server |
||||
RUN yum clean all |
||||
|
||||
EXPOSE 9993/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,59 @@
|
||||
#!/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) |
||||
bigfile_name=bigfile |
||||
bigfile_size=10M # size of file we want to use for the test |
||||
tx_md5sumfile="$file_path"tx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
|
||||
|
||||
# --- 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 --- |
||||
# Generate large random file for transfer test, share md5sum for monitor container to check |
||||
echo '*** Generating ' "$bigfile_size" ' file' |
||||
dd if=/dev/urandom of=/var/www/html/"$bigfile_name" bs="$bigfile_size" count=1 |
||||
#md5sum /var/www/html/"$bigfile_name" >> "$tx_md5sumfile" |
||||
md5sum < /var/www/html/"$bigfile_name" >> "$tx_md5sumfile" |
||||
echo '*** Wrote MD5 sum to ' "$tx_md5sumfile" |
||||
|
||||
echo '*** Starting application...' |
||||
sleep 0.5 |
||||
|
||||
# wait for rsa public key from monitor |
||||
#while [ ! -s "$file_path$rsa_public_key_file" ]; do |
||||
# sleep 0.2 |
||||
#done |
||||
|
||||
zerotier-intercept /usr/sbin/sshd |
||||
@ -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