From c817f09b8ab49abb80fdced7494d92d5abf4760a Mon Sep 17 00:00:00 2001 From: Jeromy Date: Thu, 16 Feb 2017 14:56:30 -0800 Subject: [PATCH] add tests to make sure docker requests correct migrations version License: MIT Signed-off-by: Jeromy --- test/sharness/t0066-migration.sh | 27 ---------- test/sharness/t0301-docker-migrate.sh | 76 +++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 27 deletions(-) create mode 100755 test/sharness/t0301-docker-migrate.sh diff --git a/test/sharness/t0066-migration.sh b/test/sharness/t0066-migration.sh index d4ac46ec9..49587fe9d 100755 --- a/test/sharness/t0066-migration.sh +++ b/test/sharness/t0066-migration.sh @@ -49,31 +49,4 @@ test_expect_success "output looks good" ' grep "Please get fs-repo-migrations from https://dist.ipfs.io" daemon_out > /dev/null ' -test_launch_ipfs_daemon - -test_expect_success "build fake dist.ipfs.io" ' - mkdir -p fakedist/fs-repo-migrations/v1.0.0/ - echo "v1.0.0" > fakedist/fs-repo-migrations/versions - - echo "#!/bin/sh" > fakedist/linux - echo "echo linux $@" >> fakedist/linux - tar -czf fakedist/fs-repo-migrations/fs-repo-migrations_v1.0.0_linux-amd64.tar.gz fakedist/linux - - echo "#!/bin/sh" > fakedist/linux-musl - echo "echo linux-musl $@" >> fakedist/linux-musl - tar -czf fakedist/fs-repo-migrations/fs-repo-migrations_v1.0.0_linux-musl-amd64.tar.gz fakedist/linux-musl - - ipfs add -q -r fakedist/ > fakedisthash -' - -test_expect_success "detect musl" ' - IPFS_DIST_PATH="http://172.17.0.1:$GWAY_PORT" echo $IPFS_DIST_PATH -' - -# make fakedist with executables that just echo "I'm $GOOS-$variant with $ARGV" -# ipfs add -r fakedist -# find out IPFS_DIST_PATH -# run daemon --migrate end-to-end -# check for correct output - test_done diff --git a/test/sharness/t0301-docker-migrate.sh b/test/sharness/t0301-docker-migrate.sh new file mode 100755 index 000000000..e6c9a0789 --- /dev/null +++ b/test/sharness/t0301-docker-migrate.sh @@ -0,0 +1,76 @@ +#!/bin/sh +# +# Copyright (c) 2017 Whyrusleeping +# MIT Licensed; see the LICENSE file in this repository. +# + +test_description="Test docker image migration" + +. lib/test-lib.sh + +# if in travis CI on OSX, docker is not available +if ! test_have_prereq DOCKER; then + skip_all='skipping docker tests, docker not available' + + test_done +fi + +TEST_TRASH_DIR=$(pwd) +TEST_SCRIPTS_DIR=$(dirname "$TEST_TRASH_DIR") +TEST_TESTS_DIR=$(dirname "$TEST_SCRIPTS_DIR") +APP_ROOT_DIR=$(dirname "$TEST_TESTS_DIR") + +test_expect_success "docker image build succeeds" ' + docker_build "$TEST_TESTS_DIR/../Dockerfile.fast" "$APP_ROOT_DIR" >actual && + IMAGE_ID=$(tail -n1 actual | cut -d " " -f 3) +' + +test_init_ipfs + +test_expect_success "make repo be version 4" ' + echo 4 > "$IPFS_PATH/version" +' + +test_expect_success "setup http response" ' + echo "HTTP/1.1 200 OK" > vers_resp && + echo "Content-Length: 7" >> vers_resp && + echo "" >> vers_resp && + echo "v1.1.1" >> vers_resp +' + +pretend_server() { + cat vers_resp | nc -l -i 1 -p 17233 +} + +test_expect_success "startup fake dists server" ' + pretend_server > dist_serv_out & + echo $! > netcat_pid +' + +test_expect_success "docker image runs" ' + DOC_ID=$(docker run -d -v "$IPFS_PATH":/data/ipfs --net=host -e IPFS_DIST_PATH="http://localhost:17233" "$IMAGE_ID" --migrate) +' + +test_expect_success "docker container tries to pull migrations from netcat" ' + sleep 4 && + cat dist_serv_out +' + +test_expect_success "see logs" ' + docker logs $DOC_ID +' + +test_expect_success "stop docker container" ' + docker_stop "$DOC_ID" +' + +test_expect_success "kill the net cat" ' + kill $(cat netcat_pid) || true +' + +test_expect_success "correct version was requested" ' + grep "/fs-repo-migrations/v1.1.1/fs-repo-migrations_v1.1.1_linux-musl-amd64.tar.gz" dist_serv_out > /dev/null +' + +test_done +