Skip to content
This repository was archived by the owner on Jan 1, 2019. It is now read-only.

Commit 0a37b41

Browse files
author
Jeff Pei
committed
#25 diff ports on diff hosts
1 parent 0d1ed9b commit 0a37b41

File tree

5 files changed

+99
-7
lines changed

5 files changed

+99
-7
lines changed

src/main/java/io/parallec/core/ParallelTaskBuilder.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,19 @@ public ParallelTaskBuilder setHttpPort(int port) {
400400

401401
}
402402

403+
404+
/**
405+
* Sets the port variable name such as $PORT
406+
*
407+
* @param port
408+
* the port
409+
* @return the parallel task builder
410+
*/
411+
public ParallelTaskBuilder setHttpPortReplaceable(String portVar) {
412+
this.httpMeta.setRequestPort(portVar);
413+
return this;
414+
415+
}
403416

404417

405418

src/main/java/io/parallec/core/actor/ExecutionManager.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,11 @@ public void onReceive(Object message) {
173173
final String requestUrlPrefixOrig = httpMeta
174174
.getRequestUrlPostfix();
175175
final HttpMethod httpMethod = httpMeta.getHttpMethod();
176-
final int requestPort = Integer.parseInt(httpMeta
177-
.getRequestPort());
176+
177+
String requestPortStrOrig = httpMeta
178+
.getRequestPort();
179+
180+
178181
final boolean pollable = httpMeta.isPollable();
179182

180183
final int maxConcurrency = task.getConcurrency();
@@ -241,7 +244,18 @@ public void onReceive(Object message) {
241244
.replaceStrByMap(
242245
nodeReqResponse.getRequestParameters(),
243246
requestUrlPrefixOrig);
244-
247+
//add support for port replacement
248+
final String requestPortStr = NodeReqResponse
249+
.replaceStrByMap(
250+
nodeReqResponse.getRequestParameters(),
251+
requestPortStrOrig);
252+
int requestPort = 80;
253+
try{
254+
requestPort = Integer.parseInt(requestPortStr);
255+
}catch(NumberFormatException nfe){
256+
logger.error("Error parsing replacable port with NumberFormatException. "
257+
+ "No valid port for host {}. Now use default port 80", targetHost);
258+
}
245259
//only pass when it is not in manager
246260
final ParallecResponseHandler handler =
247261
task.getConfig().getHandlerExecutionLocation()==HandlerExecutionLocation.MANAGER

src/main/java/io/parallec/core/commander/workflow/ssh/SshProvider.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,6 @@ public Channel sessionConnectGenerateChannel(Session session)
166166

167167
ChannelExec channel = (ChannelExec) session.openChannel("exec");
168168
channel.setCommand(sshMeta.getCommandLine());
169-
// X Forwarding
170-
// channel.setXForwarding(true);
171169

172170
// if run as super user, assuming the input stream expecting a password
173171
if (sshMeta.isRunAsSuperUser()) {
@@ -183,7 +181,7 @@ public Channel sessionConnectGenerateChannel(Session session)
183181
out.write((sshMeta.getPassword()+"\n").getBytes());
184182
out.flush();
185183
} catch (IOException e) {
186-
e.printStackTrace();
184+
logger.error("error in sessionConnectGenerateChannel for super user", e);
187185
}
188186
} else {
189187
channel.setInputStream(null);

src/main/java/io/parallec/core/util/PcErrorMsgUtils.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package io.parallec.core.util;
1414

1515
import java.util.EnumMap;
16-
import java.util.HashMap;
1716
import java.util.Map;
1817

1918

src/test/java/io/parallec/core/main/http/request/template/ParallelClientVarReplacementHostSpecificTest.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.apache.http.util.Asserts;
1919
import org.junit.AfterClass;
20+
import org.junit.Assert;
2021
import org.junit.BeforeClass;
2122
import org.junit.Ignore;
2223
import org.junit.Test;
@@ -35,6 +36,73 @@ public static void shutdown() throws Exception {
3536
pc.releaseExternalResources();
3637
}
3738

39+
/**
40+
* TODO 20160721 git issue #25
41+
* different requests to different ports
42+
* http://www.jeffpei.com:80/job_b.html http://www.portquiz.com:8080/job_b.html
43+
*/
44+
@Test
45+
public void hitWebsitesMinTargetHostSpecificPortReplacement() {
46+
47+
Map<String, StrStrMap> replacementVarMapNodeSpecific = new HashMap<String, StrStrMap>();
48+
replacementVarMapNodeSpecific.put("portquiz.net",
49+
new StrStrMap().addPair("PORT", "8080"));
50+
replacementVarMapNodeSpecific.put("www.jeffpei.com",
51+
new StrStrMap().addPair("PORT", "80"));
52+
53+
pc.prepareHttpGet("/job_b.html")
54+
.setHttpPortReplaceable("$PORT")
55+
.setConcurrency(1700)
56+
.setTargetHostsFromString(
57+
"portquiz.net www.jeffpei.com")
58+
.setReplacementVarMapNodeSpecific(replacementVarMapNodeSpecific)
59+
.execute(new ParallecResponseHandler() {
60+
@Override
61+
public void onCompleted(ResponseOnSingleTask res,
62+
Map<String, Object> responseContext) {
63+
if(res.getRequest().getHost()=="portquiz.net"){
64+
Assert.assertTrue(
65+
res.getStatusCodeInt()==404);
66+
}else if(res.getRequest().getHost()=="www.jeffpei.com"){
67+
Assert.assertTrue(
68+
res.getStatusCodeInt()==200);
69+
}
70+
logger.info(res.toString());
71+
}
72+
});
73+
74+
}
75+
76+
/**
77+
* trigger the NumberFormatException in execution manager.
78+
*/
79+
@Test
80+
public void hitWebsitesMinTargetHostSpecificPortReplacementErrorCase() {
81+
82+
Map<String, StrStrMap> replacementVarMapNodeSpecific = new HashMap<String, StrStrMap>();
83+
replacementVarMapNodeSpecific.put("portquiz.net",
84+
new StrStrMap().addPair("PORT", "8080"));
85+
replacementVarMapNodeSpecific.put("www.jeffpei.com",
86+
new StrStrMap().addPair("PORT", "80"));
87+
88+
pc.prepareHttpGet("/job_b.html")
89+
.setHttpPortReplaceable("$PORT")
90+
.setConcurrency(1700)
91+
.setTargetHostsFromString(
92+
"localhost www.jeffpei.com")
93+
.setReplacementVarMapNodeSpecific(replacementVarMapNodeSpecific)
94+
.execute(new ParallecResponseHandler() {
95+
@Override
96+
public void onCompleted(ResponseOnSingleTask res,
97+
Map<String, Object> responseContext) {
98+
logger.info(""+res.isError());
99+
}
100+
});
101+
102+
}
103+
104+
105+
38106
/**
39107
* different requests to different target URLs
40108
* http://www.jeffpei.com/job_b.html http://www.restsuperman.com/job_c.html

0 commit comments

Comments
 (0)