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_505_Util; import org.ourgrid.acceptance.util.discoveryservice.Req_507_Util; import org.ourgrid.acceptance.util.discoveryservice.Req_511_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_507_Test extends DiscoveryServiceAcceptanceTestCase{ Req_502_Util req_502_Util = new Req_502_Util(super.getComponentContext()); Req_504_Util req_504_util = new Req_504_Util(super.getComponentContext()); Req_505_Util req_505_util = new Req_505_Util(super.getComponentContext()); Req_511_Util req_511_Util = new Req_511_Util(super.getComponentContext()); Req_507_Util req_507_Util = new Req_507_Util(super.getComponentContext()); @ReqTest(test = "AT-507.1", reqs = "") @Test public void test_AT_507_1_UnknownSenderSendsHereAreDiscoveryServicesMessage() 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(); //create a remote DS TestStub dsTestStub = req_511_Util.createDiscoveryService(new ServiceID("remoteds", "servertest", "DS", DiscoveryServiceConstants.DS_OBJECT_NAME)); //join network and receive list List<ServiceID> dsList = new ArrayList<ServiceID>(); dsList.add(dsTestStub.getDeploymentID().getServiceID()); Map<DiscoveryServiceInfo, Set<String>> expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>>(); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), new HashSet<String>()); req_507_Util.hereAreDiscoveryServices(component, dsTestStub, true, dsList); req_504_util.getCompleteStatus(component, expectedLocalDSNetwork); } @Test public void test_AT_507_2_DSReceivesHereAreDiscoveryServicesMessage() 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 and add the remote DS in it DiscoveryServiceDAO dsDao = DiscoveryServiceDAOFactory.getInstance().getDiscoveryServiceDAO(); //create a remote DS TestStub dsTestStub = req_511_Util.createDiscoveryService(new ServiceID("remoteds", "servertest", "DS", DiscoveryServiceConstants.DS_OBJECT_NAME)); //join network and receive 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(), false), new HashSet<String>()); //Call getCompletStatusMessage req_504_util.getCompleteStatus(component, expectedLocalDSNetwork); req_507_Util.hereAreDiscoveryServices(component, dsTestStub, false, dsList); //Call getCompletStatusMessage req_504_util.getCompleteStatus(component, expectedLocalDSNetwork); } @ReqTest(test = "AT-507.3", reqs = "") @Test public void test_AT_507_3_DSWithJustAddressesReceivesHereAreDiscoveryServicesMessage() 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 and add the remote DS in it DiscoveryServiceDAO dsDao = DiscoveryServiceDAOFactory.getInstance().getDiscoveryServiceDAO(); //Create a remote DS List<TestStub> dsList = new ArrayList<TestStub>(); TestStub dsTestStub = req_511_Util.createDiscoveryService(new ServiceID("remoteds", "servertest", "DS", DiscoveryServiceConstants.DS_OBJECT_NAME)); dsList.add(dsTestStub); //The remote DS joins the network List<ServiceID> dsServiceIDList = new ArrayList<ServiceID>(); dsServiceIDList.add(dsTestStub.getDeploymentID().getServiceID()); //Set the remote DS and its peers in DAO String remoteDSAddress = dsTestStub.getDeploymentID().getServiceID().toString(); dsDao.addDiscoveryService(new DiscoveryServiceInfo(remoteDSAddress, false), new HashSet<String>()); Assert.assertFalse(dsDao.getDSInfo(dsTestStub.getDeploymentID().getServiceID().toString()).isUp()); req_507_Util.hereAreDiscoveryServices(component, dsTestStub, false, dsServiceIDList, 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(dsTestStub.getDeploymentID().getServiceID().toString(), false), new HashSet<String>()); //Call getCompletStatusMessage req_504_util.getCompleteStatus(component, expectedLocalDSNetwork); } }