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