package com.redhat.lightblue.migrator.monitor.NMP; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Calendar; import java.util.Date; import org.junit.Test; import com.redhat.lightblue.client.Projection; import com.redhat.lightblue.client.request.data.DataInsertRequest; import com.redhat.lightblue.migrator.MigrationConfiguration; import com.redhat.lightblue.migrator.MigrationJob; import com.redhat.lightblue.migrator.monitor.AbstractMonitorTest; import com.redhat.lightblue.migrator.monitor.MonitorConfiguration; import com.redhat.lightblue.migrator.monitor.Notifier; public class TestNMPMonitor extends AbstractMonitorTest { @Override protected MigrationConfiguration generateMigrationConfiguration(String period) { MigrationConfiguration config = super.generateMigrationConfiguration("fake"); config.setPeriod(period); return config; } protected MigrationJob generateMigrationJob(Date scheduledDate) { MigrationJob job = new MigrationJob(); job.setConfigurationName("fake"); job.setStatus("ready"); job.setScheduledDate(scheduledDate); return job; } @Test public void testRunCheck_NoConfigurations() throws Exception { NMPMonitor monitor = new NMPMonitor(new MonitorConfiguration()); monitor.runCheck(new Notifier() { @Override public void sendSuccess() { //Do nothing } @Override public void sendFailure(String message) { fail("Should not be a failure"); } @Override public void sendError(String message) { fail("Should not be a error"); } }); } @Test public void testRunCheck_MissingJob() throws Exception { DataInsertRequest insert = new DataInsertRequest(MigrationConfiguration.ENTITY_NAME); insert.create(generateMigrationConfiguration("1 day")); insert.returns(Projection.excludeFieldRecursively("*")); lightblue.getLightblueClient().data(insert); NMPMonitor monitor = new NMPMonitor(new MonitorConfiguration()); monitor.runCheck(new Notifier() { @Override public void sendSuccess() { fail("Should be a failure"); } @Override public void sendFailure(String message) { assertTrue(message.contains("fake")); } @Override public void sendError(String message) { fail("Should not be a error"); } }); } @Test public void testRunCheck_HasCurrentJob() throws Exception { DataInsertRequest insertConfigRequest = new DataInsertRequest(MigrationConfiguration.ENTITY_NAME); insertConfigRequest.create(generateMigrationConfiguration("1 day")); insertConfigRequest.returns(Projection.excludeFieldRecursively("*")); lightblue.getLightblueClient().data(insertConfigRequest); DataInsertRequest insertJobRequest = new DataInsertRequest(MigrationJob.ENTITY_NAME); insertJobRequest.create(generateMigrationJob(new Date())); insertJobRequest.returns(Projection.excludeFieldRecursively("*")); lightblue.getLightblueClient().data(insertJobRequest); NMPMonitor monitor = new NMPMonitor(new MonitorConfiguration()); monitor.runCheck(new Notifier() { @Override public void sendSuccess() { //Do nothing } @Override public void sendFailure(String message) { fail("Should not be a failure"); } @Override public void sendError(String message) { fail("Should not be a error"); } }); } @Test public void testRunCheck_Check2PeriodsAgo_Success() throws Exception { DataInsertRequest insertConfigRequest = new DataInsertRequest(MigrationConfiguration.ENTITY_NAME); insertConfigRequest.create(generateMigrationConfiguration("1 day")); insertConfigRequest.returns(Projection.excludeFieldRecursively("*")); lightblue.getLightblueClient().data(insertConfigRequest); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); DataInsertRequest insertJobRequest = new DataInsertRequest(MigrationJob.ENTITY_NAME); insertJobRequest.create(generateMigrationJob(cal.getTime())); insertJobRequest.returns(Projection.excludeFieldRecursively("*")); lightblue.getLightblueClient().data(insertJobRequest); MonitorConfiguration cfg = new MonitorConfiguration(); cfg.setPeriods(2); NMPMonitor monitor = new NMPMonitor(cfg); monitor.runCheck(new Notifier() { @Override public void sendSuccess() { //Do nothing } @Override public void sendFailure(String message) { fail("Should not be a failure"); } @Override public void sendError(String message) { fail("Should not be a error"); } }); } @Test public void testRunCheck_Check2PeriodsAgo_Failure() throws Exception { DataInsertRequest insertConfigRequest = new DataInsertRequest(MigrationConfiguration.ENTITY_NAME); insertConfigRequest.create(generateMigrationConfiguration("1 day")); insertConfigRequest.returns(Projection.excludeFieldRecursively("*")); lightblue.getLightblueClient().data(insertConfigRequest); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); DataInsertRequest insertJobRequest = new DataInsertRequest(MigrationJob.ENTITY_NAME); insertJobRequest.create(generateMigrationJob(cal.getTime())); insertJobRequest.returns(Projection.excludeFieldRecursively("*")); lightblue.getLightblueClient().data(insertJobRequest); MonitorConfiguration cfg = new MonitorConfiguration(); cfg.setPeriods(1); NMPMonitor monitor = new NMPMonitor(cfg); monitor.runCheck(new Notifier() { @Override public void sendSuccess() { fail("Should be a failure"); } @Override public void sendFailure(String message) { //Do nothing } @Override public void sendError(String message) { fail("Should not be a error"); } }); } }