private void addProfilerSettings(WorkerJvm workerJvm, List<String> args) { String javaExecutable = "java"; switch (workerJvmSettings.getProfiler()) { case YOURKIT: args.add(javaExecutable); String agentSetting = workerJvmSettings .getProfilerSettings() .replace("${SIMULATOR_HOME}", getSimulatorHome().getAbsolutePath()) .replace("${WORKER_HOME}", workerJvm.getWorkerHome().getAbsolutePath()); args.add(agentSetting); break; case FLIGHTRECORDER: case HPROF: args.add(javaExecutable); args.add(workerJvmSettings.getProfilerSettings()); break; case PERF: case VTUNE: // perf and vtune command always need to be in front of the java command args.add(workerJvmSettings.getProfilerSettings()); args.add(javaExecutable); break; default: args.add(javaExecutable); } }
private void waitForWorkersStartup(WorkerJvm worker, int workerTimeoutSec) { int loopCount = (int) TimeUnit.SECONDS.toMillis(workerTimeoutSec) / WAIT_FOR_WORKER_STARTUP_INTERVAL_MILLIS; for (int i = 0; i < loopCount; i++) { if (hasExited(worker)) { throw new SpawnWorkerFailedException( format( "Startup of Worker on host %s failed, check log files in %s for more information!", agent.getPublicAddress(), worker.getWorkerHome())); } String address = readAddress(worker); if (address != null) { worker.setHzAddress(address); LOGGER.info(format("Worker %s started", worker.getId())); return; } sleepMillis(WAIT_FOR_WORKER_STARTUP_INTERVAL_MILLIS); } throw new SpawnWorkerFailedException( format( "Worker %s of Testsuite %s on Agent %s didn't start within %s seconds", worker.getId(), agent.getTestSuite().getId(), agent.getPublicAddress(), workerTimeoutSec)); }
private String readAddress(WorkerJvm jvm) { File file = new File(jvm.getWorkerHome(), "worker.address"); if (!file.exists()) { return null; } String address = readObject(file); deleteQuiet(file); return address; }
private void generateWorkerStartScript(WorkerType type, WorkerJvm workerJvm) { String[] args = buildArgs(workerJvm, type); File startScript = new File(workerJvm.getWorkerHome(), "worker.sh"); StringBuilder sb = new StringBuilder(); sb.append("#!/bin/bash").append(NEW_LINE); for (String arg : args) { sb.append(arg).append(' '); } sb.append("> worker.out 2> worker.err").append(NEW_LINE); writeText(sb.toString(), startScript); }