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 io.parallec.core.util.PcStringUtils; import java.util.Map; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class ParallelClientHttpTop500WebsiteTest 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(); } /** * Add throttling of 50 when need to hit around 500 web sites testing wait * and retry part */ @Test public void hitTop500WebsitesThrottling() { ParallelTask pt = pc .prepareHttpGet("") .async() .setConcurrency(500) .setTargetHostsFromLineByLineText(FILEPATH_TOP_500, 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(100L); System.err.println(String.format( "POLL_JOB_PROGRESS (%.5g%%) PT jobid: %s", pt.getProgress(), pt.getTaskId())); pc.logHealth(); } catch (InterruptedException e) { e.printStackTrace(); } } logger.info("Result Summary\n{}", PcStringUtils.renderJson(pt.getAggregateResultCountSummary())); }// end func /** * Local ISP seems cannot be more than 500 concurrency or will fail */ // @Test @Ignore public void hitTop1000WebsitesThrottling() { long startTime = System.currentTimeMillis(); ParallelTask pt = pc .prepareHttpGet("") .async() .setConcurrency(500) .setTargetHostsFromLineByLineText(FILEPATH_TOP_1000, 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(1000L); pc.logHealth(); // System.err.println(String.format("POLL_JOB_PROGRESS (%.5g%%) PT jobid: %s", // pt.getProgress(), pt.getTaskId() )); } catch (InterruptedException e) { e.printStackTrace(); } } long endTime = System.currentTimeMillis(); String secondElapsedStr = new Double((endTime - startTime) / 1000.0) .toString(); logger.info("Result Summary\n{}", PcStringUtils.renderJson(pt.getAggregateResultCountSummary())); logger.info("Hit 10K website use {} seconds.", secondElapsedStr); } }