package com.redhat.lightblue.migrator.monitor.HIR;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Arrays;
import java.util.Date;
import org.junit.Test;
import com.redhat.lightblue.client.LightblueException;
import com.redhat.lightblue.client.Projection;
import com.redhat.lightblue.client.request.data.DataInsertRequest;
import com.redhat.lightblue.migrator.MigrationJob;
import com.redhat.lightblue.migrator.MigrationJob.JobExecution;
import com.redhat.lightblue.migrator.monitor.AbstractMonitorTest;
import com.redhat.lightblue.migrator.monitor.MonitorConfiguration;
import com.redhat.lightblue.migrator.monitor.Notifier;
public class TestHIRMonitor extends AbstractMonitorTest {
protected MigrationJob generateMigrationJob(Date actualEndDate, int processedCount, int overwrittenCount) {
MigrationJob job = new MigrationJob();
job.setConfigurationName("fake");
job.setStatus("completed");
job.setGenerated(true);
job.setScheduledDate(new Date());
JobExecution e = new JobExecution();
e.setActualStartDate(new Date());
e.setActualEndDate(actualEndDate);
e.setProcessedDocumentCount(processedCount);
e.setOverwrittenDocumentCount(overwrittenCount);
e.setStatus("fakeStatus");
e.setHostName("fakeHost");
e.setOwnerName("fakeOwner");
job.setJobExecutions(Arrays.asList(e));
return job;
}
@Test
public void testRunCheck_ThresholdNotMet() throws LightblueException {
DataInsertRequest insertJobRequest = new DataInsertRequest(MigrationJob.ENTITY_NAME);
insertJobRequest.create(generateMigrationJob(new Date(), 5, 0));
insertJobRequest.returns(Projection.excludeFieldRecursively("*"));
lightblue.getLightblueClient().data(insertJobRequest);
MonitorConfiguration cfg = new MonitorConfiguration();
cfg.setConfigurationName("fake");
cfg.setWarnThreshold(1);
HIRMonitor monitor = new HIRMonitor(cfg);
monitor.runCheck(new Notifier() {
@Override
public void sendFailure(String message) {
fail("Should not be a failure");
}
@Override
public void sendSuccess() {
//Do nothing
}
@Override
public void sendError(String message) {
fail("Should not be a error");
}
});
}
@Test
public void testRunCheck_ThresholdExceeded() throws LightblueException {
DataInsertRequest insertJobRequest = new DataInsertRequest(MigrationJob.ENTITY_NAME);
insertJobRequest.create(generateMigrationJob(new Date(), 52, 4));
insertJobRequest.returns(Projection.excludeFieldRecursively("*"));
lightblue.getLightblueClient().data(insertJobRequest);
MonitorConfiguration cfg = new MonitorConfiguration();
cfg.setConfigurationName("fake");
cfg.setWarnThreshold(1);
HIRMonitor monitor = new HIRMonitor(cfg);
monitor.runCheck(new Notifier() {
@Override
public void sendFailure(String message) {
assertTrue(message, message.contains("7.69"));
}
@Override
public void sendSuccess() {
fail("Should be a failure");
}
@Override
public void sendError(String message) {
fail("Should not be a error");
}
});
}
}