package org.societies.css.devicemgmt.RegSynchroniser.impl;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Collection;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.BundleContext;
import static org.mockito.Mockito.*;
import org.societies.css.devicemgmt.deviceregistry.CSSDevice;
import org.societies.css.devicemgmt.deviceregistry.DeviceRegistry;
import org.societies.api.internal.css.devicemgmt.ILocalDevice;
import org.societies.api.internal.css.devicemgmt.comm.DmCommManager;
import org.societies.api.internal.css.devicemgmt.model.DeviceCommonInfo;
import org.societies.api.schema.css.devicemanagment.DmEvent;
import org.societies.comm.xmpp.event.InternalEvent;
import org.societies.comm.xmpp.event.PubsubEvent;
import org.societies.comm.xmpp.event.PubsubEventFactory;
import org.societies.comm.xmpp.event.PubsubEventStream;
import org.societies.comm.xmpp.event.EventFactory;
import org.societies.comm.xmpp.event.EventStream;
import org.societies.api.comm.xmpp.interfaces.ICommManager;
import org.societies.api.css.devicemgmt.IDevice;
import org.societies.api.identity.INetworkNode;
import org.societies.api.identity.IIdentityManager;
import org.societies.api.comm.xmpp.pubsub.PubsubClient;
import org.societies.api.identity.IIdentity;
public class TestRegManager {
private String deviceFamilyIdentity1 = "Sensors";
//private String deviceMacAddress1 = "aa:bb:cc";
private String deviceName_1 = "Device1";
private String deviceType = "lightSensor";
private String deviceDescription = "this is a good device";
private String deviceConnectionType1 = "wifi";
private String deviceLocation1 = "Room1";
private String deviceProvider1 = "INTEL";
private String deviceId = "liam.societies.org/first/service";
private boolean contextSource1 = true;
private String deviceFamilyIdentity2 = "Actuators";
//private String deviceMacAddress2 = "dd:ee:ff";
private String deviceName_2 = "Device2";
private String deviceType2 = "TempSensor";
private String deviceDescription2 = "this is a fair device";
private String deviceConnectionType2 = "Zigbee";
private String deviceLocation2 = "Room2";
private String deviceProvider2 = "IBM";
private String deviceId2 = "liam.societies.org/second/service";
private boolean contextSource2 = false;
private String deviceFamilyIdentity3 = "GPS";
//private String deviceMacAddress3 = "aa:aa:aa";
private String deviceName_3 = "Device3";
private String deviceType3 = "GPSSensor";
private String deviceDescription3 = "this is a bad device";
private String deviceConnectionType3 = "Bluetooth";
private String deviceLocation3 = "Room3";
private String deviceProvider3 = "MICROSOFT";
private String deviceId3 = "liam.societies.org/third/service";
private boolean contextSource3 = true;
private BundleContext context;
private DeviceRegistry registry;
private RegManager regmanager;
private PubsubClient pubSubManager;
private DeviceCommonInfo device_1;
private DeviceCommonInfo device_2;
private DeviceCommonInfo device_3;
private String CSSNodeID = "liam@societies.org";
private String node = "DEVICE_REGISTERED";
private String EVENTING_NODE_NAME = "DEVICE_REGISTERED";
private String EVENTING_NODE_NAME1 = "DEVICE_DISCONNECTED";
private IIdentityManager idManager;
private DmEvent dmEventMock;
private DmEvent dmEvent1Mock;
private ICommManager commManagerMock;
private IIdentityManager identityManagerMock;
private INetworkNode iNetworkNodeMock;
private PubsubClient pubSubManagerMock;
private DmCommManager dmCommManagerMock;
@Before
public void setUp() throws Exception {
//bundleContextMock = mock(BundleContext.class);
commManagerMock = mock(ICommManager.class);
//registry.setCommManager(dmCommManagerMock);
identityManagerMock = mock(IIdentityManager.class);
context = mock(BundleContext.class);
pubSubManagerMock = mock(PubsubClient.class);
dmEventMock = mock(DmEvent.class);
dmEvent1Mock = mock(DmEvent.class);
regmanager = new RegManager();
regmanager.setBundleContext(context);
dmEventMock.setConnectionType(deviceConnectionType1);
dmEventMock.setContextSource(true);
dmEventMock.setDescription(deviceDescription);
dmEventMock.setDeviceId(deviceId);
dmEventMock.setLocation(deviceLocation1);
dmEventMock.setName(deviceName_1);
dmEventMock.setProvider(deviceProvider1);
dmEventMock.setType(deviceType);
dmEvent1Mock.setConnectionType(deviceConnectionType2);
dmEvent1Mock.setContextSource(true);
dmEvent1Mock.setDescription(deviceDescription2);
dmEvent1Mock.setDeviceId(deviceId2);
dmEvent1Mock.setLocation(deviceLocation2);
dmEvent1Mock.setName(deviceName_2);
dmEvent1Mock.setProvider(deviceProvider2);
dmEvent1Mock.setType(deviceType2);
device_1 = new DeviceCommonInfo(deviceFamilyIdentity1, deviceName_1, deviceType, deviceDescription, deviceConnectionType1, deviceLocation1, deviceProvider1, deviceId, contextSource1);
assertTrue(null != device_1);
device_1.setDeviceID(deviceId);
device_2 = new DeviceCommonInfo(deviceFamilyIdentity2, deviceName_2, deviceType2, deviceDescription2, deviceConnectionType2, deviceLocation2, deviceProvider2, deviceId2, contextSource2);
assertTrue(null != device_2);
device_2.setDeviceID(deviceId2);
device_3 = new DeviceCommonInfo(deviceFamilyIdentity3, deviceName_3, deviceType3, deviceDescription3, deviceConnectionType3, deviceLocation3, deviceProvider3, deviceId3, contextSource3);
assertTrue(null != device_3);
device_3.setDeviceID(deviceId3);
//when(commManagerMock.getIdManager()).thenReturn(identityManagerMock);
//when(identityManagerMock.getThisNetworkNode()).thenReturn(iNetworkNodeMock);
//
//when(iNetworkNodeMock.getJid()).thenReturn("node1");
//
}
@After
public void tearDown() throws Exception {
}
@Test
public void testAddDevice() throws Exception {
boolean retValue = false;
RegManager regmanager = new RegManager(
this.context);
dmCommManagerMock = mock(DmCommManager.class);
when(commManagerMock.getIdManager()).thenReturn(identityManagerMock);
when(identityManagerMock.getThisNetworkNode()).thenReturn(iNetworkNodeMock);
//
//when(iNetworkNodeMock.getJid()).thenReturn("node1");
//
regmanager.setCommManager(commManagerMock);
DeviceRegistry registry = DeviceRegistry.getInstance();
registry.setCommManager(dmCommManagerMock);
assertTrue(null != registry);
registry.clearRegistry();
assertEquals(0, registry.registrySize());
try {
retValue = regmanager.addDevice(device_1, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.addDevice(device_2, CSSNodeID);
assertTrue(retValue);
} catch (Exception e) {
e.printStackTrace();
}
assertEquals(2, registry.registrySize());
assertEquals(2, registry.findAllDevices().size());
assertEquals(2, registry.registrySize());
assertEquals(2, registry.findAllDevices().size());
assertEquals(device_1, registry.findDevice(device_1.getDeviceID()));
assertEquals(device_2, registry.findDevice(device_2.getDeviceID()));
}
@Test
public void removeDevice() throws Exception {
boolean retValue = false;
RegManager regmanager = new RegManager(
this.context);
dmCommManagerMock = mock(DmCommManager.class);
//registry.setCommManager(dmCommManagerMock);
when(commManagerMock.getIdManager()).thenReturn(identityManagerMock);
when(identityManagerMock.getThisNetworkNode()).thenReturn(iNetworkNodeMock);
//
//when(iNetworkNodeMock.getJid()).thenReturn("node1");
//
regmanager.setCommManager(commManagerMock);
DeviceRegistry registry = DeviceRegistry.getInstance();
registry.setCommManager(dmCommManagerMock);
assertTrue(null != registry);
registry.clearRegistry();
assertEquals(0, registry.registrySize());
try {
retValue = regmanager.addDevice(device_1, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.addDevice(device_2, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.addDevice(device_3, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.removeDevice(device_2, CSSNodeID);
assertTrue(retValue);
} catch (Exception e) {
e.printStackTrace();
}
assertEquals(2, registry.registrySize());
assertEquals(2, registry.findAllDevices().size());
assertEquals(2, registry.registrySize());
assertEquals(2, registry.findAllDevices().size());
assertEquals(device_1, registry.findDevice(device_1.getDeviceID()));
assertEquals(device_3, registry.findDevice(device_3.getDeviceID()));
}
@Test
public void addmultipleDevices() throws Exception{
//fail("Tests Not yet implemented just putting in place holder");
boolean retValue = false;
//Collection<CSSDevice> devices = new Collection<CSSDevice>();
RegManager regmanager = new RegManager(
this.context);
dmCommManagerMock = mock(DmCommManager.class);
//registry.setCommManager(dmCommManagerMock);
DeviceRegistry registry = DeviceRegistry.getInstance();
registry.setCommManager(dmCommManagerMock);
assertTrue(null != registry);
registry.clearRegistry();
Collection<DeviceCommonInfo> Devices = new ArrayList<DeviceCommonInfo>();
Devices.add(device_1);
Devices.add(device_2);
Devices.add(device_3);
retValue = regmanager.addDevices(Devices, CSSNodeID);
assertTrue(retValue);
Devices = registry.findAllDevices();
assertTrue(null != Devices);
assertEquals(3, Devices.size());
}
@Test
public void removemultipleDevices() throws Exception{
//fail("Tests Not yet implemented just putting in place holder");
boolean retValue = false;
//Collection<CSSDevice> devices = new Collection<CSSDevice>();
RegManager regmanager = new RegManager(
this.context);
dmCommManagerMock = mock(DmCommManager.class);
DeviceRegistry registry = DeviceRegistry.getInstance();
registry.setCommManager(dmCommManagerMock);
assertTrue(null != registry);
registry.clearRegistry();
Collection<DeviceCommonInfo> Devices = new ArrayList<DeviceCommonInfo>();
Devices.add(device_1);
Devices.add(device_2);
//Devices.add(device_3);
retValue = regmanager.addDevice(device_1, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.addDevice(device_2, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.addDevice(device_3, CSSNodeID);
assertTrue(retValue);
assertEquals(3, registry.registrySize());
retValue = regmanager.removeDevices(Devices, CSSNodeID);
assertEquals(1, registry.registrySize());
registry.clearRegistry();
assertEquals(0, registry.registrySize());
}
@Test
public void receiveEvent() throws Exception{
boolean retValue = false;
// RegManager regmanager = new RegManager(
// this.context);
IIdentity pubsubID = null;
when(commManagerMock.getIdManager()).thenReturn(identityManagerMock);
when(identityManagerMock.getThisNetworkNode()).thenReturn(iNetworkNodeMock);
//
//when(iNetworkNodeMock.getJid()).thenReturn("XCManager.societies.local");
//
regmanager.setCommManager(commManagerMock);
regmanager.setPubSubManager(pubSubManagerMock);
DeviceRegistry registry = DeviceRegistry.getInstance();
assertTrue(null != registry);
registry.clearRegistry();
pubsubID = identityManagerMock.fromJid("XCManager.societies.local");
String published = pubSubManagerMock.publisherPublish(pubsubID, EVENTING_NODE_NAME, "Liam", dmEvent1Mock);
System.out.println("PubSubID is " +pubsubID);
System.out.println("NodeName is " +EVENTING_NODE_NAME);
System.out.println("published is " +published);
regmanager.pubsubEvent(null, EVENTING_NODE_NAME, node, dmEventMock);
System.out.println("Testing --------: testEvent ");
assertEquals(1, registry.registrySize());
regmanager.pubsubEvent(null, EVENTING_NODE_NAME1, node, dmEvent1Mock);
assertEquals(0, registry.registrySize());
}
@Test
public void clearReg() throws Exception {
boolean retValue = false;
RegManager regmanager = new RegManager(
this.context);
DeviceRegistry registry = DeviceRegistry.getInstance();
assertTrue(null != registry);
registry.clearRegistry();
assertEquals(0, registry.registrySize());
retValue = regmanager.addDevice(device_1, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.addDevice(device_2, CSSNodeID);
assertTrue(retValue);
retValue = regmanager.addDevice(device_3, CSSNodeID);
assertTrue(retValue);
assertEquals(3, registry.registrySize());
try {
retValue = regmanager.clearRegistry();
assertTrue(retValue);
} catch (Exception e) {
e.printStackTrace();
}
}
}