package org.opennaas.extensions.router.tests; 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; import org.opennaas.extensions.router.repository.MantychoreRepository; public class MantychoreRepositoryTest { MantychoreRepository mantychoreRepository; String resourceType = "router"; @Test public void testCapabilityFactories() { mantychoreRepository = new MantychoreRepository("mantychorerepository"); mantychoreRepository.setResourceDescriptorRepository(new MockDescriptorRepository()); mantychoreRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory1")); mantychoreRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory2")); Assert.assertTrue(mantychoreRepository.getCapabilityFactories().size() == 2); Assert.assertNotNull(mantychoreRepository.getCapabilityFactories().get("factory1")); Assert.assertNotNull(mantychoreRepository.getCapabilityFactories().get("factory2")); } @Test public void testCreateRemoveResources() { mantychoreRepository = new MantychoreRepository("router"); mantychoreRepository.setResourceDescriptorRepository(new MockDescriptorRepository()); mantychoreRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory1")); mantychoreRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory2")); try { /* type of resources */ ResourceDescriptor descriptor = newResourceDescriptor("router", "router1"); IResource resource = mantychoreRepository.createResource(descriptor); String id = resource.getResourceIdentifier().getId(); Assert.assertNotNull(id); Assert.assertTrue(resource.getResourceDescriptor().equals(descriptor)); Assert.assertTrue(resource.getResourceIdentifier().getType().equals("router")); boolean thrown = false; mantychoreRepository.removeResource(id); try { mantychoreRepository.getResource(id); } catch (Exception e) { thrown = true; } Assert.assertTrue(thrown); } catch (ResourceException e) { e.printStackTrace(); Assert.fail(e.getMessage()); } } @Test public void testModifyResources() { mantychoreRepository = new MantychoreRepository("router"); mantychoreRepository.setResourceDescriptorRepository(new MockDescriptorRepository()); mantychoreRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory1")); mantychoreRepository.capabilityFactoryAdded(new MockCapabilityFactory("factory2")); try { /* type of resources */ IResource resource = mantychoreRepository.createResource(newResourceDescriptor("router", "router1")); String id = resource.getResourceIdentifier().getId(); Assert.assertTrue(resource.getResourceDescriptor().getCapabilityDescriptors().size() == 2); Assert.assertTrue(resource.getResourceIdentifier().getType().equals("router")); resource = mantychoreRepository.modifyResource(id, oldResourceDescriptor(id, "router", "router1")); IResource newResource = mantychoreRepository.getResource(resource.getResourceIdentifier().getId()); Assert.assertTrue(newResource.getResourceDescriptor().getCapabilityDescriptors().size() == 1); Assert.assertTrue(newResource.getResourceIdentifier().getType().equals("router")); } 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; } }