|
21 | 21 | import org.jenkinsci.plugins.workflow.job.WorkflowJob; |
22 | 22 | import org.jenkinsci.plugins.workflow.job.WorkflowRun; |
23 | 23 |
|
| 24 | +import com.google.common.base.Strings; |
24 | 25 | import com.redhat.jenkins.plugins.ci.CIBuildTrigger; |
25 | 26 | import com.redhat.jenkins.plugins.ci.CIMessageBuilder; |
26 | 27 | import com.redhat.jenkins.plugins.ci.CIMessageNotifier; |
@@ -1235,6 +1236,99 @@ public void _testWaitForCIMessagePipelineWithFiles(List<String> filenames) throw |
1235 | 1236 | jobB.delete(); |
1236 | 1237 | } |
1237 | 1238 |
|
| 1239 | + public void _testCITriggerWithMessageTooLong() throws Exception { |
| 1240 | + FreeStyleProject jobA = j.createFreeStyleProject(); |
| 1241 | + jobA.getBuildersList().add(new Shell("env | sort")); |
| 1242 | + attachTrigger( |
| 1243 | + new CIBuildTrigger(false, |
| 1244 | + Collections.singletonList(getSubscriberProviderData(testName.getMethodName(), null, null))), |
| 1245 | + jobA); |
| 1246 | + |
| 1247 | + FreeStyleProject jobB = j.createFreeStyleProject(); |
| 1248 | + jobB.getPublishersList().add(new CIMessageNotifier(getPublisherProviderData(testName.getMethodName(), "", |
| 1249 | + "{\"msg\": \"" + Strings.repeat("a", 131061) + "\"}"))); |
| 1250 | + |
| 1251 | + j.buildAndAssertSuccess(jobB); |
| 1252 | + |
| 1253 | + waitUntilTriggeredBuildCompletes(jobA); |
| 1254 | + j.assertBuildStatus(Result.FAILURE, jobA.getLastBuild()); |
| 1255 | + j.assertLogContains("Argument list too long", jobA.getLastBuild()); |
| 1256 | + |
| 1257 | + jobA.addProperty(new ParametersDefinitionProperty( |
| 1258 | + Collections.singletonList(new FileParameterDefinition("CI_MESSAGE", "")))); |
| 1259 | + |
| 1260 | + j.buildAndAssertSuccess(jobB); |
| 1261 | + |
| 1262 | + waitUntilTriggeredBuildCompletes(jobA, 2); |
| 1263 | + j.assertBuildStatusSuccess(jobA.getLastBuild()); |
| 1264 | + |
| 1265 | + jobA.delete(); |
| 1266 | + jobB.delete(); |
| 1267 | + } |
| 1268 | + |
| 1269 | + public void _testWaitForCIMessageStepWithMessageTooLong() throws Exception { |
| 1270 | + FreeStyleProject jobA = j.createFreeStyleProject(); |
| 1271 | + jobA.getBuildersList().add(new CIMessageSubscriberBuilder( |
| 1272 | + getSubscriberProviderData(DEFAULT_PROVIDER_NAME, testName.getMethodName(), "CI_MESSAGE", false, ""))); |
| 1273 | + jobA.getBuildersList().add(new Shell("env | sort")); |
| 1274 | + |
| 1275 | + scheduleAwaitStep(jobA); |
| 1276 | + |
| 1277 | + FreeStyleProject jobB = j.createFreeStyleProject(); |
| 1278 | + jobB.getPublishersList().add(new CIMessageNotifier(getPublisherProviderData(testName.getMethodName(), "", |
| 1279 | + "{\"msg\": \"" + Strings.repeat("a", 131061) + "\"}"))); |
| 1280 | + |
| 1281 | + j.buildAndAssertSuccess(jobB); |
| 1282 | + waitUntilTriggeredBuildCompletes(jobA); |
| 1283 | + |
| 1284 | + j.assertBuildStatus(Result.FAILURE, jobA.getLastBuild()); |
| 1285 | + j.assertLogContains("Argument list too long", jobA.getLastBuild()); |
| 1286 | + |
| 1287 | + jobA.getBuildersList().clear(); |
| 1288 | + jobA.getBuildersList().add(new CIMessageSubscriberBuilder( |
| 1289 | + getSubscriberProviderData(DEFAULT_PROVIDER_NAME, testName.getMethodName(), "CI_MESSAGE", true, ""))); |
| 1290 | + jobA.getBuildersList().add(new Shell("env | sort")); |
| 1291 | + scheduleAwaitStep(jobA, 2); |
| 1292 | + |
| 1293 | + j.buildAndAssertSuccess(jobB); |
| 1294 | + waitUntilTriggeredBuildCompletes(jobA, 2); |
| 1295 | + j.assertBuildStatusSuccess(jobA.getLastBuild()); |
| 1296 | + |
| 1297 | + jobA.delete(); |
| 1298 | + jobB.delete(); |
| 1299 | + } |
| 1300 | + |
| 1301 | + public void _testWaitForCIMessagePipelineWithMessageTooLong() throws Exception { |
| 1302 | + WorkflowJob jobA = j.jenkins.createProject(WorkflowJob.class, "wait"); |
| 1303 | + ProviderData pd = getSubscriberProviderData(DEFAULT_PROVIDER_NAME, testName.getMethodName(), "CI_MESSAGE", |
| 1304 | + false, ""); |
| 1305 | + String postStatements = "sh 'printenv'"; |
| 1306 | + jobA.setDefinition(new CpsFlowDefinition(buildWaitForCIMessageScript(pd, null, postStatements))); |
| 1307 | + |
| 1308 | + scheduleAwaitStep(jobA); |
| 1309 | + |
| 1310 | + FreeStyleProject jobB = j.createFreeStyleProject(); |
| 1311 | + jobB.getPublishersList().add(new CIMessageNotifier(getPublisherProviderData(testName.getMethodName(), "", |
| 1312 | + "{\"msg\": \"" + Strings.repeat("a", 131061) + "\"}"))); |
| 1313 | + |
| 1314 | + j.buildAndAssertSuccess(jobB); |
| 1315 | + waitUntilTriggeredBuildCompletes(jobA); |
| 1316 | + |
| 1317 | + j.assertBuildStatus(Result.FAILURE, jobA.getLastBuild()); |
| 1318 | + j.assertLogContains("Argument list too long", jobA.getLastBuild()); |
| 1319 | + |
| 1320 | + pd = getSubscriberProviderData(DEFAULT_PROVIDER_NAME, testName.getMethodName(), "CI_MESSAGE", true, ""); |
| 1321 | + jobA.setDefinition(new CpsFlowDefinition(buildWaitForCIMessageScript(pd, null, postStatements))); |
| 1322 | + scheduleAwaitStep(jobA, 2); |
| 1323 | + |
| 1324 | + j.buildAndAssertSuccess(jobB); |
| 1325 | + waitUntilTriggeredBuildCompletes(jobA, 2); |
| 1326 | + j.assertBuildStatusSuccess(jobA.getLastBuild()); |
| 1327 | + |
| 1328 | + jobA.delete(); |
| 1329 | + jobB.delete(); |
| 1330 | + } |
| 1331 | + |
1238 | 1332 | protected String stringFrom(Process proc) throws InterruptedException, IOException { |
1239 | 1333 | int exit = proc.waitFor(); |
1240 | 1334 | if (exit != 0) { |
|
0 commit comments