package io.parallec.core.main.http; import io.parallec.core.FilterRegex; 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.PcDateUtils; import java.util.HashMap; import java.util.Map; import org.apache.http.util.Asserts; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class ParallelClientHttpFromCmsAsyncTest 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(); } /** * With CMS query; async timeout 15 seconds * Added token */ @Test(timeout = 15000) public void hitCmsQuerySinglePageWithoutTokenAsync() { // http://ccoetech.ebay.com/cms-configuration-management-service-based-mongodb String cmsQueryUrl = URL_CMS_QUERY_SINGLE_PAGE; ParallelTask pt = pc.prepareHttpGet("/validateInternals.html") .setTargetHostsFromCmsQueryUrl(cmsQueryUrl, "label") .setConcurrency(1700).async() .execute(new ParallecResponseHandler() { @Override public void onCompleted(ResponseOnSingleTask res, Map<String, Object> responseContext) { String cpu = new FilterRegex( ".*<td>CPU-Usage-Percent</td>\\s*<td>(.*?)</td>[\\s\\S]*") .filter(res.getResponseContent()); String memory = new FilterRegex( ".*<td>Memory-Used-KB</td>\\s*<td>(.*?)</td>[\\s\\S]*") .filter(res.getResponseContent()); Map<String, Object> metricMap = new HashMap<String, Object>(); metricMap.put("CpuUsage", cpu); metricMap.put("MemoryUsage", memory); metricMap.put("LastUpdated", PcDateUtils.getNowDateTimeStrStandard()); metricMap.put("NodeGroupType", "OpenSource"); logger.info("cpu:" + cpu + " host: " + res.getHost()); } }); logger.info(pt.toString()); Asserts.check(pt.getRequestNum() == 3, "fail to load all target hosts"); while (!pt.isCompleted()) { try { Thread.sleep(100L); System.err.println(String.format("POLL_JOB_PROGRESS (%.5g%%)", pt.getProgress())); } catch (InterruptedException e) { e.printStackTrace(); } } } /** * With CMS query; async timeout 15 seconds * Added token */ @Test(timeout = 15000) public void hitCmsQuerySinglePageWithTokenAsync() { // http://ccoetech.ebay.com/cms-configuration-management-service-based-mongodb String cmsQueryUrl = URL_CMS_QUERY_SINGLE_PAGE; ParallelTask pt = pc.prepareHttpGet("/validateInternals.html") .setTargetHostsFromCmsQueryUrl(cmsQueryUrl, "label", "someToken") .setConcurrency(1700).async() .execute(new ParallecResponseHandler() { @Override public void onCompleted(ResponseOnSingleTask res, Map<String, Object> responseContext) { String cpu = new FilterRegex( ".*<td>CPU-Usage-Percent</td>\\s*<td>(.*?)</td>[\\s\\S]*") .filter(res.getResponseContent()); String memory = new FilterRegex( ".*<td>Memory-Used-KB</td>\\s*<td>(.*?)</td>[\\s\\S]*") .filter(res.getResponseContent()); Map<String, Object> metricMap = new HashMap<String, Object>(); metricMap.put("CpuUsage", cpu); metricMap.put("MemoryUsage", memory); metricMap.put("LastUpdated", PcDateUtils.getNowDateTimeStrStandard()); metricMap.put("NodeGroupType", "OpenSource"); logger.info("cpu:" + cpu + " host: " + res.getHost()); } }); logger.info(pt.toString()); Asserts.check(pt.getRequestNum() == 3, "fail to load all target hosts"); while (!pt.isCompleted()) { try { Thread.sleep(100L); System.err.println(String.format("POLL_JOB_PROGRESS (%.5g%%)", pt.getProgress())); } catch (InterruptedException e) { e.printStackTrace(); } } } /** * With CMS(YiDB) query; async timeout 15 seconds CMS Example: * http://ccoetech * .ebay.com/cms-configuration-management-service-based-mongodb */ @Test(timeout = 15000) public void hitCmsQueryMultiPageAsync() { String cmsQueryUrl = URL_CMS_QUERY_MULTI_PAGE; ParallelTask pt = pc.prepareHttpGet("/validateInternals.html") .setTargetHostsFromCmsQueryUrl(cmsQueryUrl) .setConcurrency(1700).async() .execute(new ParallecResponseHandler() { @Override public void onCompleted(ResponseOnSingleTask res, Map<String, Object> responseContext) { String cpu = new FilterRegex( ".*<td>CPU-Usage-Percent</td>\\s*<td>(.*?)</td>[\\s\\S]*") .filter(res.getResponseContent()); String memory = new FilterRegex( ".*<td>Memory-Used-KB</td>\\s*<td>(.*?)</td>[\\s\\S]*") .filter(res.getResponseContent()); Map<String, Object> metricMap = new HashMap<String, Object>(); metricMap.put("CpuUsage", cpu); metricMap.put("MemoryUsage", memory); logger.info("cpu:" + cpu + " memory: " + memory + " host: " + res.getHost()); Double cpuDouble = Double.parseDouble(cpu); Asserts.check(cpuDouble <= 100.0 && cpuDouble >= 0.0, " Fail to extract cpu values"); } }); logger.info(pt.toString()); Asserts.check(pt.getRequestNum() == 3, "fail to load all target hosts"); while (!pt.isCompleted()) { try { Thread.sleep(100L); System.err.println(String.format("POLL_JOB_PROGRESS (%.5g%%)", pt.getProgress())); } catch (InterruptedException e) { e.printStackTrace(); } } } }