Easy all in one launch of UI + SSH tunnels.

This commit is contained in:
rick.parker 2017-11-10 11:40:12 +00:00
parent 2650be356b
commit 1570ea3b53
3 changed files with 38 additions and 9 deletions

View File

@ -59,6 +59,10 @@ run {
// If you want to debug: jvmArgs += "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
args+= [ "-p", sourceSets.main.resources.getSrcDirs().first().getPath()+"/jmeter.properties",
"-d", sourceSets.main.resources.getSrcDirs().first().getPath() ]
if ( project.hasProperty("jmeterHosts") ) {
args+= "-Xssh"
args+= Eval.me(jmeterHosts)
}
}
jar {

View File

@ -13,6 +13,7 @@ class Launcher {
@JvmStatic
fun main(args: Array<String>) {
val logger = LoggerFactory.getLogger(this::class.java)
logger.info("Launcher called with ${args.toList()}")
val jmeter = JMeter()
val capsuleDir = System.getProperty("capsule.dir")
if (capsuleDir != null) {
@ -44,8 +45,21 @@ class Launcher {
}
jmeter.start(arrayOf("-s", "-p", (capsuleDirPath / "jmeter.properties").toString()) + extraArgs + args)
} else {
jmeter.start(args)
jmeter.start(maybeOpenSshTunnels(args))
}
}
private fun maybeOpenSshTunnels(args: Array<String>): Array<String> {
var index = 0
for (arg in args) {
if (arg == "-Xssh") {
// start ssh
Ssh.main(args.copyOfRange(index + 1, args.size), false)
return if (index == 0) emptyArray() else args.copyOfRange(0, index)
}
index++
}
return args
}
}
}

View File

@ -4,6 +4,7 @@ import com.jcraft.jsch.JSch
import com.jcraft.jsch.Session
import net.corda.core.utilities.NetworkHostAndPort
import net.corda.loadtest.setupJSchWithSshAgent
import net.corda.nodeapi.internal.addShutdownHook
import org.slf4j.LoggerFactory
import java.io.BufferedReader
import java.io.InputStreamReader
@ -15,7 +16,8 @@ class Ssh {
val log = LoggerFactory.getLogger(this::class.java)
@JvmStatic
fun main(args: Array<String>) {
@JvmOverloads
fun main(args: Array<String>, wait: Boolean = true) {
val userName = System.getProperty("user.name")
val jsch = setupJSchWithSshAgent()
val sessions = mutableListOf<Session>()
@ -58,14 +60,23 @@ class Ssh {
// ssh ${remoteHostAndPort.host} -R 0.0.0.0:clientRmiLocalPort:localhost:clientRmiLocalPort -N
createInboundTunnel(session, NetworkHostAndPort("0.0.0.0", clientRmiLocalPort), NetworkHostAndPort("localhost", clientRmiLocalPort))
}
val input = BufferedReader(InputStreamReader(System.`in`))
do {
log.info("Type 'quit' to exit cleanly.")
} while (input.readLine() != "quit")
sessions.forEach {
log.info("Closing tunnels for ${it.host}")
it.disconnect()
if (wait) {
val input = BufferedReader(InputStreamReader(System.`in`))
do {
log.info("Type 'quit' to exit cleanly.")
} while (input.readLine() != "quit")
sessions.forEach {
log.info("Closing tunnels for ${it.host}")
it.disconnect()
}
} else {
addShutdownHook {
sessions.forEach {
log.info("Closing tunnels for ${it.host}")
it.disconnect()
}
}
}
}