Silk Test Open Agent блокирует файл трассировки - PullRequest
1 голос
/ 07 марта 2012

У нас есть тестирование 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 ]

1 голос
/ 25 мая 2012

Причина этого в том, что 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 после каждого запуска. Это также помогает освободить лицензию.

0 голосов
/ 02 июля 2012

Причина в том, что дочерние процессы наследуют открытые файлы своих родителей, в этом случае перенаправленный поток вывода в файл. Это имеет смысл, так как позволяет вам также захватывать выходные данные этих дочерних процессов.

Однако, кроме того, что Дэвид Генрих предложил в своем ответе, я бы не стал насильно убивать агента, так как он может затем не высвободить некоторые ресурсы и очиститься должным образом. Это может привести к последующим проблемам.

Я предлагаю отдельно запустить OpenAgent до , когда вы запустите свои тесты, чтобы это не был дочерний процесс бегуна.

...