package org.opennaas.extensions.router.junos.actionssets.actions.test.gretunnel; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import junit.framework.Assert; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.BeforeClass; import org.junit.Test; import org.opennaas.core.protocols.sessionmanager.ProtocolSessionManager; import org.opennaas.core.resources.action.ActionException; import org.opennaas.core.resources.action.ActionResponse; import org.opennaas.extensions.router.junos.actionssets.ActionConstants; import org.opennaas.extensions.router.junos.actionssets.actions.gretunnel.GetTunnelConfigurationAction; import org.opennaas.extensions.router.junos.actionssets.actions.test.ActionTestHelper; import org.opennaas.extensions.router.model.ComputerSystem; import org.opennaas.extensions.router.model.EthernetPort; import org.opennaas.extensions.router.model.GRETunnelConfiguration; import org.opennaas.extensions.router.model.GRETunnelEndpoint; import org.opennaas.extensions.router.model.GRETunnelService; import org.opennaas.extensions.router.model.IPProtocolEndpoint; import org.opennaas.extensions.router.model.LogicalDevice; import org.opennaas.extensions.router.model.LogicalPort; import org.opennaas.extensions.router.model.LogicalTunnelPort; import org.opennaas.extensions.router.model.NextHopRoute; import org.opennaas.extensions.router.model.ProtocolEndpoint; import org.opennaas.extensions.router.model.Service; import org.opennaas.extensions.router.model.VLANEndpoint; public class GetGRETunnelActionTest { private static GetTunnelConfigurationAction action; private static Log log = LogFactory.getLog(GetGRETunnelActionTest.class); static ActionTestHelper helper; static ProtocolSessionManager protocolsessionmanager; @BeforeClass public static void init() { action = new GetTunnelConfigurationAction(); action.setModelToUpdate(new ComputerSystem()); helper = new ActionTestHelper(); action.setParams(helper.newParamsGRETunnelService()); protocolsessionmanager = helper.getProtocolSessionManager(); } @Test public void TestActionID() { Assert.assertEquals("Wrong ActionID", ActionConstants.GETTUNNELCONFIG, action.getActionID()); } @Test public void paramsTest() { Object params = action.getParams(); Assert.assertNotNull("Params can't be null", params); Assert.assertTrue("Params must be GRETunnelService.", params instanceof GRETunnelService); } @Test public void templateTest() { // this action always have this template as a default Assert.assertEquals("Not accepted param", "/VM_files/getconfiguration.vm", action.getTemplate()); } private void printTest(org.opennaas.extensions.router.model.System routerModel) { List<LogicalDevice> ld = routerModel.getLogicalDevices(); log.info("Logical devices: " + ld.size()); for (LogicalDevice device : ld) { LogicalPort lp = (LogicalPort) device; if (device instanceof LogicalTunnelPort) { LogicalTunnelPort lt = (LogicalTunnelPort) device; log.info("LogicalTunnelPort: " + lt.getName()); log.info("Peer unit " + lt.getPeer_unit()); log.info("Unit " + lt.getPortNumber()); } else if (device instanceof EthernetPort) { EthernetPort ep = (EthernetPort) device; log.info("EthernetPort: " + ep.getName()); log.info("Unit " + ep.getPortNumber()); } else { log.info("No such class considered "); } for (ProtocolEndpoint p : lp.getProtocolEndpoint()) { if (p instanceof IPProtocolEndpoint) { IPProtocolEndpoint ip = (IPProtocolEndpoint) p; log.info(ip.getIPv4Address()); log.info(ip.getSubnetMask()); } else { VLANEndpoint vlan = (VLANEndpoint) p; log.info("VLAN " + vlan.getVlanID()); } } } log.info("Found " + routerModel.getChildren().size() + " logical resources."); for (Object systemElement : routerModel.getChildren()) { log.info(systemElement); if (systemElement instanceof ComputerSystem) { ComputerSystem logicalrouter = (ComputerSystem) systemElement; // check that the element is a Logical Router log.info(logicalrouter.getName()); } } for (Service service : routerModel.getHostedService()) { if (service instanceof GRETunnelService) { log.info(" - GRE Tunnel"); GRETunnelService greService = (GRETunnelService) service; log.info("Interface :" + greService.getName()); GRETunnelConfiguration greConf = greService.getGRETunnelConfiguration(); log.info("Source : " + greConf.getSourceAddress()); log.info("Destination : " + greConf.getDestinationAddress()); for (ProtocolEndpoint pE : greService.getProtocolEndpoint()) { GRETunnelEndpoint gE = (GRETunnelEndpoint) pE; if (gE.getIPv4Address() == null) log.info("ipv6 : " + gE.getIPv6Address()); else log.info("ipv4 : " + gE.getIPv4Address()); for (NextHopRoute nextHop : gE.getNextHopRoutes()) { log.info("next-hop route for: " + nextHop.getDestinationAddress()); } } } } } @Test public void testExecute() throws ActionException { ActionResponse response = action.execute(protocolsessionmanager); org.opennaas.extensions.router.model.System routerModel = (org.opennaas.extensions.router.model.System) action.getModelToUpdate(); Assert.assertNotNull(routerModel); printTest(routerModel); } // @Test // public void testExecuteInLogicalRouter() { // try { // ActionResponse response = action.execute(protocolsessionmanager); // } catch (ActionException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // Assert.fail(); // } // org.opennaas.extensions.router.model.System routerModel = (org.opennaas.extensions.router.model.System) action.getModelToUpdate(); // Assert.assertNotNull(routerModel); // printTest(routerModel); // } /** * Simple parser. It was used for proves with xml files * * @param stream * @return */ public String readStringFromFile(String pathFile) throws Exception { String answer = null; // InputStream inputFile = // ClassLoader.getSystemResourceAsStream(pathFile); InputStream inputFile = getClass().getResourceAsStream(pathFile); InputStreamReader streamReader = new InputStreamReader(inputFile); StringBuffer fileData = new StringBuffer(1000); BufferedReader reader = new BufferedReader(streamReader); char[] buf = new char[1024]; int numRead = 0; while ((numRead = reader.read(buf)) != -1) { String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; } reader.close(); answer = fileData.toString(); return answer; } }