/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.systemservices.impl.eventhandler.connectemc;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.junit.Assert;
import org.junit.Test;
import com.emc.storageos.systemservices.impl.licensing.LicenseInfoExt;
public class CallHomeEventManagerTest {
private class MockCallHomeEventManager extends CallHomeEventManager {
private String lastExpirationEventDate;
private String lastHeartbeatEventDate;
private String registrationEventDate;
private String capacityExceededEventDate;
/**
* override due to call to coordinator service..
*/
public LicenseInfoExt getLicenseInfo() {
LicenseInfoExt licenseInfo = new LicenseInfoExt();
licenseInfo.setLastLicenseExpirationDateEventDate(lastExpirationEventDate);
licenseInfo.setLastRegistrationEventDate(registrationEventDate);
licenseInfo.setLastHeartbeatEventDate(lastHeartbeatEventDate);
licenseInfo.setLastCapacityExceededEventDate(capacityExceededEventDate);
return licenseInfo;
}
/**
* override due to call to coordinator service.
*/
public void setLicenseInfo(LicenseInfoExt licenseInfo) {
lastExpirationEventDate = licenseInfo.getLastLicenseExpirationDateEventDate();
lastHeartbeatEventDate = licenseInfo.getLastHeartbeatEventDate();
registrationEventDate = licenseInfo.getLastRegistrationEventDate();
capacityExceededEventDate = licenseInfo.getLastCapacityExceededEventDate();
}
}
/**
* Test case which recognizes that a heartbeat event should be sent.
*/
@Test
public void testHeartbeatEventTrue() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, CallHomeConstants.HEARTBEART_EVENT_THRESHOLD * -1);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String stringDate = sdf.format(cal.getTime());
licenseInfo.setLastHeartbeatEventDate(stringDate);
manager.setLicenseInfo(licenseInfo);
Assert.assertTrue(manager.doSendHeartBeat(licenseInfo));
}
/**
* test that a heartbeat event is sent if no heartbeat date exists in zookeeper.
*/
@Test
public void testHeartbeatEventNoHeartbeatDate() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
manager.setLicenseInfo(licenseInfo);
Assert.assertTrue(manager.doSendHeartBeat(licenseInfo));
}
/**
* test that a heartbeat event is sent if no CallInfo object returned from zookeeper.
*/
@Test
public void testHeartbeatEventNoCallInfoObject() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = null;
Assert.assertTrue(manager.doSendHeartBeat(licenseInfo));
}
/**
* Test case which recognizes that a heartbeat event should not be sent.
*/
@Test
public void testHeartbeatEventFalse() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, (CallHomeConstants.HEARTBEART_EVENT_THRESHOLD * -1) + 1);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String stringDate = sdf.format(cal.getTime());
licenseInfo.setLastHeartbeatEventDate(stringDate);
manager.setLicenseInfo(licenseInfo);
Assert.assertFalse(manager.doSendHeartBeat(licenseInfo));
}
/**
* Test case which recognizes that a license expiration event should be sent.
*/
@Test
public void testLicenseExpirationEventTrue() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, CallHomeConstants.LICENSE_EXPIRATION_EVENT_THRESHOLD * -1);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String stringDate = sdf.format(cal.getTime());
licenseInfo.setLastLicenseExpirationDateEventDate(stringDate);
manager.setLicenseInfo(licenseInfo);
Assert.assertTrue(manager.doSendLicenseExpiration(licenseInfo));
}
/**
* test that a license expiration event is sent if no heartbeat date exists in zookeeper.
*/
@Test
public void testLicenseExpirationEventNoExpirationDate() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
manager.setLicenseInfo(licenseInfo);
Assert.assertTrue(manager.doSendLicenseExpiration(licenseInfo));
}
/**
* test that a license expiration event is sent if no CallInfo object returned from zookeeper.
*/
@Test
public void testLicensExpirationEventNoCallInfoObject() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = null;
Assert.assertTrue(manager.doSendLicenseExpiration(licenseInfo));
}
/**
* Test case which recognizes that a license expiration event should not be sent.
*/
@Test
public void testLicenExpirationEventFalse() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, (CallHomeConstants.LICENSE_EXPIRATION_EVENT_THRESHOLD * -1) + 1);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String stringDate = sdf.format(cal.getTime());
licenseInfo.setLastLicenseExpirationDateEventDate(stringDate);
manager.setLicenseInfo(licenseInfo);
Assert.assertFalse(manager.doSendLicenseExpiration(licenseInfo));
}
/**
* Test case which recognizes that a registration event should be sent.
*/
@Test
public void testRegistrationEventTrue() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
manager.setLicenseInfo(licenseInfo);
Assert.assertTrue(manager.doSendRegistration(licenseInfo));
}
/**
* test that a registration event is sent if no CallInfo object returned from zookeeper.
*/
@Test
public void testRegistrationEventNoCallInfoObject() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = null;
Assert.assertTrue(manager.doSendLicenseExpiration(licenseInfo));
}
/**
* Test case which recognizes that a registration event should not be sent.
*/
@Test
public void testRegistrationEventFalse() throws Exception {
MockCallHomeEventManager manager = new MockCallHomeEventManager();
LicenseInfoExt licenseInfo = new LicenseInfoExt();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String stringDate = sdf.format(new java.util.Date());
licenseInfo.setLastRegistrationEventDate(stringDate);
manager.setLicenseInfo(licenseInfo);
Assert.assertFalse(manager.doSendRegistration(licenseInfo));
}
}