package org.opennaas.extensions.roadm.repository; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import org.opennaas.core.resources.IResource; import org.opennaas.core.resources.ResourceException; import org.opennaas.core.resources.descriptor.CapabilityDescriptor; import org.opennaas.core.resources.descriptor.Information; import org.opennaas.core.resources.descriptor.ResourceDescriptor; import org.opennaas.core.resources.descriptor.ResourceDescriptorConstants; import org.opennaas.core.resources.mock.MockCapabilityFactory; import org.opennaas.core.resources.mock.MockDescriptorRepository; import org.opennaas.core.resources.mock.MockResource; public class ROADMRepositoryTest { ROADMRepository roadmRepository; String resourceType = "roadm"; @Test public void testCapabilityFactories() { roadmRepository = new ROADMRepository("ROADMrepository"); roadmRepository.setResourceDescriptorRepository(new MockDescriptorRepository()); roadmRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory1")); roadmRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory2")); Assert.assertTrue(roadmRepository.getCapabilityFactories().size() == 2); Assert.assertNotNull(roadmRepository.getCapabilityFactories().get("factory1")); Assert.assertNotNull(roadmRepository.getCapabilityFactories().get("factory2")); } @Test public void testCreateRemoveResources() { roadmRepository = new ROADMRepository(resourceType); roadmRepository.setResourceDescriptorRepository(new MockDescriptorRepository()); roadmRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory1")); roadmRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory2")); try { /* type of resources */ ResourceDescriptor descriptor = newResourceDescriptor(resourceType, "router1"); IResource resource = roadmRepository.createResource(descriptor); String id = resource.getResourceIdentifier().getId(); Assert.assertNotNull(id); Assert.assertTrue(resource.getResourceDescriptor().equals(descriptor)); Assert.assertTrue(resource.getResourceIdentifier().getType().equals(resourceType)); boolean thrown = false; roadmRepository.removeResource(id); try { roadmRepository.getResource(id); } catch (Exception e) { thrown = true; } Assert.assertTrue(thrown); } catch (ResourceException e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } @Test public void testModifyResources() { roadmRepository = new ROADMRepository(resourceType); roadmRepository.setResourceDescriptorRepository(new MockDescriptorRepository()); roadmRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory1")); roadmRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory2")); try { /* type of resources */ IResource resource = roadmRepository.createResource(newResourceDescriptor(resourceType, "router1")); String id = resource.getResourceIdentifier().getId(); Assert.assertTrue(resource.getResourceDescriptor().getCapabilityDescriptors().size() == 2); Assert.assertTrue(resource.getResourceIdentifier().getType().equals(resourceType)); resource = roadmRepository.modifyResource(id, oldResourceDescriptor(id, resourceType, "router1")); IResource newResource = roadmRepository.getResource(resource.getResourceIdentifier().getId()); Assert.assertTrue(newResource.getResourceDescriptor().getCapabilityDescriptors().size() == 1); Assert.assertTrue(newResource.getResourceIdentifier().getType().equals(resourceType)); } catch (ResourceException e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } private ResourceDescriptor newResourceDescriptor(String type, String name) { ResourceDescriptor resourceDescriptor = new ResourceDescriptor(); Map<String, String> properties = new HashMap<String, String>(); /* FIXME PUT PROTOCOL_URI IN RESOURCE DESCRIPTOR CONSTANTS */ properties.put(ResourceDescriptorConstants.PROTOCOL_URI, "user:pass@host.net:2212"); List<CapabilityDescriptor> capabilityDescriptors = new ArrayList<CapabilityDescriptor>(); /* factory1 descriptor */ capabilityDescriptors.add(MockResource.createCapabilityDescriptor("factory1")); /* factory2 descriptor */ capabilityDescriptors.add(MockResource.createCapabilityDescriptor("factory2")); resourceDescriptor.setProperties(properties); resourceDescriptor.setCapabilityDescriptors(capabilityDescriptors); resourceDescriptor.setId("JunosTest"); /* information. It is only necessary to add type */ Information information = new Information(); information.setType(type); information.setName(name); resourceDescriptor.setInformation(information); return resourceDescriptor; } private ResourceDescriptor oldResourceDescriptor(String resourceId, String type, String name) { ResourceDescriptor resourceDescriptor = new ResourceDescriptor(); Map<String, String> properties = new HashMap<String, String>(); /* FIXME PUT PROTOCOL_URI IN RESOURCE DESCRIPTOR CONSTANTS */ properties.put(ResourceDescriptorConstants.PROTOCOL_URI, "user:pass@host.net:2212"); List<CapabilityDescriptor> capabilityDescriptors = new ArrayList<CapabilityDescriptor>(); /* factory1 descriptor */ capabilityDescriptors.add(MockResource.createCapabilityDescriptor("factory1")); resourceDescriptor.setProperties(properties); resourceDescriptor.setCapabilityDescriptors(capabilityDescriptors); resourceDescriptor.setId(resourceId); /* information. It is only necessary to add type */ Information information = new Information(); information.setType(type); information.setName(name); resourceDescriptor.setInformation(information); return resourceDescriptor; } }