@@ -12,51 +12,116 @@ set -v
1212
1313dir=" $( dirname " $0 " ) "
1414
15- cd ${GOPATH} /src/github.com/skydive-project/skydive
15+ root=${GOPATH} /src/github.com/skydive-project/skydive
16+ cd $root
17+
18+ if [ " $DEVMODE " = " true" ]; then
19+ make
1620
17- if [ " $DEVMODE " == " true" ]; then
18- make static
1921 make srpm
2022 VERSION=$( make -s version | cut -d ' -' -f 1)
2123 TAG=$( make -s version | cut -s -d ' -' -f 2- | tr ' -' ' .' )
2224 mock -r centos-7-x86_64 -D " fullver $( make -s version) " --resultdir . --rebuild rpmbuild/SRPMS/skydive-${VERSION} * ${TAG} .src.rpm
2325 mkdir -p rpmbuild/RPMS/{x86_64,noarch}
2426 mv skydive* -${VERSION} -* ${TAG} * .x86_64.rpm rpmbuild/RPMS/x86_64/
2527 mv skydive* -${VERSION} -* ${TAG} * .noarch.rpm rpmbuild/RPMS/noarch/
28+
2629 make docker-image
2730 docker save skydive/skydive:devel -o skydive-docker-devel.tar
31+
32+ make test.functionals.compile
2833fi
2934
3035cd contrib/vagrant
3136
37+ export ANALYZER_COUNT=1
38+ export AGENT_COUNT=1
39+ export SKYDIVE_RELEASE=master
40+
3241function vagrant_cleanup {
42+ set +e
43+ echo " ===== journalctl agent1"
44+ vagrant ssh agent1 -c ' sudo journalctl -xe | grep skydive'
45+ echo " ===== journalctl analyzer1"
46+ vagrant ssh analyzer1 -c ' sudo journalctl -xe | grep skydive'
3347 vagrant destroy --force
3448}
3549trap vagrant_cleanup EXIT
3650
37- export ANALYZER_COUNT=2
38- export AGENT_COUNT=1
39- export SKYDIVE_RELEASE=master
51+ function run_functional_tests {
52+ vagrant ssh-config > vagrant-ssh-config
53+ scp -F vagrant-ssh-config $root /tests/functionals agent1:
54+ rsync -av -e ' ssh -F vagrant-ssh-config' $root /tests/pcaptraces agent1:
55+ AGENT1_IP=$( vagrant ssh-config agent1 | grep HostName | awk ' {print $2}' )
56+ ANALYZER1_IP=$( vagrant ssh-config analyzer1 | grep HostName | awk ' {print $2}' )
57+
58+ vagrant ssh agent1 -c ' for i in $(find /proc/sys/net/bridge/ -type f) ; do echo 0 | sudo tee $i ; done'
59+ vagrant ssh agent1 -c ' sudo iptables -F ; sudo iptables -P FORWARD ACCEPT'
60+
61+ if [ " $mode " = " container" ]; then
62+ OPT=" -nooftests"
63+ fi
64+ vagrant ssh agent1 -c " AGENT1_IP=$AGENT1_IP SKYDIVE_ANALYZERS=\" $ANALYZER1_IP :8082\" sudo -E ./functionals -agenttestsonly -test.v $OPT "
65+
66+ if [ " $mode " = " package" ]; then
67+ for a in analyzer1 agent1; do
68+ echo " ===== ausearch AVC on $a ======"
69+ vagrant ssh $a -c ' sudo ausearch -m avc -r' || true
70+ done
71+ fi
72+ rm -f vagrant-ssh-config
73+ }
74+
75+ function install_skydive_selinux_enforcing {
76+ cat << 'EOF ' | vagrant ssh $1 -- bash -
77+ sudo setenforce 1
78+ sudo sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/sysconfig/selinux
79+ EOF
80+ }
81+
82+ function install_skydive_from_docker_image {
83+ cat << 'EOF ' | vagrant ssh $1 -- bash -
84+ t=$(mktemp -d skydive.docker.XXX)
85+ pushd $t
86+ sudo docker image save skydive/skydive | tar xf - "*/layer.tar"
87+ find . -name "layer.tar" | xargs -n 1 --replace=XXX sudo tar -C / -xf XXX usr/bin/skydive &>/dev/null || true
88+ popd
89+ rm -rf $t
90+ EOF
91+ }
4092
4193for mode in $MODES
4294do
95+ echo " ================== deploying mode $mode ==============================="
4396 DEPLOYMENT_MODE=$mode vagrant box update
4497 DEPLOYMENT_MODE=$mode vagrant up --provision-with common
4598 DEPLOYMENT_MODE=$mode vagrant provision
4699
100+ vagrant ssh analyzer1 -- sudo ntpdate fr.pool.ntp.org
101+ vagrant ssh agent1 -- sudo ntpdate fr.pool.ntp.org
102+
47103 vagrant ssh analyzer1 -- sudo cat /etc/skydive/skydive.yml
48- vagrant ssh analyzer2 -- sudo cat /etc/skydive/skydive.yml
49104
50105 vagrant ssh analyzer1 -- sudo journalctl -n 100 -u skydive-analyzer
51- vagrant ssh analyzer2 -- sudo journalctl -n 100 -u skydive-analyzer
52106 vagrant ssh agent1 -- sudo journalctl -n 100 -u skydive-agent
53107
54108 vagrant ssh analyzer1 -- curl http://localhost:8082
109+
110+ if [ " $mode " = " container" ]; then
111+ install_skydive_from_docker_image analyzer1
112+ install_skydive_from_docker_image agent1
113+ fi
114+
115+ if [ " $mode " = " package" ]; then
116+ install_skydive_selinux_enforcing analyzer1
117+ install_skydive_selinux_enforcing agent1
118+ fi
119+
120+ vagrant ssh analyzer1 -c ' set -e; skydive client query "g.V()"'
121+
55122 if [ " $mode " != " container" ]; then
56- vagrant ssh analyzer1 -c ' set -e; skydive client query "g.V()"'
57- else
58- CONTAINER=$( vagrant ssh analyzer1 -- sudo docker ps | grep ' skydive/skydive:latest' | awk ' {print $1}' )
59- vagrant ssh analyzer1 -- sudo docker exec -t $CONTAINER skydive client query " 'g.V()'"
123+ sleep 10
124+ run_functional_tests
60125 fi
61126
62127 vagrant destroy --force
0 commit comments