package blade.migrate.test;
import static org.junit.Assert.assertTrue;
import blade.migrate.api.Migration;
import blade.migrate.api.Problem;
import blade.migrate.api.ProgressMonitor;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;
public class ProgressMonitorCancelTest {
@Test
public void cancelableProgressMonitor() throws Exception {
ServiceReference<Migration> sr = context
.getServiceReference(Migration.class);
final Migration m = context.getService(sr);
final List<Problem> result = new ArrayList<>();
final CancelableProgressMonitor cancelable = new CancelableProgressMonitor();
final Thread t = new Thread() {
@Override
public void run() {
List<Problem> problems = m
.findProblems(new File(
"../blade.migrate.liferay70/projects/"), cancelable);
result.addAll(problems);
}
};
t.start();
Thread.sleep(5000);
cancelable.canceled = true;
t.join();
final int expectedSize = 284;
final int size = result.size();
assertTrue(size < expectedSize);
}
private final BundleContext context = FrameworkUtil.getBundle(
this.getClass()).getBundleContext();
static class CancelableProgressMonitor implements ProgressMonitor {
boolean canceled = false;
@Override
public void beginTask(String taskName, int totalWork) {
}
@Override
public void done() {
}
@Override
public boolean isCanceled() {
return canceled;
}
@Override
public void setTaskName(String taskName) {
}
@Override
public void worked(int work) {
}
}
}