Skip to content
This repository was archived by the owner on Jan 21, 2020. It is now read-only.

Commit fd5894e

Browse files
author
David Chung
authored
End to end tests now includes the manager (#355)
Signed-off-by: David Chung <[email protected]>
1 parent 8269243 commit fd5894e

File tree

3 files changed

+58
-16
lines changed

3 files changed

+58
-16
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ coverage:
141141
go test -test.short -race -coverprofile="../../../$$pkg/coverage.txt" $${pkg} || exit 1; \
142142
done
143143

144-
tutorial-test:
144+
tutorial-test: binaries
145145
@echo "+ $@"
146146
./scripts/tutorial-test
147147

scripts/container-test

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,35 +15,57 @@ DOCKER_RM="${DOCKER_RM:-true}"
1515
cleanup() {
1616
if [ "$DOCKER_RM" = "true" ]; then
1717
echo "cleaning up docker images"
18-
docker ps | grep devbundle | awk '{print $1}' | xargs docker stop
19-
docker ps | grep devbundle | awk '{print $1}' | xargs docker rm
18+
docker ps -a | grep devbundle | awk '{print $1}' | xargs docker stop
19+
docker ps -a | grep devbundle | awk '{print $1}' | xargs docker rm
2020
rm -rf $TEST_DIR
2121
fi
2222
}
2323
trap cleanup EXIT
2424

25+
# set up the directories
26+
2527
mkdir -p $TEST_DIR/plugins
28+
29+
configstore=$TEST_DIR/configs
30+
mkdir -p $configstore
31+
2632
mkdir -p $TEST_DIR/tutorial
2733

2834
volumes="-v $TEST_DIR:/root -v $PWD/docs:/root/docs"
2935

3036
# set the environment variable to use a shorter path so we don't have
3137
# problems with Docker for Mac. See https://github.com/docker/docker/issues/23545
32-
envs="-e INFRAKIT_PLUGINS_DIR=/root"
38+
envs="-e INFRAKIT_PLUGINS_DIR=/root/plugins"
39+
40+
log="--log 5"
3341

3442
server() {
35-
docker run -d --name $1 $envs $volumes $DOCKER_IMAGE:$DOCKER_TAG $@
43+
name=$1
44+
shift;
45+
docker run -d --name $name $envs $volumes $DOCKER_IMAGE:$DOCKER_TAG $@
3646
}
3747

3848
run() {
3949
docker run --rm $envs $volumes $DOCKER_IMAGE:$DOCKER_TAG $@
4050
}
4151

42-
server infrakit-instance-file --dir /root/tutorial/
43-
server infrakit-group-default --poll-interval 500ms
44-
server infrakit-flavor-vanilla
52+
# set the leader -- for os / file based leader detection for manager
53+
leaderfile=$TEST_DIR/leader
54+
echo group > $leaderfile
55+
56+
# start up multiple instances of manager -- typically we want multiple SETS of plugins and managers
57+
# but here for simplicity just start up with multiple managers and one set of plugins
58+
server manager infrakit-manager $log --name group --proxy-for-group group-stateless os --leader-file /root/leader --store-dir /root/configs
59+
server manager1 infrakit-manager $log --name group1 --proxy-for-group group-stateless os --leader-file /root/leader --store-dir /root/configs
60+
server manager2 infrakit-manager $log --name group2 --proxy-for-group group-stateless os --leader-file /root/leader --store-dir /root/configs
4561

46-
sleep 1
62+
sleep 5 # wait for leadership detection to run
63+
64+
server instance-file infrakit-instance-file --dir /root/tutorial/ $log
65+
server group-default infrakit-group-default --poll-interval 500ms --name group-stateless $log
66+
server flavor-vanilla infrakit-flavor-vanilla $log
67+
68+
sleep 2
4769

4870
expect_exact_output() {
4971
message=$1
@@ -81,10 +103,11 @@ expect_output_lines() {
81103
fi
82104
}
83105

84-
expect_output_lines "3 plugins should be discoverable" "run infrakit plugin ls -q" "3"
106+
expect_output_lines "6 plugins should be discoverable" "run infrakit plugin ls -q" "6"
85107

86108
expect_output_lines "0 instances should exist" "run infrakit instance describe -q --name instance-file" "0"
87109

110+
echo "Commiting"
88111
run infrakit group commit /root/docs/cattle.json
89112

90113
echo 'Waiting for group to be provisioned'
@@ -93,7 +116,10 @@ sleep 2
93116
expect_output_lines "5 instances should exist in group" "run infrakit group describe cattle -q" "5"
94117
expect_output_lines "5 instances should exist" "run infrakit instance describe -q --name instance-file" "5"
95118

119+
echo "Free the cattle"
96120
run infrakit group free cattle
121+
122+
echo "Commit again"
97123
run infrakit group commit /root/docs/cattle.json
98124

99125
expect_exact_output "Should be watching one group" "run infrakit group ls -q" "cattle"

scripts/tutorial-test

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,37 @@ set -o nounset
66
HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
77
cd "$HERE/.."
88

9-
make binaries
10-
119
cleanup() {
1210
kill $(jobs -p)
1311
rm -rf tutorial
1412
}
1513
trap cleanup EXIT
1614

15+
mkdir -p tutorial
16+
17+
# infrakit directories
1718
mkdir -p ~/.infrakit/plugins
1819

19-
mkdir -p tutorial
20+
configstore=~/.infrakit/configs
21+
mkdir -p $configstore
22+
23+
# set the leader -- for os / file based leader detection for manager
24+
leaderfile=~/.infrakit/leader
25+
echo group > $leaderfile
26+
27+
# start up multiple instances of manager -- typically we want multiple SETS of plugins and managers
28+
# but here for simplicity just start up with multiple managers and one set of plugins
29+
build/infrakit-manager --name group --proxy-for-group group-stateless os --leader-file $leaderfile --store-dir $configstore &
30+
build/infrakit-manager --name group1 --proxy-for-group group-stateless os --leader-file $leaderfile --store-dir $configstore &
31+
build/infrakit-manager --name group2 --proxy-for-group group-stateless os --leader-file $leaderfile --store-dir $configstore &
32+
33+
sleep 5 # manager needs to detect leadership
34+
35+
build/infrakit-group-default --poll-interval 500ms --name group-stateless &
2036
build/infrakit-instance-file --dir ./tutorial/ &
21-
build/infrakit-group-default --poll-interval 500ms &
2237
build/infrakit-flavor-vanilla &
2338

24-
sleep 1
39+
sleep 2
2540

2641
expect_exact_output() {
2742
message=$1
@@ -59,9 +74,10 @@ expect_output_lines() {
5974
fi
6075
}
6176

62-
expect_output_lines "3 plugins should be discoverable" "build/infrakit plugin ls -q" "3"
77+
expect_output_lines "6 plugins should be discoverable" "build/infrakit plugin ls -q" "6"
6378
expect_output_lines "0 instances should exist" "build/infrakit instance describe -q --name instance-file" "0"
6479

80+
echo "Commiting"
6581
build/infrakit group commit docs/cattle.json
6682

6783
echo 'Waiting for group to be provisioned'

0 commit comments

Comments
 (0)