2 export DOCKER_HOST
="unix:///var/run/docker.sock"
8 # Wait until a line appears in the screen session.
9 # It starts from the beginning of the log and exits after the first match.
11 #timeout -k 3s ${T} stdbuf -o0 grep -q -m 1 "^${1}" <(tail -F -n+0 screenlog.0)
12 # (HACK) As Jenkins blocks subshell, we must use an intermediate script
18 if strings screenlog.0 | grep -m 1 "\${1}"; then
24 timeout
-k 3s
${T} ${SUBF} "${1}"
31 # Send a command to the screen session, aka into the containernet prompt
32 screen -S sonemu -X stuff "${1}^M
"
36 if ! screen --version | grep 'Screen version'; then
37 # Install screen and do an initial cleanup
38 sudo apt-get update -qq -y
39 sudo apt-get install -y screen
40 screen --version | grep 'Screen version'
42 if ! timeout --version; then
43 # Install coreutils for the timeout command
44 sudo apt-get update -qq -y
45 sudo apt-get install -y coreutils
49 pkill -f 'SCREEN -L -S sonemu' || true
54 # Start containernet with a topology
55 screen -L -S sonemu -d -m sudo python src/emuvim/examples/simple_topology.py
56 # Setup screen for immediate flusing
57 screen -S sonemu -X logfile flush 0
58 # Wait for the cli to start
59 W '^*** Starting CLI:' 60s
63 son-emu-cli compute start -d datacenter1 -n vnf1 && sleep 1s
65 son-emu-cli compute start -d datacenter1 -n vnf2 && sleep 1s
67 son-emu-cli compute list && sleep 1s
69 Cmd 'sh echo "... starting various checks
"'
70 sync # avoid text overlapping
71 Cmd 'vnf1 ifconfig && echo "... checked vnf1
"'
73 Cmd 'vnf2 ifconfig && echo "... checked vnf2
"'
76 Cmd 'vnf1 ping -c 2 vnf2 || echo "... checked
ping"'
77 W "^... checked
ping" 20s
79 # Wait for sonemu to end
82 echo -e '\n\n******************* Result ******************\n\n'
84 echo -e '\n\n*********************************************\n\n'
87 # Check the ping result
88 if grep ', 2 received' screenlog.0; then
89 echo 'No problems detected'
92 echo 'Ping is broken !'