package io.parallec.core.taskbuilder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import io.parallec.core.ParallecResponseHandler;
import io.parallec.core.ParallelClient;
import io.parallec.core.ParallelTaskBuilder;
import io.parallec.core.ResponseOnSingleTask;
import io.parallec.core.TestBase;
import io.parallec.core.bean.HttpMeta;
import io.parallec.core.bean.ssh.SshLoginType;
import io.parallec.core.exception.ParallelTaskInvalidException;
import io.parallec.core.exception.TargetHostsLoadException;
import io.parallec.core.resources.HttpClientStore;
import io.parallec.core.resources.HttpMethod;
import java.util.Arrays;
import java.util.Map;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class ParallelTaskBuilderTest 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 builderFuncTest() throws Exception {
String jsonPath = "$.sample.small-target-hosts[*].hostName";
pc.prepareHttpGet("/userdata/$STATE/sample_weather_$ZIP.txt")
.setTargetHostsFromJsonPath(jsonPath, URL_JSON_PATH, SOURCE_URL);
pc.prepareHttpGet("/userdata/$STATE/sample_weather_$ZIP.txt")
.getHttpMeta();
pc.prepareHttpGet("/userdata/$STATE/sample_weather_$ZIP.txt")
.setHttpMeta(new HttpMeta());
}
@Test
public void testInvalid() throws Exception {
ParallelTaskBuilder tb = new ParallelTaskBuilder();
try {
tb.validation();
} catch (ParallelTaskInvalidException e) {
logger.info("expected error " + e);
}
}
@Test
public void testExecuteMock() throws Exception {
ParallelTaskBuilder tb = mock(ParallelTaskBuilder.class);
HttpMeta meta = new HttpMeta();
meta.initValuesNa();
meta.setHttpMethod(HttpMethod.GET);
meta.setRequestPort("80");
ParallecResponseHandler handler = new ParallecResponseHandler() {
@Override
public void onCompleted(ResponseOnSingleTask res,
Map<String, Object> responseContext) {
logger.info("test:" + res.toString());
}
};
try {
when(tb.getMode()).thenThrow(new RuntimeException());
when(tb.execute(handler)).thenCallRealMethod();
tb.setHttpMeta(meta);
tb.execute(handler);
} catch (Exception e) {
logger.info("expected NPE error " + e);
}
}
@Test
public void testExecuteWorkerHandlerException() throws Exception {
ParallelTaskBuilder tb = new ParallelTaskBuilder();
tb.setTargetHostsFromString("www.google.com");
HttpMeta meta = new HttpMeta();
meta.initValuesNa();
meta.setHttpMethod(HttpMethod.GET);
meta.setRequestPort("80");
tb.setHttpMeta(meta);
tb.handleInWorker();
ParallecResponseHandler handler = new ParallecResponseHandler() {
@Override
public void onCompleted(ResponseOnSingleTask res,
Map<String, Object> responseContext) {
throw new RuntimeException();
}
};
try {
tb.execute(handler);
} catch (Exception e) {
logger.info("expected error " + e);
}
}
@Test
public void testSetReplaceVarMapToSingleTargetSingleVar() throws Exception {
ParallelTaskBuilder tb = new ParallelTaskBuilder();
// test setReplaceVarMapToSingleTargetSingleVar
tb.setReplaceVarMapToSingleTargetSingleVar(null, null, null);
tb.setReplaceVarMapToSingleTargetSingleVar(null,
Arrays.asList("a", null, "c"), "replace");
tb.setRunAsSuperUser(true);
}
@Test
public void testSetterGetters() throws Exception {
ParallelTaskBuilder tb = new ParallelTaskBuilder();
tb.setResponseContext(null);
try {
tb.setTargetHostsFromCmsQueryUrl("", "");
} catch (TargetHostsLoadException e) {
logger.info("expected error " + e);
}
try {
tb.setTargetHostsFromCmsQueryUrl("", "", "token");
} catch (TargetHostsLoadException e) {
logger.info("expected error " + e);
}
tb.getTargetHostMeta();
tb.setTargetHostMeta(null);
tb.setSshPort(22);
tb.setSshLoginType(SshLoginType.KEY);
tb.setSshPrivKeyRelativePath("");
tb.setSshPrivKeyRelativePathWtihPassphrase("", "");
tb.setTcpChannelFactory(null);
tb.setTcpConnectTimeoutMillis(1000);
tb.setTcpIdleTimeoutSec(5);
tb.handleInManager();
tb.handleInWorker();
tb.sync();
tb.getAsyncHttpClient();
tb.setHttpEntityBody("test");
tb.setTargetHostsFromList(Arrays.asList("www.parallec.io"));
tb.setAsyncHttpClient(HttpClientStore.getInstance()
.getCurrentDefaultClient());
try {
tb.validation();
} catch (ParallelTaskInvalidException e) {
logger.info("expected error " + e);
}
}
}