integration: events: Fix race condition in tests.

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
Andrea Luzzardi 2015-05-08 18:22:55 -07:00
parent 4e118defc2
commit c8f0fa545a
1 changed files with 16 additions and 12 deletions

View File

@ -8,27 +8,31 @@ function teardown() {
} }
@test "docker events" { @test "docker events" {
TEMP_FILE=$(mktemp)
start_docker_with_busybox 2 start_docker_with_busybox 2
swarm_manage swarm_manage
# start events, report real time events to TEMP_FILE # start events, report real time events to $log_file
# it will stop automatically when manager stop local log_file=$(mktemp)
docker_swarm events > $TEMP_FILE & docker_swarm events > "$log_file" &
local events_pid="$!"
# events: create container on node-0 # This should emit 3 events: create, start, die.
docker_swarm create --name test_container -e constraint:node==node-0 busybox sleep 100 docker_swarm run --name test_container -e constraint:node==node-0 busybox true
# events: start container # events might take a little big to show up, wait until we get the last one.
docker_swarm start test_container retry 5 0.5 grep -q "die" "$log_file"
# clean up `docker events`
kill "$events_pid"
# verify # verify
run cat $TEMP_FILE run cat "$log_file"
[ "$status" -eq 0 ] [ "$status" -eq 0 ]
[[ "${output}" == *"node:node-0"* ]] [[ "${output}" == *"node:node-0"* ]]
[[ "${output}" == *"create"* ]] [[ "${output}" == *"create"* ]]
[[ "${output}" == *"start"* ]] [[ "${output}" == *"start"* ]]
[[ "${output}" == *"die"* ]]
# after ok, remove the $TEMP_FILE # after ok, remove the log file
rm -f $TEMP_FILE rm -f "$log_file"
} }