package org.ourgrid.acceptance.discoveryservice; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; 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_506_Util; import org.ourgrid.acceptance.util.discoveryservice.Req_508_Util; import org.ourgrid.acceptance.util.discoveryservice.Req_509_Util; import org.ourgrid.discoveryservice.DiscoveryServiceComponent; import org.ourgrid.discoveryservice.DiscoveryServiceConstants; import org.ourgrid.discoveryservice.business.dao.DiscoveryServiceInfo; import org.ourgrid.peer.PeerConstants; 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_509_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_506_Util req_506_Util = new Req_506_Util(super.getComponentContext()); Req_508_Util req_508_Util = new Req_508_Util(super.getComponentContext()); Req_509_Util req_509_Util = new Req_509_Util(super.getComponentContext()); /** * Create a DS; * Start a DS with the correct public key; * Call the joinCommunity message with the following parameters: * o WorkerProvider: username = test, servername = servertest and service = REMOTE_WORKERPROVIDER; * o PeerStatusProvider: username = test, servername = servertest and service = PEER; * Call the getCompleteStatus message; * Verify if the conectedPeers list contains the peer added. * Call the getPeerStatusProviders message from a client with the following parameters: * o username = test, servername = servertest; * Verify if the result list contains the PeerStatusProvider added. * * @throws Exception */ @ReqTest(test = "AT-509.1", reqs = "") @Test public void test_AT_509_1_queryingPeerStatusAddedToTheCommunity() throws Exception { //create and start a DS DiscoveryServiceComponent component = req_502_Util.startDiscoveryService(); //create a WorkerProvider TestStub dscTestStub = req_505_Util.createDiscoveryServiceClient(new ServiceID("test", "servertest", PeerConstants.MODULE_NAME, PeerConstants.DS_CLIENT)); //Call joinCommunity List<String> dscServiceIDList = new LinkedList<String>(); dscServiceIDList.add(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); req_505_Util.getRemoteWorkerProviders(component, dscServiceIDList, dscTestStub); //Get Local DS ServiceID ObjectDeployment dsOD = component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME); ServiceID localDSServiceID = dsOD.getDeploymentID().getServiceID(); //Generate Set of peers and Map of LocalDSInfo Set <String> peersSet = new HashSet <String> (); peersSet.add(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); Map < DiscoveryServiceInfo , Set <String> > expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>> (); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), peersSet); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); //Call the getPeerStatusProviders and verifies req_509_Util.getPeerStatusProviders(component, dscServiceIDList); //Call the getPeerStatusProviders and verifies req_509_Util.getPeerStatusProviders(component, dscServiceIDList); } /** * Create a DS; * Start a DS with the correct public key; * Call the joinCommunity message with the following parameters: * o WorkerProvider: username = test, servername = servertest and service = REMOTE_WORKERPROVIDER; * o PeerStatusProvider: username = test, servername = servertest and service = PEER; * Call the joinCommunity message with the following parameters: * o WorkerProvider: username = test2, servername = servertest2 and service = REMOTE_WORKERPROVIDER; * o PeerStatusProvider: username = test2, servername = servertest2 and service = PEER; * Call the getCompleteStatus message; * Verify if the conectedPeers list contains the peer added. * Call the leaveCommunity message with a client with the following attributes: * o username = test, servername = servertest; * Call the getPeerStatusProviders message from a client with the following parameters: * o username = test2, servername = servertest2; * Verify if the result list contains the PeerStatusProvider with username = test2 * * @throws Exception */ @ReqTest(test = "AT-509.2", reqs = "") @Test public void test_AT_509_2_queryingPeerStatusAddedThenRemovedFromTheCommunity() throws Exception { //create and start a DS DiscoveryServiceComponent component = req_502_Util.startDiscoveryService(); //create a WorkerProvider TestStub dscTestStub = req_505_Util.createDiscoveryServiceClient(new ServiceID("test", "servertest", PeerConstants.MODULE_NAME, PeerConstants.DS_CLIENT)); //Call joinCommunity List<String> dscServiceIDList = new LinkedList<String>(); dscServiceIDList.add(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); req_505_Util.getRemoteWorkerProviders(component, dscServiceIDList, dscTestStub); //Get Local DS ServiceID ObjectDeployment dsOD = component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME); ServiceID localDSServiceID = dsOD.getDeploymentID().getServiceID(); //Generate Set of peer and Map of LocalDSInfo Set <String> peersSet = new HashSet <String> (); peersSet.add(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); Map < DiscoveryServiceInfo , Set <String> > expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>> (); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), peersSet); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); //create another WorkerProvider ServiceID TestStub dscTestStub2 = req_505_Util.createDiscoveryServiceClient(new ServiceID("test2", "servertest2", PeerConstants.MODULE_NAME, PeerConstants.DS_CLIENT)); //Call joinCommunity again dscServiceIDList.add(dscTestStub2.getDeploymentID().getContainerID().getUserAtServer()); req_505_Util.getRemoteWorkerProviders(component, dscServiceIDList, dscTestStub2); peersSet.add(dscTestStub2.getDeploymentID().getContainerID().getUserAtServer()); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), peersSet); //Call getCompletStatusMessage again req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); // Call leaveCommunity message with first peer req_506_Util.leaveCommunity(component, dscTestStub); //Call the getPeerStatusProviders and verifies dscServiceIDList.remove(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); req_509_Util.getPeerStatusProviders(component, dscServiceIDList); } /** * Create a DS; * Start a DS with the correct public key; * Call the joinCommunity message with the following parameters: * o WorkerProvider: username = test, servername = servertest and service = REMOTE_WORKERPROVIDER; * o PeerStatusProvider: username = test, servername = servertest and service = PEER; * Call the getCompleteStatus message; * Verify if the conectedPeers list contains the peer added. * Call the doNotifyFailure message with the deploymentID: * o username = test, servername = servertest and service = DS_CLIENT and publickey = dsClientPK; * Call the getPeerStatusProviders message from a client with the following parameters: * o username = test, servername = servertest; * Verify if the result list is empty. * * @throws Exception */ @ReqTest(test = "AT-509.3", reqs = "") @Test public void test_AT_509_3_queryingPeerStatusToFailedPeer() throws Exception { //create and start a DS DiscoveryServiceComponent component = req_502_Util.startDiscoveryService(); //create a WorkerProvider TestStub dscTestStub = req_505_Util.createDiscoveryServiceClient(new ServiceID("test", "servertest", PeerConstants.MODULE_NAME, PeerConstants.DS_CLIENT)); //Call joinCommunity List<String> dscServiceIDList = new LinkedList<String>(); dscServiceIDList.add(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); req_505_Util.getRemoteWorkerProviders(component, dscServiceIDList, dscTestStub); //Get Local DS ServiceID ObjectDeployment dsOD = component.getObject(DiscoveryServiceConstants.DS_OBJECT_NAME); ServiceID localDSServiceID = dsOD.getDeploymentID().getServiceID(); //Generate Set of peer and Map of LocalDSInfo Set <String> peersSet = new HashSet <String> (); peersSet.add(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); Map < DiscoveryServiceInfo , Set <String> > expectedLocalDSNetwork = new TreeMap<DiscoveryServiceInfo, Set<String>> (); expectedLocalDSNetwork.put(new DiscoveryServiceInfo(localDSServiceID.toString(), true), peersSet); //Call getCompletStatusMessage req_504_Util.getCompleteStatus(component, expectedLocalDSNetwork); //Call the doNotifyFailure req_508_Util.doNotifyFailure(component, dscTestStub); dscServiceIDList.remove(dscTestStub.getDeploymentID().getContainerID().getUserAtServer()); //Call the getPeerStatusProviders and verifies req_509_Util.getPeerStatusProviders(component, dscServiceIDList); } }