use of com.synopsys.integration.wait.ResilientJobConfig in project hub-alert by blackducksoftware.
the class ScalingPerformanceTest method createAndTestJobs.
private void createAndTestJobs(AlertRequestUtility alertRequestUtility, BlackDuckProviderService blackDuckProviderService, ConfigurationManager configurationManager, LocalDateTime startingTime, List<String> jobIds, int numberOfJobsToCreate, String blackDuckProviderID) throws Exception {
// create slack jobs
createSlackJobs(configurationManager, startingTime, jobIds, numberOfJobsToCreate, 10, blackDuckProviderID, blackDuckProviderService.getBlackDuckProviderKey(), blackDuckProviderService.getBlackDuckProjectName());
LocalDateTime startingNotificationSearchDateTime = LocalDateTime.now();
// trigger BD notification
blackDuckProviderService.triggerBlackDuckNotification();
logTimeElapsedWithMessage("Triggering the Black Duck notification took %s", startingNotificationSearchDateTime, LocalDateTime.now());
LocalDateTime startingNotificationWaitForTenJobs = LocalDateTime.now();
// check that all jobs have processed the notification successfully, log how long it took
ResilientJobConfig resilientJobConfig = new ResilientJobConfig(intLogger, 900, startingNotificationSearchDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(), 30);
NotificationWaitJobTask notificationWaitJobTask = new NotificationWaitJobTask(intLogger, dateTimeFormatter, gson, alertRequestUtility, startingNotificationSearchDateTime, jobIds);
notificationWaitJobTask.setFailOnJobFailure(false);
boolean isComplete = WaitJob.waitFor(resilientJobConfig, notificationWaitJobTask, "scaling notification wait");
logTimeElapsedWithMessage("Waiting for " + numberOfJobsToCreate + " jobs to process the notification took %s", startingNotificationWaitForTenJobs, LocalDateTime.now());
intLogger.info("Finished waiting for the notification to be processed: " + isComplete);
assertTrue(isComplete);
}
use of com.synopsys.integration.wait.ResilientJobConfig in project hub-alert by blackducksoftware.
the class ComponentUnknownVersionNotificationSerializationTest method testNotificationSerialization.
@Test
// performance test
@Ignore
@Disabled
void testNotificationSerialization() throws IntegrationException, InterruptedException {
LocalDateTime searchStartTime = LocalDateTime.now().minusMinutes(1);
AlertRequestUtility alertRequestUtility = IntegrationPerformanceTestRunner.createAlertRequestUtility(webApplicationContext);
BlackDuckProviderService blackDuckProviderService = new BlackDuckProviderService(alertRequestUtility, gson);
configureJob(alertRequestUtility, blackDuckProviderService);
ExternalId externalId = new ExternalId(Forge.MAVEN);
externalId.setGroup("commons-fileupload");
externalId.setName("commons-fileupload");
Predicate<ProjectVersionComponentVersionView> componentFilter = (component) -> component.getComponentName().equals("Apache Commons FileUpload");
blackDuckProviderService.triggerBlackDuckNotification(() -> externalId, componentFilter);
try {
ResilientJobConfig resilientJobConfig = new ResilientJobConfig(intLogger, 300, searchStartTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(), 20);
NotificationReceivedWaitJobTask notificationWaitJobTask = new NotificationReceivedWaitJobTask(notificationAccessor, searchStartTime, "Apache Commons FileUpload", null, NotificationType.COMPONENT_UNKNOWN_VERSION);
boolean isComplete = WaitJob.waitFor(resilientJobConfig, notificationWaitJobTask, "notification serialization test notification wait");
if (isComplete) {
String notificationContent = notificationWaitJobTask.getNotificationContent().orElseThrow(() -> new IllegalStateException("Expected notification is missing."));
BlackDuckResponseResolver resolver = blackDuckProviderService.getBlackDuckServicesFactory().getBlackDuckResponseResolver();
ComponentUnknownVersionNotificationView notificationView = resolver.resolve(notificationContent, ComponentUnknownVersionNotificationView.class);
assertNotNull(notificationView.getContent());
assertTrue(StringUtils.isNotBlank(notificationView.getContent().getComponentName()));
BlackDuckApiClient apiClient = blackDuckProviderService.getBlackDuckServicesFactory().getBlackDuckApiClient();
Optional<HttpUrl> componentUrl = HttpUrl.createSafely(notificationView.getContent().getBomComponent());
if (componentUrl.isPresent()) {
apiClient.delete(componentUrl.get());
}
}
} catch (InterruptedException ex) {
// if a timeout happens that's ok we are trying to ensure deserialization is correct.
}
}
use of com.synopsys.integration.wait.ResilientJobConfig in project blackduck-alert by blackducksoftware.
the class IntegrationPerformanceTestRunner method runTest.
public void runTest(Runnable createGlobalConfigFunction, Map<String, FieldValueModel> channelFields, String jobName) throws IntegrationException, InterruptedException {
intLogger.info(String.format("Starting time %s", dateTimeFormatter.format(LocalDateTime.now())));
String blackDuckProviderID = createBlackDuckConfiguration();
createGlobalConfigFunction.run();
LocalDateTime jobStartingTime = LocalDateTime.now();
String jobId = configurationManager.createJob(channelFields, jobName, blackDuckProviderID, blackDuckProviderService.getBlackDuckProjectName());
String jobMessage = String.format("Creating the Job %s jobs took", jobName);
logTimeElapsedWithMessage(jobMessage + " %s", jobStartingTime, LocalDateTime.now());
LocalDateTime startingSearchDateTime = LocalDateTime.now();
// trigger BD notification
blackDuckProviderService.triggerBlackDuckNotification();
intLogger.info("Triggered the Black Duck notification.");
ResilientJobConfig resilientJobConfig = new ResilientJobConfig(intLogger, 600, startingSearchDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(), 20);
NotificationWaitJobTask notificationWaitJobTask = new NotificationWaitJobTask(intLogger, dateTimeFormatter, gson, alertRequestUtility, startingSearchDateTime, jobId);
boolean isComplete = WaitJob.waitFor(resilientJobConfig, notificationWaitJobTask, "int performance test runner notification wait");
intLogger.info("Finished waiting for the notification to be processed: " + isComplete);
assertTrue(isComplete);
}
use of com.synopsys.integration.wait.ResilientJobConfig in project blackduck-alert by blackducksoftware.
the class IntegrationPerformanceTestRunnerV2 method waitForJobToFinish.
private void waitForJobToFinish(LocalDateTime startingNotificationTime, WaitJobCondition waitJobCondition) throws IntegrationException, InterruptedException {
ResilientJobConfig resilientJobConfig = new ResilientJobConfig(intLogger, waitTimeoutInSeconds, startingNotificationTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(), 2);
boolean isComplete = WaitJob.waitFor(resilientJobConfig, waitJobCondition, "int performance test runner notification wait");
intLogger.info("Finished waiting for the notification to be processed: " + isComplete);
assertTrue(isComplete);
}
use of com.synopsys.integration.wait.ResilientJobConfig in project blackduck-alert by blackducksoftware.
the class NotificationRemovalTest method testDeletion.
@Test
// performance test
@Ignore
@Disabled
void testDeletion() throws IntegrationException, InterruptedException {
providerConfig = createBlackDuckConfiguration();
OffsetDateTime testStartTime = OffsetDateTime.now();
OffsetDateTime notificationCreatedAtTime = OffsetDateTime.now();
// create 1000 processed notifications not for removal
createABatchOfNotifications(providerConfig, testStartTime, true);
// create 9000 for removal with varying dates and processed flags
for (int index = 0; index < 9; index++) {
boolean processed = index % 2 == 0 ? true : false;
// update the createdAt time to be 1 month older
notificationCreatedAtTime = notificationCreatedAtTime.minusMonths(1);
createABatchOfNotifications(providerConfig, notificationCreatedAtTime, processed);
}
OffsetDateTime oldestNotificationCreationTime = notificationCreatedAtTime;
purgeTask = new PurgeTask(schedulingDescriptorKey, taskScheduler, notificationAccessor, systemMessageAccessor, taskManager, configurationModelConfigurationAccessor);
LocalDateTime startTime = LocalDateTime.now();
purgeTask.runTask();
WaitJobCondition waitJobCondition = () -> {
List<AlertNotificationModel> notificationsInDatabase = getAllNotificationsInDatabase(oldestNotificationCreationTime, testStartTime);
return notificationsInDatabase.size() == BATCH_SIZE && notificationsInDatabase.stream().allMatch(AlertNotificationModel::getProcessed);
};
ResilientJobConfig resilientJobConfig = new ResilientJobConfig(LOGGER, 600, startTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(), 1);
boolean isComplete = WaitJob.waitFor(resilientJobConfig, waitJobCondition, "int performance test runner notification wait");
logTimeElapsedWithMessage("Purge of notifications duration: %s", startTime, LocalDateTime.now());
List<AlertNotificationModel> remainingNotifications = getAllNotificationsInDatabase(oldestNotificationCreationTime, testStartTime);
assertTrue(isComplete);
assertEquals(BATCH_SIZE, remainingNotifications.size());
}
Aggregations