/** * Copyright (C) 2011 Adriano Monteiro Marques * * Author: Zubair Nabi <zn.zubairnabi@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ package org.umit.icm.mobile.test.p2p; import java.util.ArrayList; import java.util.List; import junit.framework.Assert; import org.umit.icm.mobile.p2p.P2PActions; import org.umit.icm.mobile.process.Globals; import org.umit.icm.mobile.proto.MessageProtos.*; import android.test.AndroidTestCase; public class P2PActionsTests extends AndroidTestCase { public void testGetPeerList() throws Throwable { RSAKey rsaKey1 = RSAKey.newBuilder() .setExp("exp1") .setMod("mod1") .build(); AgentData agent1 = AgentData.newBuilder() .setAgentIP("IP1") .setAgentID("1") .setAgentPort(11) .setPeerStatus("On") .setPublicKey(rsaKey1) .setToken("token1") .build(); RSAKey rsaKey2 = RSAKey.newBuilder() .setExp("exp2") .setMod("mod2") .build(); AgentData agent2 = AgentData.newBuilder() .setAgentIP("IP2") .setAgentID("2") .setAgentPort(12) .setPeerStatus("On") .setPublicKey(rsaKey2) .setToken("token2") .build(); P2PGetPeerListResponse getPeerListResponse = P2PGetPeerListResponse.newBuilder() .addPeers(agent1) .addPeers(agent2) .build(); P2PActions.getPeerListAction(getPeerListResponse); Assert.assertTrue(compareAgentData(Globals.runtimesList.getPeersList().get(0), agent1)); Assert.assertTrue(compareAgentData(Globals.runtimesList.getPeersList().get(1), agent2)); } private boolean compareAgentData(AgentData agent1, AgentData agent2) { if(agent1.getAgentIP().equals(agent2.getAgentIP()) && agent1.getAgentPort() == agent2.getAgentPort() && agent1.getPeerStatus().equals(agent2.getPeerStatus()) && agent1.getPublicKey().getExp().equals(agent2.getPublicKey().getExp()) && agent1.getPublicKey().getMod().equals(agent2.getPublicKey().getMod()) && agent1.getAgentID() == agent2.getAgentID() && agent1.getToken().equals(agent2.getToken())) return true; return false; } public void testGetSuperPeerList() throws Throwable { RSAKey rsaKey3 = RSAKey.newBuilder() .setExp("exp3") .setMod("mod3") .build(); AgentData agent1 = AgentData.newBuilder() .setAgentIP("IP3") .setAgentID("3") .setAgentPort(13) .setPeerStatus("On") .setPublicKey(rsaKey3) .setToken("token3") .build(); RSAKey rsaKey4 = RSAKey.newBuilder() .setExp("exp4") .setMod("mod4") .build(); AgentData agent2 = AgentData.newBuilder() .setAgentIP("IP4") .setAgentID("4") .setAgentPort(14) .setPeerStatus("On") .setPublicKey(rsaKey4) .setToken("token4") .build(); P2PGetSuperPeerListResponse getSuperPeerListResponse = P2PGetSuperPeerListResponse.newBuilder() .addPeers(agent1) .addPeers(agent2) .build(); P2PActions.getSuperPeerListAction(getSuperPeerListResponse); Assert.assertTrue(compareAgentData(Globals.runtimesList.getSuperPeersList().get(0), agent1)); Assert.assertTrue(compareAgentData(Globals.runtimesList.getSuperPeersList().get(1), agent2)); } public void testCheckNewTests() throws Throwable { ResponseHeader responseHeader = ResponseHeader.newBuilder() .setCurrentTestVersionNo(26) .setCurrentVersionNo(26) .build(); Website website = Website.newBuilder() .setUrl("url1") .build(); Test test1 = Test.newBuilder() .setExecuteAtTimeUTC(11) .setWebsite(website) .setTestID("31") .setTestType(1) .build(); Service service = Service.newBuilder() .setIp("ip") .setName("name") .setPort(1000) .build(); Test test2 = Test.newBuilder() .setExecuteAtTimeUTC(12) .setTestID("32") .setService(service) .setTestType(2) .build(); NewTestsResponse newTestsResponse = NewTestsResponse.newBuilder() .setHeader(responseHeader) .setTestVersionNo(23) .addTests(test1) .addTests(test2) .build(); P2PActions.receiveTaskListAction(newTestsResponse); Assert.assertTrue(Globals.websitesList.get(Globals.websitesList.size()-1) .equals( new org.umit.icm.mobile.connectivity.Website(test1.getWebsite().getUrl(), "false", "true", test1.getTestID(), test1.getExecuteAtTimeUTC()))); int ports = test2.getService().getPort(); Assert.assertTrue(Globals.servicesList.get(Globals.servicesList.size()-1) .equals( new org.umit.icm.mobile.connectivity.Service(test2.getService().getName(), ports, test2.getService().getIp(), "open", "true", test2.getTestID(), test2.getExecuteAtTimeUTC()))); } public void testGetEvents() throws Throwable { ResponseHeader responseHeader = ResponseHeader.newBuilder() .setCurrentTestVersionNo(27) .setCurrentVersionNo(27) .build(); Location location = Location.newBuilder() .setLatitude(10.1) .setLongitude(10.1) .build(); Event event1 = Event.newBuilder() .setEventType("CENSOR") .addLocations(location) .setSinceTimeUTC(100) .setTimeUTC(1000) .setTestType("SERVICE") .build(); Event event2 = Event.newBuilder() .setEventType("OFF_LINE") .addLocations(location) .setSinceTimeUTC(101) .setTimeUTC(1001) .setTestType("WEB") .build(); GetEventsResponse getEventsResponse = GetEventsResponse.newBuilder() .setHeader(responseHeader) .addEvents(event1) .addEvents(event2) .build(); P2PActions.receiveEventsAction(getEventsResponse); Assert.assertEquals(Globals.versionManager.getAgentVersion(), 27); Assert.assertEquals(Globals.versionManager.getTestsVersion(), 27); Assert.assertTrue(compareEvent(Globals.runtimesList.getEventsList().get(0), event1)); Assert.assertTrue(compareEvent(Globals.runtimesList.getEventsList().get(1), event2)); } private boolean compareEvent(Event event1, Event event2) { if(event1.getEventType().equals(event2.getEventType()) && event1.getLocationsList().equals(event2.getLocationsList()) && event1.getSinceTimeUTC() == event2.getSinceTimeUTC() && event1.getTimeUTC() == event2.getTimeUTC() && event1.getTestType().equals(event2.getTestType())) return true; return false; } }