package org.ourgrid.acceptance.discoveryservice; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; import org.junit.Assert; import org.junit.Test; import org.ourgrid.acceptance.util.discoveryservice.Req_502_Util; import org.ourgrid.acceptance.util.discoveryservice.Req_504_Util; import org.ourgrid.acceptance.util.discoveryservice.Req_511_Util; import org.ourgrid.acceptance.util.discoveryservice.Req_515_Util; import org.ourgrid.discoveryservice.DiscoveryServiceComponent; import org.ourgrid.discoveryservice.DiscoveryServiceConstants; import org.ourgrid.discoveryservice.business.dao.DiscoveryServiceDAO; import org.ourgrid.discoveryservice.business.dao.DiscoveryServiceDAOFactory; import org.ourgrid.discoveryservice.business.dao.DiscoveryServiceInfo; import org.ourgrid.reqtrace.ReqTest; import br.edu.ufcg.lsd.commune.container.ObjectDeployment; import br.edu.ufcg.lsd.commune.identification.ServiceID; import br.edu.ufcg.lsd.commune.testinfra.util.TestStub; public class Req_515_Test extends DiscoveryServiceAcceptanceTestCase { private Req_502_Util req_502_Util = new Req_502_Util(super.getComponentContext()); private Req_504_Util req_504_Util = new Req_504_Util(super.getComponentContext()); private Req_511_Util req_511_Util = new Req_511_Util(super.getComponentContext()); private Req_515_Util req_515_Util = new Req_515_Util(super.getComponentContext()); /** * */ @ReqTest(test = "AT-515.1", reqs = "") @Test public void test_AT_515_1_FailureNotificationFromADSOutOfNetwork() throws Exception{ // Start the Discovery Service DiscoveryServiceComponent component = req_502_Util.startDiscoveryService(); //Create a remote DS TestStub dsTestStub = req_511_Util.createDiscoveryService(new ServiceID("test1", "servertest", "DS", DiscoveryServiceConstants.DS_OBJECT_NAME)); // Notification Failure for DS req_515_Util.dsNotMemberOfNetworkIsDown(component, dsTestStub, false); //Get Local DS ServiceID ObjectDeployment dsOD = component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME); String localDSServiceID = dsOD.getDeploymentID().getServiceID().toString(); Map<DiscoveryServiceInfo, Set<String>> expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>>(); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), new HashSet<String>()); // Call the getCompleteStatus message req_504_Util.getEmptyCompleteStatusWithStartedDS(component, expectedLocalDSNetwork); } /** * */ @ReqTest(test = "AT-515.2", reqs = "") @Test public void test_AT_515_2_FailureNotificationFromAnAlreadyFailedDS() throws Exception{ //Create and start a DS DiscoveryServiceComponent component = req_502_Util.startDiscoveryService(); //Get Local DS ServiceID ObjectDeployment dsOD = component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME); ServiceID localDSServiceID = dsOD.getDeploymentID().getServiceID(); //Get the instance of DAO DiscoveryServiceDAO dsDao = DiscoveryServiceDAOFactory.getInstance().getDiscoveryServiceDAO(); String remoteDSAddress = "test1@servertest/DS/DS_OBJECT_NAME"; Set<String> peers = new HashSet<String>(); dsDao.addDiscoveryService(new DiscoveryServiceInfo(remoteDSAddress, false), peers); // Notification Failure for DS req_515_Util.dsNotMemberOfNetworkIsDown(component, ServiceID.parse(remoteDSAddress), true); //Setting up the expected map for the status of the local DS Map < DiscoveryServiceInfo , Set <String> > expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>> (); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), new HashSet<String>()); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(remoteDSAddress, false), new HashSet<String>()); Assert.assertFalse(dsDao.getDSInfo(remoteDSAddress).isUp()); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); } @ReqTest(test = "AT-515.3", reqs = "") @Test public void test_AT_515_3_FailureNotificationFromADSLeavingLocalDSWithDSStubs() throws Exception{ //Create and start a DS DiscoveryServiceComponent component = req_502_Util.startDiscoveryService(); //Get Local DS ServiceID ObjectDeployment dsOD = component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME); ServiceID localDSServiceID = dsOD.getDeploymentID().getServiceID(); //Get the instance of DAO DiscoveryServiceDAO dsDao = DiscoveryServiceDAOFactory.getInstance().getDiscoveryServiceDAO(); //Create remote DS 1 TestStub dsTestStub = req_511_Util.createDiscoveryService(new ServiceID("test1", "servertest", "DS", DiscoveryServiceConstants.DS_OBJECT_NAME)); //Create remote DS 2 TestStub dsTestStub2 = req_511_Util.createDiscoveryService(new ServiceID("test2", "servertest", "DS", DiscoveryServiceConstants.DS_OBJECT_NAME)); // Remote DS 1 Joins network and receives list List<ServiceID> dsList = new ArrayList<ServiceID>(); dsList.add(dsTestStub.getDeploymentID().getServiceID()); req_511_Util.getDiscoveryServices(component, dsList, dsTestStub); Assert.assertTrue(dsDao.getDSInfo(dsTestStub.getDeploymentID().getServiceID().toString()).isUp()); // Remote DS 2 Joins network and receives list dsList.add(dsTestStub2.getDeploymentID().getServiceID()); req_511_Util.getDiscoveryServices(component, dsList, dsTestStub2); Assert.assertTrue(dsDao.getDSInfo(dsTestStub2.getDeploymentID().getServiceID().toString()).isUp()); //Setting up the expected map for the status of the local DS Map < DiscoveryServiceInfo , Set <String> > expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>> (); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), new HashSet<String>()); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(dsTestStub.getDeploymentID().getServiceID().toString(), true), new HashSet<String>()); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(dsTestStub2.getDeploymentID().getServiceID().toString(), true), new HashSet<String>()); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); // Notification Failure for DS req_515_Util.dsIsDown(component, dsTestStub); Assert.assertFalse(dsDao.getDSInfo(dsTestStub.getDeploymentID().getServiceID().toString()).isUp()); Assert.assertTrue(dsDao.getDSInfo(dsTestStub2.getDeploymentID().getServiceID().toString()).isUp()); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(dsTestStub.getDeploymentID().getServiceID().toString(), false), new HashSet<String>()); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); } /** * */ @ReqTest(test = "AT-515.4", reqs = "") @Test public void test_AT_515_4_FailureNotificationFromADSLeavingLocalDSWithDSAddresses() throws Exception{ //Create and start a DS DiscoveryServiceComponent component = req_502_Util.startDiscoveryService(); //Get Local DS ServiceID ObjectDeployment dsOD = component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME); ServiceID localDSServiceID = dsOD.getDeploymentID().getServiceID(); //Get the instance of DAO DiscoveryServiceDAO dsDao = DiscoveryServiceDAOFactory.getInstance().getDiscoveryServiceDAO(); //Create a remote DS TestStub dsTestStub = req_511_Util.createDiscoveryService(new ServiceID("test1", "servertest", "DS", DiscoveryServiceConstants.DS_OBJECT_NAME)); // Remote DS 1 Joins network and receives list List<ServiceID> dsList = new ArrayList<ServiceID>(); dsList.add(dsTestStub.getDeploymentID().getServiceID()); req_511_Util.getDiscoveryServices(component, dsList, dsTestStub); Assert.assertTrue(dsDao.getDSInfo(dsTestStub.getDeploymentID().getServiceID().toString()).isUp()); //Setting up the expected map for the status of the local DS Map < DiscoveryServiceInfo , Set <String> > expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>> (); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), new HashSet<String>()); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(dsTestStub.getDeploymentID().getServiceID().toString(), true), new HashSet<String>()); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); // Notification Failure for DS req_515_Util.dsIsDown(component, dsTestStub); Assert.assertFalse(dsDao.getDSInfo(dsTestStub.getDeploymentID().getServiceID().toString()).isUp()); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(dsTestStub.getDeploymentID().getServiceID().toString(), false), new HashSet<String>()); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); } }