package org.opennaas.extensions.network.repository.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.List; import junit.framework.Assert; import org.junit.Test; import org.opennaas.core.resources.ResourceException; import org.opennaas.core.resources.descriptor.network.NetworkTopology; import org.opennaas.extensions.network.mock.MockNetworkModel; import org.opennaas.extensions.network.model.NetworkModel; import org.opennaas.extensions.network.model.NetworkModelHelper; import org.opennaas.extensions.network.model.topology.Interface; import org.opennaas.extensions.network.model.topology.NetworkElement; import org.opennaas.extensions.network.repository.NetworkMapperDescriptorToModel; import org.opennaas.extensions.network.repository.NetworkMapperModelToDescriptor; public class NetworkDescriptorToMapperModelTest { @Test public void testModelToDescriptorWithMockModel() { NetworkTopology networkTopology = NetworkMapperModelToDescriptor.modelToDescriptor(MockNetworkModel.newNetworkModel()); assertNotNull(networkTopology.getNetworkDomains()); assertEquals(networkTopology.getNetworkDomains().size(), 1); /* network description */ assertNotNull(networkTopology.getDevices()); assertEquals(networkTopology.getDevices().get(0).getName(), "router:R-AS2-1"); assertEquals(networkTopology.getDevices().get(1).getName(), "router:R-AS2-2"); assertEquals(networkTopology.getDevices().get(2).getName(), "router:R-AS2-3"); // notice that only references to topology elements start with #, names does not assertNotNull(networkTopology.getDevices()); assertEquals(networkTopology.getDevices().get(0).getName(), "router:R-AS2-1"); assertNotNull(networkTopology.getDevices().get(0).getHasInterfaces()); assertEquals(networkTopology.getDevices().get(0).getHasInterfaces().size(), 3); assertEquals(networkTopology.getDevices().get(0).getHasInterfaces().get(0).getResource(), "#router:R-AS2-1:lt-1/2/0.51"); assertEquals(networkTopology.getDevices().get(0).getHasInterfaces().get(1).getResource(), "#router:R-AS2-1:lt-1/2/0.100"); assertEquals(networkTopology.getDevices().get(0).getHasInterfaces().get(2).getResource(), "#router:R-AS2-1:lo0.1"); assertEquals(networkTopology.getDevices().get(1).getName(), "router:R-AS2-2"); assertNotNull(networkTopology.getDevices().get(1).getHasInterfaces()); assertEquals(networkTopology.getDevices().get(1).getHasInterfaces().size(), 3); assertEquals(networkTopology.getDevices().get(1).getHasInterfaces().get(0).getResource(), "#router:R-AS2-2:lt-1/2/0.102"); assertEquals(networkTopology.getDevices().get(1).getHasInterfaces().get(1).getResource(), "#router:R-AS2-2:lt-1/2/0.101"); assertEquals(networkTopology.getDevices().get(1).getHasInterfaces().get(2).getResource(), "#router:R-AS2-2:lo0.3"); assertEquals(networkTopology.getDevices().get(2).getName(), "router:R-AS2-3"); assertNotNull(networkTopology.getDevices().get(2).getHasInterfaces()); assertEquals(networkTopology.getDevices().get(2).getHasInterfaces().size(), 2); assertEquals(networkTopology.getDevices().get(2).getHasInterfaces().get(0).getResource(), "#router:R-AS2-3:lt-1/2/0.103"); assertEquals(networkTopology.getDevices().get(2).getHasInterfaces().get(1).getResource(), "#router:R-AS2-3:lo0.4"); assertNotNull(networkTopology.getInterfaces()); assertEquals(networkTopology.getInterfaces().size(), 9); assertEquals(networkTopology.getInterfaces().get(0).getName(), "router:R-AS2-1:lt-1/2/0.51"); assertEquals(networkTopology.getInterfaces().get(0).getLinkTo().getName(), "#router:R1:lt-1/2/0.50"); assertEquals(networkTopology.getInterfaces().get(1).getName(), "router:R-AS2-1:lt-1/2/0.100"); assertEquals(networkTopology.getInterfaces().get(1).getLinkTo().getName(), "#router:R-AS2-2:lt-1/2/0.101"); assertEquals(networkTopology.getInterfaces().get(2).getName(), "router:R-AS2-1:lo0.1"); assertEquals(networkTopology.getInterfaces().get(3).getName(), "router:R-AS2-2:lt-1/2/0.102"); assertEquals(networkTopology.getInterfaces().get(3).getLinkTo().getName(), "#router:R-AS2-3:lt-1/2/0.103"); assertEquals(networkTopology.getInterfaces().get(4).getName(), "router:R-AS2-2:lt-1/2/0.101"); assertEquals(networkTopology.getInterfaces().get(4).getLinkTo().getName(), "#router:R-AS2-1:lt-1/2/0.100"); assertEquals(networkTopology.getInterfaces().get(5).getName(), "router:R-AS2-2:lo0.3"); assertEquals(networkTopology.getInterfaces().get(6).getName(), "router:R-AS2-3:lt-1/2/0.103"); assertEquals(networkTopology.getInterfaces().get(6).getLinkTo().getName(), "#router:R-AS2-2:lt-1/2/0.102"); assertEquals(networkTopology.getInterfaces().get(7).getName(), "router:R-AS2-3:lo0.4"); } @Test public void testModelToDescriptorAndViceversa() { try { NetworkModel model1 = MockNetworkModel.newNetworkModel(); NetworkTopology topology1 = NetworkMapperModelToDescriptor.modelToDescriptor(model1); NetworkModel model2 = NetworkMapperDescriptorToModel.descriptorToModel(topology1); NetworkTopology topology2 = NetworkMapperModelToDescriptor.modelToDescriptor(model2); checkModels(model1, model2); Assert.assertEquals(topology1, topology2); } catch (ResourceException e) { Assert.fail("Error mapping descriptor to model: " + e.getMessage()); } } private void checkModels(NetworkModel model1, NetworkModel model2) { Assert.assertEquals(model1.getNetworkElements().size(), model2.getNetworkElements().size()); for (NetworkElement elem1 : model1.getNetworkElements()) { List<NetworkElement> tmp_elems = NetworkModelHelper.getNetworkElementsByClassName(elem1.getClass(), model2.getNetworkElements()); Assert.assertFalse(tmp_elems.isEmpty()); if (elem1.getName() != null) { // should be elements without name?? Links has no name, by now. int elemIndexInModel2 = NetworkModelHelper.getNetworkElementByName(elem1.getName(), tmp_elems); Assert.assertFalse("Elem " + elem1.getName() + " of model1 is not in model2.", elemIndexInModel2 == -1); } } for (Interface iface1 : NetworkModelHelper.getInterfaces(model1.getNetworkElements())) { Interface iface2 = NetworkModelHelper.getInterfaceByName(model2.getNetworkElements(), iface1.getName()); Assert.assertNotNull("Interface " + iface1.getName() + " is not in model2", iface2); if (iface1.getLinkTo() != null) { Assert.assertNotNull(iface2.getLinkTo()); Assert.assertEquals(iface1.getLinkTo().getName(), iface2.getLinkTo().getName()); } if (iface1.getSwitchedTo() != null) { Assert.assertNotNull(iface2.getSwitchedTo()); Assert.assertEquals(iface1.getSwitchedTo().getName(), iface2.getSwitchedTo().getName()); } } } }