From 1b3f71c55f3f2fe7370cb769f65ce7ac57bb91ac Mon Sep 17 00:00:00 2001 From: "Christopher A. Baumbauer" Date: Wed, 26 Oct 2016 21:47:51 -0700 Subject: [PATCH] Add tests converting dab files --- script/test/cmd/tests.sh | 11 + .../bundles/dab/docker-compose-bundle.dab | 25 ++ .../test/fixtures/bundles/dab/output-k8s.json | 135 ++++++++ .../bundles/dsb/docker-voting-bundle.dsb | 65 ++++ .../test/fixtures/bundles/dsb/output-k8s.json | 306 ++++++++++++++++++ 5 files changed, 542 insertions(+) create mode 100644 script/test/fixtures/bundles/dab/docker-compose-bundle.dab create mode 100644 script/test/fixtures/bundles/dab/output-k8s.json create mode 100644 script/test/fixtures/bundles/dsb/docker-voting-bundle.dsb create mode 100644 script/test/fixtures/bundles/dsb/output-k8s.json diff --git a/script/test/cmd/tests.sh b/script/test/cmd/tests.sh index 8edb7a25..8489ca8d 100755 --- a/script/test/cmd/tests.sh +++ b/script/test/cmd/tests.sh @@ -78,4 +78,15 @@ convert::expect_failure "kompose up $KOMPOSE_ROOT/script/test/fixtures/gitlab/do convert::expect_failure "kompose down $KOMPOSE_ROOT/script/test/fixtures/gitlab/docker-compose.yml" "Unknown Argument docker-gitlab.yml" convert::expect_failure "kompose convert $KOMPOSE_ROOT/script/test/fixtures/gitlab/docker-compose.yml" "Unknown Argument docker-gitlab.yml" +# Tests related to kompose --bundle convert usage and that setting the compose file results in a failure +convert::expect_failure "kompose -f $KOMPOSE_ROOT/script/test/fixtures/bundles/foo.yml --bundle $KOMPOSE_ROOT/script/test/fixtures/bundles/dab/docker-compose-bundle.dab convert" + +###### +# Test related to kompose --bundle convert to ensure that docker bundles are converted properly +convert::expect_success "kompose --bundle $KOMPOSE_ROOT/script/test/fixtures/bundles/dab/docker-compose-bundle.dab convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/bundles/dab/output-k8s.json" + +###### +# Test related to kompose --bundle convert to ensure that DSB bundles are converted properly +convert::expect_success_and_warning "kompose --bundle $KOMPOSE_ROOT/script/test/fixtures/bundles/dsb/docker-voting-bundle.dsb convert --stdout" "$KOMPOSE_ROOT/script/test/fixtures/bundles/dsb/output-k8s.json" "Service cannot be created because of missing port." + exit $EXIT_STATUS diff --git a/script/test/fixtures/bundles/dab/docker-compose-bundle.dab b/script/test/fixtures/bundles/dab/docker-compose-bundle.dab new file mode 100644 index 00000000..3a7e4e30 --- /dev/null +++ b/script/test/fixtures/bundles/dab/docker-compose-bundle.dab @@ -0,0 +1,25 @@ +{ + "services": { + "redis": { + "Image": "redis@sha256:561a224089a0c9a59de16bd596403010b42f417ef7c17142e9b64d7524e97beb", + "Networks": [], + "Ports": [ + { + "Port": 6379, + "Protocol": "tcp" + } + ] + }, + "web": { + "Image": "tuna/docker-counter23@sha256:c6755a375f5eda203c35940cbd05625517207efca4015e6a4a2c6fdef08cf5ed", + "Networks": [], + "Ports": [ + { + "Port": 5000, + "Protocol": "tcp" + } + ] + } + }, + "version": "0.1" +} \ No newline at end of file diff --git a/script/test/fixtures/bundles/dab/output-k8s.json b/script/test/fixtures/bundles/dab/output-k8s.json new file mode 100644 index 00000000..dede474a --- /dev/null +++ b/script/test/fixtures/bundles/dab/output-k8s.json @@ -0,0 +1,135 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "protocol": "TCP", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "web", + "creationTimestamp": null, + "labels": { + "service": "web" + } + }, + "spec": { + "ports": [ + { + "name": "5000", + "protocol": "TCP", + "port": 5000, + "targetPort": 5000 + } + ], + "selector": { + "service": "web" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis", + "ports": [ + { + "containerPort": 6379, + "protocol": "TCP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "web", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "web" + } + }, + "spec": { + "containers": [ + { + "name": "web", + "image": "tuna/docker-counter23", + "ports": [ + { + "containerPort": 5000, + "protocol": "TCP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +} diff --git a/script/test/fixtures/bundles/dsb/docker-voting-bundle.dsb b/script/test/fixtures/bundles/dsb/docker-voting-bundle.dsb new file mode 100644 index 00000000..b9bff043 --- /dev/null +++ b/script/test/fixtures/bundles/dsb/docker-voting-bundle.dsb @@ -0,0 +1,65 @@ +{ + "Services": { + "db": { + "Image": "postgres@sha256:33632bbd3222fa738d80a267b7c706a15d76eb3a59facab94bbd52a69cd1e30c", + "Labels": { + "com.example.description": "Postgres Database" + }, + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 5432, + "Protocol": "tcp" + } + ] + }, + "redis": { + "Image": "redis@sha256:afa4e7f6dc4d4f4294f54835bcfe610201057f5424b36310cba799e625849ebd", + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 6379, + "Protocol": "tcp" + } + ] + }, + "result": { + "Image": "tmadams333/example-voting-app-result@sha256:97d6ba26e5ffa35a89a3d97627fa3c8a3b0b3df8e708129eabcf9f2755e06d13", + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 80, + "Protocol": "tcp" + } + ] + }, + "vote": { + "Image": "docker/example-voting-app-vote@sha256:33f7924f9aaabd2aacf3f59a9c98e372360213ec94cb35f60842502632ec2f74", + "Labels": { + "com.example.description": "Vote" + }, + "Networks": [ + "default" + ], + "Ports": [ + { + "Port": 80, + "Protocol": "tcp" + } + ] + }, + "worker": { + "Image": "docker/example-voting-app-worker@sha256:62cbf0976fc66192d19412135fc422bfaaed5987a8ae405ff4d1968f1b714f24", + "Networks": [ + "default" + ] + } + }, + "Version": "0.1" +} diff --git a/script/test/fixtures/bundles/dsb/output-k8s.json b/script/test/fixtures/bundles/dsb/output-k8s.json new file mode 100644 index 00000000..df880bfc --- /dev/null +++ b/script/test/fixtures/bundles/dsb/output-k8s.json @@ -0,0 +1,306 @@ +{ + "kind": "List", + "apiVersion": "v1", + "metadata": {}, + "items": [ + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "db", + "creationTimestamp": null, + "labels": { + "service": "db" + }, + "annotations": { + "com.example.description": "Postgres Database" + } + }, + "spec": { + "ports": [ + { + "name": "5432", + "protocol": "TCP", + "port": 5432, + "targetPort": 5432 + } + ], + "selector": { + "service": "db" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "redis", + "creationTimestamp": null, + "labels": { + "service": "redis" + } + }, + "spec": { + "ports": [ + { + "name": "6379", + "protocol": "TCP", + "port": 6379, + "targetPort": 6379 + } + ], + "selector": { + "service": "redis" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "result", + "creationTimestamp": null, + "labels": { + "service": "result" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "protocol": "TCP", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "service": "result" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Service", + "apiVersion": "v1", + "metadata": { + "name": "vote", + "creationTimestamp": null, + "labels": { + "service": "vote" + }, + "annotations": { + "com.example.description": "Vote" + } + }, + "spec": { + "ports": [ + { + "name": "80", + "protocol": "TCP", + "port": 80, + "targetPort": 80 + } + ], + "selector": { + "service": "vote" + } + }, + "status": { + "loadBalancer": {} + } + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "db", + "creationTimestamp": null, + "annotations": { + "com.example.description": "Postgres Database" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "db" + } + }, + "spec": { + "containers": [ + { + "name": "db", + "image": "postgres", + "ports": [ + { + "containerPort": 5432, + "protocol": "TCP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "redis", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "redis" + } + }, + "spec": { + "containers": [ + { + "name": "redis", + "image": "redis", + "ports": [ + { + "containerPort": 6379, + "protocol": "TCP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "result", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "result" + } + }, + "spec": { + "containers": [ + { + "name": "result", + "image": "tmadams333/example-voting-app-result", + "ports": [ + { + "containerPort": 80, + "protocol": "TCP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "vote", + "creationTimestamp": null, + "annotations": { + "com.example.description": "Vote" + } + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "vote" + } + }, + "spec": { + "containers": [ + { + "name": "vote", + "image": "docker/example-voting-app-vote", + "ports": [ + { + "containerPort": 80, + "protocol": "TCP" + } + ], + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + }, + { + "kind": "Deployment", + "apiVersion": "extensions/v1beta1", + "metadata": { + "name": "worker", + "creationTimestamp": null + }, + "spec": { + "replicas": 1, + "template": { + "metadata": { + "creationTimestamp": null, + "labels": { + "service": "worker" + } + }, + "spec": { + "containers": [ + { + "name": "worker", + "image": "docker/example-voting-app-worker", + "resources": {} + } + ], + "restartPolicy": "Always" + } + }, + "strategy": {} + }, + "status": {} + } + ] +}