import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import com.google.common.util.concurrent.Uninterruptibles;
-import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
import java.util.stream.Collectors;
return uri.toASCIIString() + "/asyncInstantiation";
}
+ protected String getTemplateInfoUrl(String serviceModelId) {
+ return uri.toASCIIString() + "/instantiationTemplates?serviceModelId=" + serviceModelId;
+ }
+
protected String getJobAuditUrl() {
return uri.toASCIIString() + "/asyncInstantiation/auditStatus/{JOB_ID}?source={SOURCE}";
}
}
protected boolean getExpectedRetryEnabled(JobStatus jobStatus) {
- return Features.FLAG_1902_RETRY_JOB.isActive() && (jobStatus==JobStatus.FAILED || jobStatus==JobStatus.COMPLETED_WITH_ERRORS);
+ return Features.FLAG_1902_RETRY_JOB.isActive() && (jobStatus==JobStatus.FAILED || jobStatus==JobStatus.COMPLETED_WITH_ERRORS
+ || jobStatus==JobStatus.FAILED_AND_PAUSED);
}
public List<BasePreset> getPresets(List<PresetMSOBaseDelete> presetOnDeleteList, List<PresetMSOBaseCreateInstancePost> presetOnCreateList, List<PresetMSOOrchestrationRequestGet> presetInProgressList) {
}
protected void assertAndRetryIfNeeded(Runnable asserter, long timeoutInSeconds) {
- final Instant expiry = Instant.now().plusSeconds(timeoutInSeconds);
- while (true) {
- try {
- asserter.run();
- break; // we're cool, assertion passed
- } catch (AssertionError fail) {
- Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
- if (Instant.now().isAfter(expiry)) {
- throw fail;
- } else {
- System.out.println("retrying after: " + fail);
- }
- }
- }
+ TestUtils.assertAndRetryIfNeeded(timeoutInSeconds, asserter);
}
protected ImmutableList<JobAuditStatus> vidAuditStatusesCompletedWithErrors(String jobId) {
return ImmutableList.of(
vidAuditStatus(jobId, "PENDING", false),
vidAuditStatus(jobId, "IN_PROGRESS", false),
- vidAuditStatus(jobId, "COMPLETED_WITH_ERRORS", true)
+ vidAuditStatus(jobId, "COMPLETED_WITH_ERROR", true)
);
}
vidAuditStatus(jobId, "FAILED", true)
);
}
-
+ protected ImmutableList<JobAuditStatus> vidAuditStatusesFailedAndPaused(String jobId) {
+ return ImmutableList.of(
+ vidAuditStatus(jobId, "PENDING", false),
+ vidAuditStatus(jobId, "IN_PROGRESS", false),
+ vidAuditStatus(jobId, "FAILED_AND_PAUSED", true)
+ );
+ }
protected JobAuditStatus vidAuditStatus(String jobId, String jobStatus, boolean isFinal) {
return new JobAuditStatus(UUID.fromString(jobId), jobStatus, JobAuditStatus.SourceStatus.VID, null, null, isFinal);
}
final List<String> jobIds = createBulkOfMacroInstances(presets, false, bulkSize, names);
Assert.assertEquals(jobIds.size(),bulkSize);
+ waitForJobsToSuccessfullyCompleted(bulkSize, jobIds);
+ return jobIds;
+ }
+
+ public void waitForJobsToSuccessfullyCompleted(int bulkSize, List<String> jobIds) {
assertTrue(String.format("Not all services with ids: %s are in state completed after 30 sec",
jobIds.stream().collect(joining(","))),
Wait.waitFor(y-> serviceListCall().getBody().stream()
.filter(si -> jobIds.contains(si.jobId))
- .filter(si -> si.jobStatus==JobStatus.COMPLETED)
+ .filter(si -> si.jobStatus== JobStatus.COMPLETED)
.count() == bulkSize,
null, 30, 1 ));
- return jobIds;
}
protected List<JobAuditStatus> getJobMsoAuditStatusForAlaCarte(String jobUUID, String requestId, String serviceInstanceId){
}
protected void assertExpectedStatusAndServiceInfo(JobStatus finalState, String jobId, ServiceInfo expectedServiceInfo) {
- assertExpectedStatusAndServiceInfo(finalState, jobId, false, expectedServiceInfo);
+ assertExpectedStatusAndServiceInfo(finalState, jobId, PATIENCE_LEVEL.FAIL_FAST, expectedServiceInfo);
}
- protected void assertExpectedStatusAndServiceInfo(JobStatus finalState, String jobId, boolean longWait, ServiceInfo expectedServiceInfo) {
+ enum PATIENCE_LEVEL { FAIL_FAST, FAIL_SLOW, FAIL_VERY_SLOW }
+
+ protected void assertExpectedStatusAndServiceInfo(JobStatus finalState, String jobId, PATIENCE_LEVEL patienceLevel, ServiceInfo expectedServiceInfo) {
JobInfoChecker<Integer> jobInfoChecker = new JobInfoChecker<>(
restTemplate, ImmutableSet.of(JobStatus.PENDING, JobStatus.IN_PROGRESS, finalState), jobId, expectedServiceInfo);
boolean result = jobInfoChecker.test(null);
if (ImmutableList.of(JobStatus.COMPLETED, JobStatus.PAUSE).contains(finalState) && expectedServiceInfo.serviceInstanceId==null) {
expectedServiceInfo.serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
}
- result = Wait.waitFor(jobInfoChecker, null, 30, longWait ? 2 : 1);
+ result = Wait.waitFor(jobInfoChecker, null, 30, waitIntervalBy(patienceLevel));
assertTrue("service info of jobId: " + jobId + " was in status: " + jobInfoChecker.lastStatus, result);
}
+ private int waitIntervalBy(PATIENCE_LEVEL patienceLevel) {
+ switch (patienceLevel) {
+ case FAIL_SLOW:
+ return 2;
+ case FAIL_VERY_SLOW:
+ return 3;
+ default:
+ return 1;
+ }
+ }
+
protected List<String> createBulkOfMacroInstances(ImmutableList<BasePreset> presets, boolean isPause, int bulkSize, Map<Keys, String> names) {
SimulatorApi.registerExpectationFromPresets(presets, SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET);
return createBulkOfInstances(isPause, bulkSize, names, CREATE_BULK_OF_MACRO_REQUEST);
.filter(serviceInfo -> serviceInfo.jobId.equals(jobId))
.findFirst().orElse(null);
Assert.assertNotNull(serviceInfoFromDB);
- Assert.assertEquals(serviceInfoDataReflected(expectedServiceInfo), serviceInfoDataReflected(serviceInfoFromDB));
+ Assert.assertEquals(serviceInfoDataReflected(serviceInfoFromDB), serviceInfoDataReflected(expectedServiceInfo));
assertTrue("actual service instance doesn't contain template service name:" + expectedServiceInfo.serviceInstanceName,
serviceInfoFromDB.serviceInstanceName.contains(expectedServiceInfo.serviceInstanceName));
.toString();
}
- protected void addBulkPendingWithCustomList(List<BasePreset> customPresets){
+ protected Map<Keys, String> addBulkPendingWithCustomList(List<BasePreset> customPresets){
Map<Keys, String> names = generateNames();
final int bulkSize = 2 + customPresets.size();
ImmutableList<BasePreset> presets = new ImmutableList.Builder<BasePreset>()
.add(new PresetGetSessionSlotCheckIntervalGet())
.add(new PresetAAIGetSubscribersGet())
+ .add(PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN3_TO_ATT_SABABA, PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MDT1_TO_ATT_NC)
.addAll(msoBulkPresets)
.addAll(customPresets)
.build();
List<String> jobIds = createBulkOfMacroInstances(presets, false, bulkSize, names);
Assert.assertEquals(jobIds.size(),bulkSize);
+
+ return names;
}
protected void verifyAuditStatuses(String jobId, List<String> statuses, JobAuditStatus.SourceStatus source) {
org.junit.Assert.assertEquals("MSO instanceType #" + i + " is not as expected", expectedStatus.getInstanceType(), actualStatus.getInstanceType());
});
}
+ protected static JobStatus getErrorStatus() {
+ return Features.FLAG_2008_PAUSE_VFMODULE_INSTANTIATION_FAILURE.isActive() ?
+ JobStatus.FAILED_AND_PAUSED : JobStatus.COMPLETED_WITH_ERRORS;
+ }
}