8000 Plugin integration test by dmcgowan · Pull Request #2085 · distribution/distribution · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Plugin integration test #2085

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jan 10, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion contrib/docker-integration/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ registryv2tokenoauthnotls:
- ./tokenserver-oauth/certs/signing.cert:/etc/docker/registry/tokenbundle.pem
tokenserveroauth:
build: "tokenserver-oauth"
command: "--debug -addr 0.0.0.0:5559 -issuer registry-test -passwd .htpasswd -tlscert tls.cert -tlskey tls.key -key sign.key -realm http://auth.localregistry:5559"
command: "--debug -addr 0.0.0.0:5559 -issuer registry-test -passwd .htpasswd -tlscert tls.cert -tlskey tls.key -key sign.key -realm http://auth.localregistry:5559 -enforce-class"
ports:
- "5559"
malevolent:
Expand Down
2 changes: 1 addition & 1 deletion contrib/docker-integration/golem.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[[suite]]
dind=true
images=[ "nginx:1.9", "dmcgowan/token-server:simple", "dmcgowan/token-server:oauth", "dmcgowan/malevolent:0.1.0" ]
images=[ "nginx:1.9", "dmcgowan/token-server:simple", "dmcgowan/token-server:oauth", "dmcgowan/malevolent:0.1.0", "dmcgowan/ncat:latest" ]

[[suite.pretest]]
command="sh ./install_certs.sh /etc/generated_certs.d"
Expand Down
37 changes: 23 additions & 14 deletions contrib/docker-integration/helpers.bash
Original file line number Diff line number Diff line change
Expand Up @@ -32,35 +32,44 @@ function basic_auth_version_check() {
fi
}

email="a@nowhere.com"

# 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() {
Expand Down Expand Up @@ -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
Expand Down
103 changes: 103 additions & 0 deletions contrib/docker-integration/plugins.bats
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 ]
}
4 changes: 3 additions & 1 deletion contrib/docker-integration/run_multiversion.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,14 @@ time docker pull docker:1.9.1-dind
time docker pull docker:1.10.3-dind
time docker pull docker:1.11.1-dind
time docker pull docker:1.12.3-dind
time docker pull docker:1.13.0-rc5-dind

golem -cache $cachedir \
-i "golem-distribution:latest,$distimage,$distversion" \
-i "golem-dind:latest,docker:1.9.1-dind,1.9.1" \
-i "golem-dind:latest,docker:1.10.3-dind,1.10.3" \
-i "golem-dind:latest,docker:1.11.1-dind,1.11.1" \
-i "golem-dind:latest,docker:1.12.3-dind,1.12.0" \
-i "golem-dind:latest,docker:1.12.3-dind,1.12.3" \
-i "golem-dind:latest,docker:1.13.0-rc5-dind,1.13.0" \
$DIR

1 change: 0 additions & 1 deletion contrib/docker-integration/tls.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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="distribution@docker.com"

function setup() {
tempImage $image
Expand Down
16 changes: 5 additions & 11 deletions contrib/docker-integration/token.bats
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,17 @@ load helpers

user="testuser"
password="testpassword"
email="a@nowhere.com"
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 ]
}

Expand Down Expand Up @@ -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 ]
}

Expand Down
2 changes: 1 addition & 1 deletion contrib/docker-integration/tokenserver-oauth/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM dmcgowan/token-server:oauth
FROM dmcgowan/token-server@sha256:5a6f76d3086cdf63249c77b521108387b49d85a30c5e1c4fe82fdf5ae3b76ba7

WORKDIR /

Expand Down
2 changes: 1 addition & 1 deletion contrib/docker-integration/tokenserver/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM dmcgowan/token-server:simple
FROM dmcgowan/token-server@sha256:0eab50ebdff5b6b95b3addf4edbd8bd2f5b940f27b41b43c94afdf05863a81af

WORKDIR /

Expand Down
0