Silk Test Open Agent блокирует файл трассировки
У нас есть тестирование Java-приложения.
Это приложение выполняет различные виды тестирования. На одном шаге начинается Silk Test.
Это приложение пишет много следов, используя System.out.println.
Мы перенаправляем эти трассировки в файл app.trace в нашем cmd-файле.
Что-то вроде:
java com.test.app > app.trace
Когда это тестирующее приложение останавливается, невозможно удалить файл app.trace, поскольку он заблокирован Silk Test Open Agent.
Я не понимаю, как это приложение может заблокировать наш файл трассировки.
Мы не запускаем это приложение непосредственно из нашего кода.
Мы используем Silk4J lib для запуска Silk Test.
Насколько я знаю, эта библиотека подключается к сервису Windows Silk Test, который запускает Silk Test Open Agent.
Кто-нибудь может мне объяснить - почему и как Silk Test Open Agent блокирует наш файл трассировки?
2 ответа
Причина этого в том, что Open Agent не закрывается после завершения теста. Я просто убиваю Open Agent, когда мой набор готов.
public class ProcessKill {
public void killOpenAgent () {
kill ("openAgent.exe");
}
public void kill (String processName) {
String command = "cmd /c taskkill";
String parameter = " /F /IM " + processName;
System.out.println("Killing process: " + processName);
try {
Runtime.getRuntime().exec(command + parameter);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Я использую TestNG для управления своими тестами, поэтому я просто вызываю это из метода @AfterSuite, чтобы всегда убивать Open Agent после каждого запуска. Это также помогает освободить лицензию.
Причина в том, что дочерние процессы наследуют открытые файлы своих родителей, в этом случае перенаправленный поток вывода в файл. Это имеет смысл, так как позволяет вам также захватывать выходные данные этих дочерних процессов.
Однако, кроме того, что Дэвид Генрих предложил в своем ответе, я не стал бы насильно убивать агента, так как он может затем не высвободить некоторые ресурсы и очиститься должным образом. Это может привести к последующим проблемам.
Я предлагаю отдельно запустить OpenAgent перед запуском ваших тестов, чтобы он не был дочерним процессом бегуна.