From 8ca81ea6ed4d2a250ea7fa31ba0bb32fb1d2042f Mon Sep 17 00:00:00 2001 From: Maciej Kwidzinski Date: Thu, 4 Apr 2019 16:50:32 +0200 Subject: [PATCH] JPERF-445: Use `ssh-ubuntu` instead of inlined Docker code --- build.gradle.kts | 2 +- .../testApiDependenciesMetadata.lockfile | 50 ---------- gradle/dependency-locks/testCompile.lockfile | 35 +------ .../testCompileClasspath.lockfile | 44 ++------- ...mplementationDependenciesMetadata.lockfile | 69 -------------- gradle/dependency-locks/testRuntime.lockfile | 35 +------ .../testRuntimeClasspath.lockfile | 35 +------ .../virtualusers/LoadTestUserCreationIT.kt | 62 +++++++----- .../tools/virtualusers/api/EntryPointIT.kt | 2 - .../lib/docker/ConnectedContainer.kt | 30 ------ .../lib/docker/CreatedContainer.kt | 18 ---- .../virtualusers/lib/docker/DockerNetwork.kt | 18 ---- .../lib/docker/StartedDockerContainer.kt | 23 ----- .../lib/sshubuntu/SudoSshUbuntuContainer.kt | 16 ---- .../lib/sshubuntu/SudoSshUbuntuImage.kt | 95 ------------------- .../lib/sshubuntu/SudoSshUbuntuImageIT.kt | 32 ------- 16 files changed, 50 insertions(+), 516 deletions(-) delete mode 100644 gradle/dependency-locks/testApiDependenciesMetadata.lockfile delete mode 100644 gradle/dependency-locks/testImplementationDependenciesMetadata.lockfile delete mode 100644 src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/ConnectedContainer.kt delete mode 100644 src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/CreatedContainer.kt delete mode 100644 src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/DockerNetwork.kt delete mode 100644 src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/StartedDockerContainer.kt delete mode 100644 src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuContainer.kt delete mode 100644 src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImage.kt delete mode 100644 src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImageIT.kt diff --git a/build.gradle.kts b/build.gradle.kts index 3f5e49d..e83b6ae 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -90,7 +90,7 @@ dependencies { testCompile("junit:junit:4.12") testCompile("org.assertj:assertj-core:3.11.0") testCompile("com.atlassian.performance.tools:docker-infrastructure:0.1.2") - testCompile("com.github.docker-java:docker-java:3.1.1") + testCompile("com.atlassian.performance.tools:ssh-ubuntu:0.2.0") testCompile("com.atlassian.performance.tools:infrastructure:[4.0.0,5.0.0)") } diff --git a/gradle/dependency-locks/testApiDependenciesMetadata.lockfile b/gradle/dependency-locks/testApiDependenciesMetadata.lockfile deleted file mode 100644 index 4b273c8..0000000 --- a/gradle/dependency-locks/testApiDependenciesMetadata.lockfile +++ /dev/null @@ -1,50 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.atlassian.performance.tools:docker-infrastructure:0.1.2 -com.atlassian.performance.tools:ssh-ubuntu:0.1.0 -com.google.code.findbugs:jsr305:1.3.9 -com.google.code.gson:gson:2.8.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:23.6-jre -com.google.j2objc:j2objc-annotations:1.1 -com.kohlschutter.junixsocket:junixsocket-common:2.0.4 -com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4 -com.squareup.okhttp3:okhttp:3.9.1 -com.squareup.okio:okio:1.13.0 -commons-codec:commons-codec:1.10 -commons-logging:commons-logging:1.2 -javax.activation:javax.activation-api:1.2.0 -javax.annotation:javax.annotation-api:1.3.2 -javax.xml.bind:jaxb-api:2.3.1 -junit:junit:4.12 -net.bytebuddy:byte-buddy:1.7.9 -net.java.dev.jna:jna-platform:5.2.0 -net.java.dev.jna:jna:5.2.0 -org.apache.commons:commons-compress:1.9 -org.apache.commons:commons-exec:1.3 -org.apache.httpcomponents:httpclient:4.5.3 -org.apache.httpcomponents:httpcore:4.4.6 -org.apache.logging.log4j:log4j-api:2.10.0 -org.apache.logging.log4j:log4j-core:2.10.0 -org.apache.logging.log4j:log4j-slf4j-impl:2.10.0 -org.assertj:assertj-core:3.11.0 -org.checkerframework:checker-compat-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.hamcrest:hamcrest-core:1.3 -org.jetbrains.kotlin:kotlin-stdlib-common:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib:1.2.70 -org.jetbrains:annotations:13.0 -org.rnorth.duct-tape:duct-tape:1.0.7 -org.rnorth.visible-assertions:visible-assertions:2.1.2 -org.rnorth:tcp-unix-socket-proxy:1.0.2 -org.scijava:native-lib-loader:2.0.2 -org.seleniumhq.selenium:selenium-api:3.11.0 -org.seleniumhq.selenium:selenium-chrome-driver:3.11.0 -org.seleniumhq.selenium:selenium-remote-driver:3.11.0 -org.seleniumhq.selenium:selenium-support:3.11.0 -org.slf4j:slf4j-api:1.8.0-alpha2 -org.testcontainers:selenium:1.10.5 -org.testcontainers:testcontainers:1.10.5 diff --git a/gradle/dependency-locks/testCompile.lockfile b/gradle/dependency-locks/testCompile.lockfile index 6d23ee5..389c147 100644 --- a/gradle/dependency-locks/testCompile.lockfile +++ b/gradle/dependency-locks/testCompile.lockfile @@ -8,14 +8,8 @@ com.atlassian.performance.tools:io:1.2.0 com.atlassian.performance.tools:jira-actions:3.3.0 com.atlassian.performance.tools:jira-software-actions:1.3.1 com.atlassian.performance.tools:jvm-tasks:1.0.1 +com.atlassian.performance.tools:ssh-ubuntu:0.2.0 com.atlassian.performance.tools:ssh:2.2.0 -com.fasterxml.jackson.core:jackson-annotations:2.9.0 -com.fasterxml.jackson.core:jackson-core:2.9.7 -com.fasterxml.jackson.core:jackson-databind:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.7 -com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.7 -com.github.docker-java:docker-java:3.1.1 com.github.stephenc.jcip:jcip-annotations:1.0-1 com.google.code.findbugs:jsr305:1.3.9 com.google.code.gson:gson:2.8.2 @@ -32,28 +26,13 @@ com.typesafe:config:1.2.1 commons-cli:commons-cli:1.4 commons-codec:commons-codec:1.10 commons-io:commons-io:2.6 -commons-lang:commons-lang:2.6 commons-logging:commons-logging:1.2 io.github.bonigarcia:webdrivermanager:1.7.1 -io.netty:netty-buffer:4.1.31.Final -io.netty:netty-codec-http:4.1.31.Final -io.netty:netty-codec-socks:4.1.31.Final -io.netty:netty-codec:4.1.31.Final -io.netty:netty-common:4.1.31.Final -io.netty:netty-handler-proxy:4.1.31.Final -io.netty:netty-handler:4.1.31.Final -io.netty:netty-resolver:4.1.31.Final -io.netty:netty-transport-native-epoll:4.1.31.Final -io.netty:netty-transport-native-kqueue:4.1.31.Final -io.netty:netty-transport-native-unix-common:4.1.31.Final -io.netty:netty-transport:4.1.31.Final javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 javax.inject:javax.inject:1 -javax.ws.rs:javax.ws.rs-api:2.1 javax.xml.bind:jaxb-api:2.3.1 junit:junit:4.12 -log4j:log4j:1.2.17 net.bytebuddy:byte-buddy:1.7.9 net.i2p.crypto:eddsa:0.2.0 net.java.dev.jna:jna-platform:5.2.0 @@ -95,19 +74,8 @@ org.codehaus.mojo:animal-sniffer-annotations:1.14 org.codehaus.plexus:plexus-component-annotations:1.7.1 org.codehaus.plexus:plexus-interpolation:1.24 org.codehaus.plexus:plexus-utils:3.1.0 -org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42 -org.glassfish.hk2.external:javax.inject:2.5.0-b42 -org.glassfish.hk2:hk2-api:2.5.0-b42 -org.glassfish.hk2:hk2-locator:2.5.0-b42 -org.glassfish.hk2:hk2-utils:2.5.0-b42 -org.glassfish.hk2:osgi-resource-locator:1.0.1 -org.glassfish.jersey.connectors:jersey-apache-connector:2.27 -org.glassfish.jersey.core:jersey-client:2.27 -org.glassfish.jersey.core:jersey-common:2.27 -org.glassfish.jersey.inject:jersey-hk2:2.27 org.glassfish:javax.json:1.1 org.hamcrest:hamcrest-core:1.3 -org.javassist:javassist:3.22.0-CR2 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api-maven:3.1.3 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api:3.1.3 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:3.1.3 @@ -130,7 +98,6 @@ org.seleniumhq.selenium:selenium-api:3.11.0 org.seleniumhq.selenium:selenium-chrome-driver:3.11.0 org.seleniumhq.selenium:selenium-remote-driver:3.11.0 org.seleniumhq.selenium:selenium-support:3.11.0 -org.slf4j:jcl-over-slf4j:1.7.25 org.slf4j:slf4j-api:1.8.0-alpha2 org.sonatype.plexus:plexus-cipher:1.4 org.sonatype.plexus:plexus-sec-dispatcher:1.4 diff --git a/gradle/dependency-locks/testCompileClasspath.lockfile b/gradle/dependency-locks/testCompileClasspath.lockfile index bd20d78..bff5772 100644 --- a/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/gradle/dependency-locks/testCompileClasspath.lockfile @@ -7,14 +7,8 @@ com.atlassian.performance.tools:io:1.1.0 com.atlassian.performance.tools:jira-actions:3.0.0 com.atlassian.performance.tools:jira-software-actions:1.3.0 com.atlassian.performance.tools:jvm-tasks:1.0.1 +com.atlassian.performance.tools:ssh-ubuntu:0.2.0 com.atlassian.performance.tools:ssh:2.2.0 -com.fasterxml.jackson.core:jackson-annotations:2.9.0 -com.fasterxml.jackson.core:jackson-core:2.9.7 -com.fasterxml.jackson.core:jackson-databind:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.7 -com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.7 -com.github.docker-java:docker-java:3.1.1 com.github.stephenc.jcip:jcip-annotations:1.0-1 com.google.code.findbugs:jsr305:1.3.9 com.google.code.gson:gson:2.8.2 @@ -31,28 +25,16 @@ com.typesafe:config:1.2.1 commons-cli:commons-cli:1.4 commons-codec:commons-codec:1.10 commons-io:commons-io:2.6 -commons-lang:commons-lang:2.6 commons-logging:commons-logging:1.2 io.github.bonigarcia:webdrivermanager:1.7.1 -io.netty:netty-buffer:4.1.31.Final -io.netty:netty-codec-http:4.1.31.Final -io.netty:netty-codec-socks:4.1.31.Final -io.netty:netty-codec:4.1.31.Final -io.netty:netty-common:4.1.31.Final -io.netty:netty-handler-proxy:4.1.31.Final -io.netty:netty-handler:4.1.31.Final -io.netty:netty-resolver:4.1.31.Final -io.netty:netty-transport-native-epoll:4.1.31.Final -io.netty:netty-transport-native-kqueue:4.1.31.Final -io.netty:netty-transport-native-unix-common:4.1.31.Final -io.netty:netty-transport:4.1.31.Final +javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 -javax.inject:javax.inject:1 -javax.ws.rs:javax.ws.rs-api:2.1 +javax.xml.bind:jaxb-api:2.3.1 junit:junit:4.12 -log4j:log4j:1.2.17 net.bytebuddy:byte-buddy:1.7.9 net.i2p.crypto:eddsa:0.2.0 +net.java.dev.jna:jna-platform:5.2.0 +net.java.dev.jna:jna:5.2.0 org.apache.commons:commons-compress:1.9 org.apache.commons:commons-csv:1.3 org.apache.commons:commons-exec:1.3 @@ -69,19 +51,8 @@ org.bouncycastle:bcpkix-jdk15on:1.60 org.bouncycastle:bcprov-jdk15on:1.60 org.checkerframework:checker-compat-qual:2.0.0 org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42 -org.glassfish.hk2.external:javax.inject:2.5.0-b42 -org.glassfish.hk2:hk2-api:2.5.0-b42 -org.glassfish.hk2:hk2-locator:2.5.0-b42 -org.glassfish.hk2:hk2-utils:2.5.0-b42 -org.glassfish.hk2:osgi-resource-locator:1.0.1 -org.glassfish.jersey.connectors:jersey-apache-connector:2.27 -org.glassfish.jersey.core:jersey-client:2.27 -org.glassfish.jersey.core:jersey-common:2.27 -org.glassfish.jersey.inject:jersey-hk2:2.27 org.glassfish:javax.json:1.1 org.hamcrest:hamcrest-core:1.3 -org.javassist:javassist:3.22.0-CR2 org.jetbrains.kotlin:kotlin-stdlib-common:1.2.70 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.70 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.70 @@ -91,10 +62,13 @@ org.jetbrains.kotlin:kotlin-stdlib:1.2.70 org.jetbrains:annotations:13.0 org.jsoup:jsoup:1.10.2 org.rauschig:jarchivelib:0.7.1 +org.rnorth.duct-tape:duct-tape:1.0.7 +org.rnorth.visible-assertions:visible-assertions:2.1.2 +org.rnorth:tcp-unix-socket-proxy:1.0.2 org.scijava:native-lib-loader:2.0.2 org.seleniumhq.selenium:selenium-api:3.11.0 org.seleniumhq.selenium:selenium-chrome-driver:3.11.0 org.seleniumhq.selenium:selenium-remote-driver:3.11.0 org.seleniumhq.selenium:selenium-support:3.11.0 -org.slf4j:jcl-over-slf4j:1.7.25 org.slf4j:slf4j-api:1.8.0-alpha2 +org.testcontainers:testcontainers:1.10.5 diff --git a/gradle/dependency-locks/testImplementationDependenciesMetadata.lockfile b/gradle/dependency-locks/testImplementationDependenciesMetadata.lockfile deleted file mode 100644 index 4d2ed8e..0000000 --- a/gradle/dependency-locks/testImplementationDependenciesMetadata.lockfile +++ /dev/null @@ -1,69 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.atlassian.performance.tools:concurrency:1.0.0 -com.atlassian.performance.tools:docker-infrastructure:0.1.2 -com.atlassian.performance.tools:io:1.1.0 -com.atlassian.performance.tools:jira-actions:3.2.0 -com.atlassian.performance.tools:jira-software-actions:1.3.0 -com.atlassian.performance.tools:jvm-tasks:1.0.0 -com.atlassian.performance.tools:ssh-ubuntu:0.1.0 -com.github.stephenc.jcip:jcip-annotations:1.0-1 -com.google.code.findbugs:jsr305:1.3.9 -com.google.code.gson:gson:2.8.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:23.6-jre -com.google.j2objc:j2objc-annotations:1.1 -com.kohlschutter.junixsocket:junixsocket-common:2.0.4 -com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4 -com.squareup.okhttp3:okhttp:3.9.1 -com.squareup.okio:okio:1.13.0 -com.typesafe:config:1.2.1 -commons-cli:commons-cli:1.4 -commons-codec:commons-codec:1.10 -commons-io:commons-io:2.5 -commons-logging:commons-logging:1.2 -io.github.bonigarcia:webdrivermanager:1.7.1 -javax.activation:javax.activation-api:1.2.0 -javax.annotation:javax.annotation-api:1.3.2 -javax.xml.bind:jaxb-api:2.3.1 -junit:junit:4.12 -net.bytebuddy:byte-buddy:1.7.9 -net.java.dev.jna:jna-platform:5.2.0 -net.java.dev.jna:jna:5.2.0 -org.apache.commons:commons-compress:1.9 -org.apache.commons:commons-csv:1.3 -org.apache.commons:commons-exec:1.3 -org.apache.commons:commons-lang3:3.5 -org.apache.commons:commons-math3:3.6.1 -org.apache.httpcomponents:httpclient:4.5.3 -org.apache.httpcomponents:httpcore:4.4.6 -org.apache.logging.log4j:log4j-api:2.10.0 -org.apache.logging.log4j:log4j-core:2.10.0 -org.apache.logging.log4j:log4j-jul:2.10.0 -org.apache.logging.log4j:log4j-slf4j-impl:2.10.0 -org.assertj:assertj-core:3.11.0 -org.checkerframework:checker-compat-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.glassfish:javax.json:1.1 -org.hamcrest:hamcrest-core:1.3 -org.jetbrains.kotlin:kotlin-stdlib-common:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.70 -org.jetbrains.kotlin:kotlin-stdlib:1.2.70 -org.jetbrains:annotations:13.0 -org.jsoup:jsoup:1.10.2 -org.rauschig:jarchivelib:0.7.1 -org.rnorth.duct-tape:duct-tape:1.0.7 -org.rnorth.visible-assertions:visible-assertions:2.1.2 -org.rnorth:tcp-unix-socket-proxy:1.0.2 -org.scijava:native-lib-loader:2.0.2 -org.seleniumhq.selenium:selenium-api:3.11.0 -org.seleniumhq.selenium:selenium-chrome-driver:3.11.0 -org.seleniumhq.selenium:selenium-remote-driver:3.11.0 -org.seleniumhq.selenium:selenium-support:3.11.0 -org.slf4j:slf4j-api:1.8.0-alpha2 -org.testcontainers:selenium:1.10.5 -org.testcontainers:testcontainers:1.10.5 diff --git a/gradle/dependency-locks/testRuntime.lockfile b/gradle/dependency-locks/testRuntime.lockfile index 6d23ee5..389c147 100644 --- a/gradle/dependency-locks/testRuntime.lockfile +++ b/gradle/dependency-locks/testRuntime.lockfile @@ -8,14 +8,8 @@ com.atlassian.performance.tools:io:1.2.0 com.atlassian.performance.tools:jira-actions:3.3.0 com.atlassian.performance.tools:jira-software-actions:1.3.1 com.atlassian.performance.tools:jvm-tasks:1.0.1 +com.atlassian.performance.tools:ssh-ubuntu:0.2.0 com.atlassian.performance.tools:ssh:2.2.0 -com.fasterxml.jackson.core:jackson-annotations:2.9.0 -com.fasterxml.jackson.core:jackson-core:2.9.7 -com.fasterxml.jackson.core:jackson-databind:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.7 -com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.7 -com.github.docker-java:docker-java:3.1.1 com.github.stephenc.jcip:jcip-annotations:1.0-1 com.google.code.findbugs:jsr305:1.3.9 com.google.code.gson:gson:2.8.2 @@ -32,28 +26,13 @@ com.typesafe:config:1.2.1 commons-cli:commons-cli:1.4 commons-codec:commons-codec:1.10 commons-io:commons-io:2.6 -commons-lang:commons-lang:2.6 commons-logging:commons-logging:1.2 io.github.bonigarcia:webdrivermanager:1.7.1 -io.netty:netty-buffer:4.1.31.Final -io.netty:netty-codec-http:4.1.31.Final -io.netty:netty-codec-socks:4.1.31.Final -io.netty:netty-codec:4.1.31.Final -io.netty:netty-common:4.1.31.Final -io.netty:netty-handler-proxy:4.1.31.Final -io.netty:netty-handler:4.1.31.Final -io.netty:netty-resolver:4.1.31.Final -io.netty:netty-transport-native-epoll:4.1.31.Final -io.netty:netty-transport-native-kqueue:4.1.31.Final -io.netty:netty-transport-native-unix-common:4.1.31.Final -io.netty:netty-transport:4.1.31.Final javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 javax.inject:javax.inject:1 -javax.ws.rs:javax.ws.rs-api:2.1 javax.xml.bind:jaxb-api:2.3.1 junit:junit:4.12 -log4j:log4j:1.2.17 net.bytebuddy:byte-buddy:1.7.9 net.i2p.crypto:eddsa:0.2.0 net.java.dev.jna:jna-platform:5.2.0 @@ -95,19 +74,8 @@ org.codehaus.mojo:animal-sniffer-annotations:1.14 org.codehaus.plexus:plexus-component-annotations:1.7.1 org.codehaus.plexus:plexus-interpolation:1.24 org.codehaus.plexus:plexus-utils:3.1.0 -org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42 -org.glassfish.hk2.external:javax.inject:2.5.0-b42 -org.glassfish.hk2:hk2-api:2.5.0-b42 -org.glassfish.hk2:hk2-locator:2.5.0-b42 -org.glassfish.hk2:hk2-utils:2.5.0-b42 -org.glassfish.hk2:osgi-resource-locator:1.0.1 -org.glassfish.jersey.connectors:jersey-apache-connector:2.27 -org.glassfish.jersey.core:jersey-client:2.27 -org.glassfish.jersey.core:jersey-common:2.27 -org.glassfish.jersey.inject:jersey-hk2:2.27 org.glassfish:javax.json:1.1 org.hamcrest:hamcrest-core:1.3 -org.javassist:javassist:3.22.0-CR2 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api-maven:3.1.3 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api:3.1.3 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:3.1.3 @@ -130,7 +98,6 @@ org.seleniumhq.selenium:selenium-api:3.11.0 org.seleniumhq.selenium:selenium-chrome-driver:3.11.0 org.seleniumhq.selenium:selenium-remote-driver:3.11.0 org.seleniumhq.selenium:selenium-support:3.11.0 -org.slf4j:jcl-over-slf4j:1.7.25 org.slf4j:slf4j-api:1.8.0-alpha2 org.sonatype.plexus:plexus-cipher:1.4 org.sonatype.plexus:plexus-sec-dispatcher:1.4 diff --git a/gradle/dependency-locks/testRuntimeClasspath.lockfile b/gradle/dependency-locks/testRuntimeClasspath.lockfile index a6b6b07..355b467 100644 --- a/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -8,14 +8,8 @@ com.atlassian.performance.tools:io:1.1.0 com.atlassian.performance.tools:jira-actions:3.0.0 com.atlassian.performance.tools:jira-software-actions:1.3.0 com.atlassian.performance.tools:jvm-tasks:1.0.1 +com.atlassian.performance.tools:ssh-ubuntu:0.2.0 com.atlassian.performance.tools:ssh:2.2.0 -com.fasterxml.jackson.core:jackson-annotations:2.9.0 -com.fasterxml.jackson.core:jackson-core:2.9.7 -com.fasterxml.jackson.core:jackson-databind:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.9.7 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.9.7 -com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.9.7 -com.github.docker-java:docker-java:3.1.1 com.github.stephenc.jcip:jcip-annotations:1.0-1 com.google.code.findbugs:jsr305:1.3.9 com.google.code.gson:gson:2.8.2 @@ -32,28 +26,13 @@ com.typesafe:config:1.2.1 commons-cli:commons-cli:1.4 commons-codec:commons-codec:1.10 commons-io:commons-io:2.6 -commons-lang:commons-lang:2.6 commons-logging:commons-logging:1.2 io.github.bonigarcia:webdrivermanager:1.7.1 -io.netty:netty-buffer:4.1.31.Final -io.netty:netty-codec-http:4.1.31.Final -io.netty:netty-codec-socks:4.1.31.Final -io.netty:netty-codec:4.1.31.Final -io.netty:netty-common:4.1.31.Final -io.netty:netty-handler-proxy:4.1.31.Final -io.netty:netty-handler:4.1.31.Final -io.netty:netty-resolver:4.1.31.Final -io.netty:netty-transport-native-epoll:4.1.31.Final -io.netty:netty-transport-native-kqueue:4.1.31.Final -io.netty:netty-transport-native-unix-common:4.1.31.Final -io.netty:netty-transport:4.1.31.Final javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 javax.inject:javax.inject:1 -javax.ws.rs:javax.ws.rs-api:2.1 javax.xml.bind:jaxb-api:2.3.1 junit:junit:4.12 -log4j:log4j:1.2.17 net.bytebuddy:byte-buddy:1.7.9 net.i2p.crypto:eddsa:0.2.0 net.java.dev.jna:jna-platform:5.2.0 @@ -95,19 +74,8 @@ org.codehaus.mojo:animal-sniffer-annotations:1.14 org.codehaus.plexus:plexus-component-annotations:1.7.1 org.codehaus.plexus:plexus-interpolation:1.24 org.codehaus.plexus:plexus-utils:3.1.0 -org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42 -org.glassfish.hk2.external:javax.inject:2.5.0-b42 -org.glassfish.hk2:hk2-api:2.5.0-b42 -org.glassfish.hk2:hk2-locator:2.5.0-b42 -org.glassfish.hk2:hk2-utils:2.5.0-b42 -org.glassfish.hk2:osgi-resource-locator:1.0.1 -org.glassfish.jersey.connectors:jersey-apache-connector:2.27 -org.glassfish.jersey.core:jersey-client:2.27 -org.glassfish.jersey.core:jersey-common:2.27 -org.glassfish.jersey.inject:jersey-hk2:2.27 org.glassfish:javax.json:1.1 org.hamcrest:hamcrest-core:1.3 -org.javassist:javassist:3.22.0-CR2 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api-maven:3.1.3 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-api:3.1.3 org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-impl-maven:3.1.3 @@ -130,7 +98,6 @@ org.seleniumhq.selenium:selenium-api:3.11.0 org.seleniumhq.selenium:selenium-chrome-driver:3.11.0 org.seleniumhq.selenium:selenium-remote-driver:3.11.0 org.seleniumhq.selenium:selenium-support:3.11.0 -org.slf4j:jcl-over-slf4j:1.7.25 org.slf4j:slf4j-api:1.8.0-alpha2 org.sonatype.plexus:plexus-cipher:1.4 org.sonatype.plexus:plexus-sec-dispatcher:1.4 diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/LoadTestUserCreationIT.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/LoadTestUserCreationIT.kt index 37a7475..12f331d 100644 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/LoadTestUserCreationIT.kt +++ b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/LoadTestUserCreationIT.kt @@ -10,25 +10,25 @@ import com.atlassian.performance.tools.infrastructure.api.jira.JiraNodeConfig import com.atlassian.performance.tools.infrastructure.api.jvm.OracleJDK import com.atlassian.performance.tools.infrastructure.api.profiler.AsyncProfiler import com.atlassian.performance.tools.ssh.api.Ssh +import com.atlassian.performance.tools.ssh.api.auth.PublicKeyAuthentication +import com.atlassian.performance.tools.sshubuntu.api.SshHost +import com.atlassian.performance.tools.sshubuntu.api.SshUbuntu +import com.atlassian.performance.tools.sshubuntu.api.SshUbuntuContainer import com.atlassian.performance.tools.virtualusers.api.TemporalRate import com.atlassian.performance.tools.virtualusers.api.VirtualUserLoad import com.atlassian.performance.tools.virtualusers.api.VirtualUserOptions import com.atlassian.performance.tools.virtualusers.api.config.VirtualUserBehavior import com.atlassian.performance.tools.virtualusers.api.config.VirtualUserTarget -import com.atlassian.performance.tools.virtualusers.lib.docker.execAsResource import com.atlassian.performance.tools.virtualusers.lib.infrastructure.Jperf423WorkaroundOracleJdk import com.atlassian.performance.tools.virtualusers.lib.infrastructure.Jperf424WorkaroundJswDistro import com.atlassian.performance.tools.virtualusers.lib.infrastructure.Jperf425WorkaroundMysqlDatabase import com.atlassian.performance.tools.virtualusers.lib.infrastructure.SshJiraNode -import com.atlassian.performance.tools.virtualusers.lib.sshubuntu.SudoSshUbuntuContainer -import com.atlassian.performance.tools.virtualusers.lib.sshubuntu.SudoSshUbuntuImage -import com.github.dockerjava.api.model.ExposedPort -import com.github.dockerjava.core.DockerClientBuilder import org.junit.Test +import org.testcontainers.containers.GenericContainer import java.net.URI import java.time.Duration -import java.util.* import java.util.concurrent.Executors +import java.util.function.Consumer class LoadTestUserCreationIT { @@ -96,34 +96,32 @@ class LoadTestUserCreationIT { private fun testWithJira( test: (URI) -> T ): T { - val docker = DockerClientBuilder.getInstance().build() - return docker - .createNetworkCmd() - .withName(UUID.randomUUID().toString()) - .execAsResource(docker) - .use { network -> - val networkId = network.response.id - val dbImage = SudoSshUbuntuImage(docker, networkId, listOf(3306)) - val jiraImage = SudoSshUbuntuImage(docker, networkId, listOf(8080)) - dbImage.runInUbuntu { db -> - jiraImage.runInUbuntu { jira -> - test(runJiraServer(jira, db)) - } - } + fun exposePort( + port: Int + ) = Consumer { container: GenericContainer<*> -> + container.addExposedPort(port) + } + + val dbContainer = SshUbuntuContainer(exposePort(3306)) + val jiraContainer = SshUbuntuContainer(exposePort(8080)) + return dbContainer.start().use { db -> + jiraContainer.start().use { jira -> + test(runJiraServer(jira, db)) } + } } private fun runJiraServer( - jira: SudoSshUbuntuContainer, - db: SudoSshUbuntuContainer + jira: SshUbuntu, + db: SshUbuntu ): URI { - val publishedJiraPort = jira.ports.bindings[ExposedPort.tcp(8080)]!!.single().hostPortSpec.toInt() + val publishedJiraPort = jira.container.getMappedPort(8080) val jiraUri = URI("http://localhost:$publishedJiraPort/") - db.ssh.newConnection().use { + db.ssh.becomeUsable().newConnection().use { dataset.database.setup(it) dataset.database.start(jiraUri, it) } - startJiraNode(jira.ssh, db.peerIp) + startJiraNode(jira.ssh.becomeUsable(), db.container.getContainerIpAddress()) return jiraUri } @@ -157,4 +155,18 @@ class LoadTestUserCreationIT { userName = "admin", password = "admin" ) + + private fun SshHost.becomeUsable(): Ssh { + return Ssh(com.atlassian.performance.tools.ssh.api.SshHost( + ipAddress = ipAddress, + userName = userName, + authentication = PublicKeyAuthentication(privateKey), + port = port + )).also { ssh -> + ssh.newConnection().use { shell -> + shell.execute("apt-get update", Duration.ofMinutes(2)) + shell.execute("apt-get install sudo") + } + } + } } diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/api/EntryPointIT.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/api/EntryPointIT.kt index 29e489f..3d42d69 100644 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/api/EntryPointIT.kt +++ b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/api/EntryPointIT.kt @@ -4,12 +4,10 @@ import com.atlassian.performance.tools.dockerinfrastructure.api.jira.Jira import com.atlassian.performance.tools.dockerinfrastructure.api.jira.JiraCoreFormula import com.atlassian.performance.tools.virtualusers.ChromeContainer import com.atlassian.performance.tools.virtualusers.SimpleScenario -import org.junit.Ignore import org.junit.Test class EntryPointIT { - @Ignore("https://github.com/testcontainers/testcontainers-java/issues/1113") @Test fun shouldRunWith3_2_0_Args() { JiraCoreFormula.Builder() diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/ConnectedContainer.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/ConnectedContainer.kt deleted file mode 100644 index 4657e62..0000000 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/ConnectedContainer.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.atlassian.performance.tools.virtualusers.lib.docker - -import com.github.dockerjava.api.DockerClient -import com.github.dockerjava.api.command.ConnectToNetworkCmd - -class ConnectedContainer( - private val docker: DockerClient, - val containerId: String, - private val networkId: String -) : AutoCloseable { - - override fun close() { - docker - .disconnectFromNetworkCmd() - .withContainerId(containerId) - .withNetworkId(networkId) - .exec() - } -} - -fun ConnectToNetworkCmd.execAsResource( - docker: DockerClient -): ConnectedContainer { - exec() - return ConnectedContainer( - docker, - containerId!!, - networkId!! - ) -} \ No newline at end of file diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/CreatedContainer.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/CreatedContainer.kt deleted file mode 100644 index 573544d..0000000 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/CreatedContainer.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.atlassian.performance.tools.virtualusers.lib.docker - -import com.github.dockerjava.api.DockerClient -import com.github.dockerjava.api.command.CreateContainerCmd -import com.github.dockerjava.api.command.CreateContainerResponse - -class CreatedContainer( - private val docker: DockerClient, - val response: CreateContainerResponse -) : AutoCloseable { - override fun close() { - docker.removeContainerCmd(response.id).exec() - } -} - -fun CreateContainerCmd.execAsResource( - docker: DockerClient -): CreatedContainer = CreatedContainer(docker, exec()) diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/DockerNetwork.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/DockerNetwork.kt deleted file mode 100644 index d05f173..0000000 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/DockerNetwork.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.atlassian.performance.tools.virtualusers.lib.docker - -import com.github.dockerjava.api.DockerClient -import com.github.dockerjava.api.command.CreateNetworkCmd -import com.github.dockerjava.api.command.CreateNetworkResponse - -class DockerNetwork( - private val docker: DockerClient, - val response: CreateNetworkResponse -) : AutoCloseable { - override fun close() { - docker.removeNetworkCmd(response.id).exec() - } -} - -fun CreateNetworkCmd.execAsResource( - docker: DockerClient -): DockerNetwork = DockerNetwork(docker, exec()) \ No newline at end of file diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/StartedDockerContainer.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/StartedDockerContainer.kt deleted file mode 100644 index 794a20e..0000000 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/docker/StartedDockerContainer.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.atlassian.performance.tools.virtualusers.lib.docker - -import com.github.dockerjava.api.DockerClient -import com.github.dockerjava.api.command.StartContainerCmd - -class StartedDockerContainer( - private val docker: DockerClient, - val id: String -) : AutoCloseable { - override fun close() { - docker.stopContainerCmd(id).exec() - } -} - -fun StartContainerCmd.execAsResource( - docker: DockerClient -): StartedDockerContainer { - exec() - return StartedDockerContainer( - docker, - containerId!! - ) -} diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuContainer.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuContainer.kt deleted file mode 100644 index 3aa72f2..0000000 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuContainer.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.atlassian.performance.tools.virtualusers.lib.sshubuntu - -import com.atlassian.performance.tools.ssh.api.Ssh -import com.github.dockerjava.api.model.Ports - -/** - * @param [ssh] Connects via SSH to an Ubuntu with `sudo`. - * @param [ports] Binds container ports to host address space. - * @param [peerIp] Addresses the Ubuntu within the Docker network. - */ -class SudoSshUbuntuContainer( - val ssh: Ssh, - val ports: Ports, - val peerIp: String -) - diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImage.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImage.kt deleted file mode 100644 index a325dd2..0000000 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImage.kt +++ /dev/null @@ -1,95 +0,0 @@ -package com.atlassian.performance.tools.virtualusers.lib.sshubuntu - -import com.atlassian.performance.tools.ssh.api.Ssh -import com.atlassian.performance.tools.ssh.api.SshHost -import com.atlassian.performance.tools.ssh.api.auth.PasswordAuthentication -import com.atlassian.performance.tools.virtualusers.lib.docker.ConnectedContainer -import com.atlassian.performance.tools.virtualusers.lib.docker.CreatedContainer -import com.atlassian.performance.tools.virtualusers.lib.docker.StartedDockerContainer -import com.atlassian.performance.tools.virtualusers.lib.docker.execAsResource -import com.github.dockerjava.api.DockerClient -import com.github.dockerjava.api.model.ExposedPort -import com.github.dockerjava.api.model.HostConfig -import com.github.dockerjava.core.command.PullImageResultCallback -import java.time.Duration - -/** - * Supports: - * * [Ssh] to an Ubuntu with `sudo` - * * Docker in Docker - * * granular Docker resource allocation and deallocation - */ -class SudoSshUbuntuImage( - private val docker: DockerClient, - private val networkId: String, - private val portsToExpose: List -) { - - fun runInUbuntu( - lambda: (SudoSshUbuntuContainer) -> T - ): T { - docker - .pullImageCmd("rastasheep/ubuntu-sshd") - .withTag("16.04") - .exec(PullImageResultCallback()) - .awaitCompletion() - return docker - .createContainerCmd("rastasheep/ubuntu-sshd:16.04") - .withHostConfig( - HostConfig() - .withPublishAllPorts(true) - .withPrivileged(true) - ) - .withExposedPorts( - portsToExpose.map { ExposedPort.tcp(it) } - ) - .execAsResource(docker) - .use { runInContainer(it, lambda) } - } - - private fun runInContainer( - container: CreatedContainer, - lambda: (SudoSshUbuntuContainer) -> T - ): T = docker - .connectToNetworkCmd() - .withContainerId(container.response.id) - .withNetworkId(networkId) - .execAsResource(docker).use { runInConnectedContainer(it, lambda) } - - private fun runInConnectedContainer( - container: ConnectedContainer, - lambda: (SudoSshUbuntuContainer) -> T - ): T = docker - .startContainerCmd(container.containerId) - .execAsResource(docker) - .use { runInStartedContainer(it, lambda) } - - private fun runInStartedContainer( - container: StartedDockerContainer, - lambda: (SudoSshUbuntuContainer) -> T - ): T { - val networkSettings = docker - .inspectContainerCmd(container.id) - .exec() - .networkSettings - val ip = networkSettings.ipAddress - val ports = networkSettings.ports - val sshPort = ports - .bindings[ExposedPort.tcp(22)]!! - .single() - .hostPortSpec - .toInt() - val sshHost = SshHost( - ipAddress = "localhost", - userName = "root", - authentication = PasswordAuthentication("root"), - port = sshPort - ) - val ssh = Ssh(sshHost) - ssh.newConnection().use { - it.execute("apt-get update", Duration.ofMinutes(2)) - it.execute("apt-get install sudo") - } - return lambda(SudoSshUbuntuContainer(ssh, ports, ip)) - } -} diff --git a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImageIT.kt b/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImageIT.kt deleted file mode 100644 index 13ed1a7..0000000 --- a/src/test/kotlin/com/atlassian/performance/tools/virtualusers/lib/sshubuntu/SudoSshUbuntuImageIT.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.atlassian.performance.tools.virtualusers.lib.sshubuntu - -import com.atlassian.performance.tools.virtualusers.lib.docker.execAsResource -import com.github.dockerjava.core.DockerClientBuilder -import org.assertj.core.api.Assertions.assertThat -import org.junit.Test -import java.util.* - -class SudoSshUbuntuImageIT { - - @Test - fun shouldStartUbuntu() { - val docker = DockerClientBuilder.getInstance().build() - val osName = docker - .createNetworkCmd() - .withName(UUID.randomUUID().toString()) - .execAsResource(docker).use { network -> - SudoSshUbuntuImage( - docker, - network.response.id, - emptyList() - ).runInUbuntu { ubuntu -> - ubuntu.ssh.newConnection().use { ssh -> - ssh.execute("sudo apt-get install -y lsb-release") - ssh.execute("sudo lsb_release -cs").output - } - } - } - - assertThat(osName).isEqualTo("xenial\n") - } -}