Skip to content
Open
6 changes: 4 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ configurations.all {
"com.google.code.gson:gson" -> useVersion("2.8.2")
"org.jsoup:jsoup" -> useVersion("1.10.2")
"com.jcraft:jzlib" -> useVersion("1.1.3")
"commons-codec:commons-codec" -> useVersion("1.11")
}
when (requested.group) {
"org.jetbrains.kotlin" -> useVersion(kotlinVersion)
Expand All @@ -43,8 +44,9 @@ configurations.all {
}

dependencies {
api("com.atlassian.performance.tools:infrastructure:[4.19.0,5.0.0)")
api("com.atlassian.performance.tools:aws-resources:[1.10.1, 2.0.0)") // 1.10.1 gives Ami.Builder.amiProvider
api(fileTree(mapOf("dir" to "lib", "include" to "*.jar")))
api("com.atlassian.performance.tools:infrastructure:[4.12.2,5.0.0)")
api("com.atlassian.performance.tools:aws-resources:[1.1.1,2.0.0)")
api("com.atlassian.performance.tools:jira-actions:[2.0.0,4.0.0)")
api("com.atlassian.performance.tools:ssh:[2.4.1,3.0.0)")
api("com.atlassian.performance.tools:virtual-users:[3.3.0,4.0.0)")
Expand Down
Binary file added lib/infrastructure-4.26.2-SNAPSHOT.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import java.net.URI
import java.nio.file.Path
import java.util.concurrent.Executors

class Infrastructure<out T : VirtualUsers>(
val virtualUsers: T,
class Infrastructure<out V : VirtualUsers>(
val virtualUsers: V,
val jira: Jira,
private val resultsTransport: Storage,
val sshKey: SshKey
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.atlassian.performance.tools.awsinfrastructure.api.database

import com.atlassian.performance.tools.concurrency.api.submitWithLogContext
import com.atlassian.performance.tools.infrastructure.api.jira.install.HttpNode
import com.atlassian.performance.tools.infrastructure.api.jira.install.InstalledJira
import com.atlassian.performance.tools.infrastructure.api.jira.install.hook.PostInstallHook
import com.atlassian.performance.tools.infrastructure.api.jira.install.hook.PostInstallHooks
import com.atlassian.performance.tools.infrastructure.api.jira.install.hook.PreInstallHook
import com.atlassian.performance.tools.infrastructure.api.jira.install.hook.PreInstallHooks
import com.atlassian.performance.tools.infrastructure.api.jira.report.Reports
import com.atlassian.performance.tools.ssh.api.SshConnection
import java.util.concurrent.Executors
import java.util.concurrent.Future

/**
* Begins to run [hook] during [PreInstallHooks] and finishes during [PostInstallHooks]
*/
class AsyncInstallHook(
private val hook: PreInstallHook
) : PreInstallHook {

override fun call(ssh: SshConnection, http: HttpNode, hooks: PreInstallHooks, reports: Reports) {
val thread = Executors.newSingleThreadExecutor()
val future = thread.submitWithLogContext("async-hook") {
hook.call(ssh, http, hooks, reports)
}
hooks.postInstall.insert(FutureHook(future))
}
}

private class FutureHook(
private val future: Future<*>
) : PostInstallHook {

override fun call(ssh: SshConnection, jira: InstalledJira, hooks: PostInstallHooks, reports: Reports) {
future.get()
}
}
Loading