-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2085 from dmcgowan/plugin-integration-test
Plugin integration test
- Loading branch information
Showing
9 changed files
with
138 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,35 +32,44 @@ function basic_auth_version_check() { | |
fi | ||
} | ||
|
||
email="[email protected]" | ||
|
||
# docker_t_login calls login with email depending on version | ||
function docker_t_login() { | ||
# Only pass email field pre 1.11, no deprecation warning | ||
parse_version "$GOLEM_DIND_VERSION" | ||
v=$version | ||
parse_version "1.11.0" | ||
if [ "$v" -lt "$version" ]; then | ||
run docker_t login -e $email $@ | ||
else | ||
run docker_t login $@ | ||
fi | ||
} | ||
|
||
# login issues a login to docker to the provided server | ||
# uses user, password, and email variables set outside of function | ||
# requies bats | ||
function login() { | ||
rm -f /root/.docker/config.json | ||
|
||
# Only pass email field pre 1.11, no deprecation warning | ||
docker_t_login -u $user -p $password $1 | ||
if [ "$status" -ne 0 ]; then | ||
echo $output | ||
fi | ||
[ "$status" -eq 0 ] | ||
|
||
# Handle different deprecation warnings | ||
parse_version "$GOLEM_DIND_VERSION" | ||
v=$version | ||
parse_version "1.11.0" | ||
if [ "$v" -lt "$version" ]; then | ||
run docker_t login -u $user -p $password -e $email $1 | ||
if [ "$status" -ne 0 ]; then | ||
echo $output | ||
fi | ||
[ "$status" -eq 0 ] | ||
# First line is WARNING about credential save or email deprecation (maybe both) | ||
[ "${lines[2]}" = "Login Succeeded" -o "${lines[1]}" = "Login Succeeded" ] | ||
else | ||
run docker_t login -u $user -p $password $1 | ||
if [ "$status" -ne 0 ]; then | ||
echo $output | ||
fi | ||
echo $output | ||
[ "$status" -eq 0 ] | ||
[ "${lines[0]}" = "Login Succeeded" ] | ||
fi | ||
|
||
|
||
} | ||
|
||
function login_oauth() { | ||
|
@@ -109,7 +118,7 @@ function docker_t() { | |
docker exec dockerdaemon docker $@ | ||
} | ||
|
||
# build reates a new docker image id from another image | ||
# build creates a new docker image id from another image | ||
function build() { | ||
docker exec -i dockerdaemon docker build --no-cache -t $1 - <<DOCKERFILE | ||
FROM $2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
#!/usr/bin/env bats | ||
|
||
# This tests pushing and pulling plugins | ||
|
||
load helpers | ||
|
||
user="testuser" | ||
password="testpassword" | ||
base="hello-world" | ||
|
||
#TODO: Create plugin image | ||
function create_plugin() { | ||
plugindir=$(mktemp -d) | ||
|
||
cat - > $plugindir/config.json <<CONFIGJSON | ||
{ | ||
"manifestVersion": "v0", | ||
"description": "A test plugin for integration tests", | ||
"entrypoint": ["/usr/bin/ncat", "-l", "-U", "//run/docker/plugins/plugin.sock"], | ||
"interface" : { | ||
"types": ["docker.volumedriver/1.0"], | ||
"socket": "plugin.sock" | ||
} | ||
} | ||
CONFIGJSON | ||
|
||
cid=$(docker create dmcgowan/ncat:latest /bin/sh) | ||
|
||
mkdir $plugindir/rootfs | ||
|
||
docker export $cid | tar -x -C $plugindir/rootfs | ||
|
||
docker rm $cid | ||
|
||
daemontmp=$(docker exec dockerdaemon mktemp -d) | ||
|
||
tar -c -C $plugindir . | docker exec -i dockerdaemon tar -x -C $daemontmp | ||
|
||
docker exec dockerdaemon docker plugin create $1 $daemontmp | ||
|
||
docker exec dockerdaemon rm -rf $daemontmp | ||
|
||
rm -rf $plugindir | ||
} | ||
|
||
@test "Test plugin push and pull" { | ||
version_check docker "$GOLEM_DIND_VERSION" "1.13.0-rc3" | ||
version_check docker "$GOLEM_DISTRIBUTION_VERSION" "2.6.0" | ||
|
||
login_oauth localregistry:5558 | ||
image="localregistry:5558/testuser/plugin1" | ||
|
||
create_plugin $image | ||
|
||
run docker_t plugin push $image | ||
echo $output | ||
[ "$status" -eq 0 ] | ||
|
||
docker_t plugin rm $image | ||
|
||
docker_t plugin install --grant-all-permissions $image | ||
} | ||
|
||
@test "Test plugin push and failed image pull" { | ||
version_check docker "$GOLEM_DIND_VERSION" "1.13.0-rc3" | ||
version_check docker "$GOLEM_DISTRIBUTION_VERSION" "2.6.0" | ||
|
||
|
||
login_oauth localregistry:5558 | ||
image="localregistry:5558/testuser/plugin-not-image" | ||
|
||
create_plugin $image | ||
|
||
run docker_t plugin push $image | ||
echo $output | ||
[ "$status" -eq 0 ] | ||
|
||
docker_t plugin rm $image | ||
|
||
run docker_t pull $image | ||
|
||
[ "$status" -ne 0 ] | ||
} | ||
|
||
@test "Test image push and failed plugin pull" { | ||
version_check docker "$GOLEM_DIND_VERSION" "1.13.0-rc3" | ||
version_check docker "$GOLEM_DISTRIBUTION_VERSION" "2.6.0" | ||
|
||
login_oauth localregistry:5558 | ||
image="localregistry:5558/testuser/image-not-plugin" | ||
|
||
build $image "$base:latest" | ||
|
||
run docker_t push $image | ||
echo $output | ||
[ "$status" -eq 0 ] | ||
|
||
docker_t rmi $image | ||
|
||
run docker_t plugin install --grant-all-permissions $image | ||
|
||
[ "$status" -ne 0 ] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,7 +12,6 @@ image="${base}:latest" | |
# Login information, should match values in nginx/test.passwd | ||
user=${TEST_USER:-"testuser"} | ||
password=${TEST_PASSWORD:-"passpassword"} | ||
email="[email protected]" | ||
|
||
function setup() { | ||
tempImage $image | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,23 +6,17 @@ load helpers | |
|
||
user="testuser" | ||
password="testpassword" | ||
email="[email protected]" | ||
base="hello-world" | ||
|
||
@test "Test token server login" { | ||
run docker_t login -u $user -p $password -e $email localregistry:5554 | ||
echo $output | ||
[ "$status" -eq 0 ] | ||
|
||
# First line is WARNING about credential save or email deprecation | ||
[ "${lines[2]}" = "Login Succeeded" -o "${lines[1]}" = "Login Succeeded" ] | ||
login localregistry:5554 | ||
} | ||
|
||
@test "Test token server bad login" { | ||
run docker_t login -u "testuser" -p "badpassword" -e $email localregistry:5554 | ||
docker_t_login -u "testuser" -p "badpassword" localregistry:5554 | ||
[ "$status" -ne 0 ] | ||
|
||
run docker_t login -u "baduser" -p "testpassword" -e $email localregistry:5554 | ||
docker_t_login -u "baduser" -p "testpassword" localregistry:5554 | ||
[ "$status" -ne 0 ] | ||
} | ||
|
||
|
@@ -58,10 +52,10 @@ base="hello-world" | |
@test "Test oauth token server bad login" { | ||
version_check docker "$GOLEM_DIND_VERSION" "1.11.0" | ||
|
||
run docker_t login -u "testuser" -p "badpassword" -e $email localregistry:5557 | ||
docker_t_login -u "testuser" -p "badpassword" -e $email localregistry:5557 | ||
[ "$status" -ne 0 ] | ||
|
||
run docker_t login -u "baduser" -p "testpassword" -e $email localregistry:5557 | ||
docker_t_login -u "baduser" -p "testpassword" -e $email localregistry:5557 | ||
[ "$status" -ne 0 ] | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters