package io.parallec.core.main.http; import io.parallec.core.ParallecResponseHandler; import io.parallec.core.ParallelClient; import io.parallec.core.ParallelTask; import io.parallec.core.ResponseOnSingleTask; import io.parallec.core.TestBase; import java.util.Map; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * @author Yuanteng (Jeff) Pei * */ public class ParallelTaskCancelWholeTaskTest extends TestBase { private static ParallelClient pc; @BeforeClass public static void setUp() throws Exception { pc = new ParallelClient(); } @AfterClass public static void shutdown() throws Exception { pc.releaseExternalResources(); } @Test public void cancelAfter100ms() { ParallelTask pt = pc .prepareHttpGet("") .async() .setConcurrency(300) .setTargetHostsFromLineByLineText(FILEPATH_TOP_100, SOURCE_LOCAL).execute(new ParallecResponseHandler() { @Override public void onCompleted(ResponseOnSingleTask res, Map<String, Object> responseContext) { logger.info("Responose Code:" + res.getStatusCode() + " host: " + res.getHost()); } }); boolean hasCanceled = false; while (!pt.isCompleted()) { try { Thread.sleep(100L); if (!hasCanceled) pt.cancel(false); System.err.println(String.format( "POLL_JOB_PROGRESS (%.5g%%) PT jobid: %s", pt.getProgress(), pt.getTaskId())); } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(3000L); } catch (InterruptedException e) { e.printStackTrace(); } } @Test public void cancelAfterDone() { // $NULL_UR ParallelTask pt = pc .prepareHttpGet("") .async() .setConcurrency(300) .setTargetHostsFromLineByLineText(FILEPATH_TOP_100, SOURCE_LOCAL).execute(new ParallecResponseHandler() { @Override public void onCompleted(ResponseOnSingleTask res, Map<String, Object> responseContext) { logger.info("Responose Code:" + res.getStatusCode() + " host: " + res.getHost()); } }); while (!pt.isCompleted()) { try { Thread.sleep(2000L); System.err.println(String.format( "POLL_JOB_PROGRESS (%.5g%%) PT jobid: %s", pt.getProgress(), pt.getTaskId())); } catch (InterruptedException e) { e.printStackTrace(); } } pt.cancel(true); try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } } @Test public void cancelAfter2SecSync() { logger.info("START cancelAfter2SecSync "); ParallelTask pt = pc .prepareHttpGet("") .async() .setConcurrency(300) .setTargetHostsFromLineByLineText(FILEPATH_TOP_100, SOURCE_LOCAL).execute(new ParallecResponseHandler() { @Override public void onCompleted(ResponseOnSingleTask res, Map<String, Object> responseContext) { logger.info("Responose Code:" + res.getStatusCode() + " host: " + res.getHost()); } }); while (!pt.isCompleted()) { try { // travis ci is quick; can often finish the whole task within 1 sec. Thread.sleep(500L); pt.cancel(true); System.err.println(String.format( "POLL_JOB_PROGRESS (%.5g%%) PT jobid: %s", pt.getProgress(), pt.getTaskId())); } catch (InterruptedException e) { e.printStackTrace(); } } pt.saveLogToLocal(); logger.info("COMPLETED cancelAfter2SecSync "); } }