package ru.stqa.trainings.testng.tricky4.sample34;
import java.io.File;
import org.testng.IInvokedMethod;
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;
public class VideoListener implements IInvokedMethodListener {
private VideoCreator screencaster;
private Thread videoThread;
@Override
public void beforeInvocation(IInvokedMethod m, ITestResult res) {
if (m.isTestMethod()) {
File videoFile = new File(
res.getTestContext().getOutputDirectory(),
m.getTestMethod().getMethodName() + ".flv");
screencaster = new VideoCreator(videoFile);
videoThread = new Thread(new Runnable() {
@Override
public void run() {
screencaster.createVideoFromScreens();
}
});
videoThread.start();
}
}
@Override
public void afterInvocation(IInvokedMethod m, ITestResult res) {
if (m.isTestMethod() && screencaster != null) {
try {
Thread.sleep(2000);
screencaster.setPleaseStop(true);
while (! screencaster.isStoppedCreation()) {
Thread.sleep(500);
}
videoThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
screencaster = null;
videoThread = null;
}
}
}