package org.opennaas.itests.router; /* * #%L * OpenNaaS :: iTests :: Router * %% * Copyright (C) 2007 - 2014 FundaciĆ³ Privada i2CAT, Internet i InnovaciĆ³ a Catalunya * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import static org.ops4j.pax.exam.CoreOptions.options; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.opennaas.core.resources.IResource; import org.opennaas.core.resources.IResourceManager; import org.opennaas.core.resources.IResourceRepository; import org.opennaas.core.resources.ResourceException; import org.opennaas.core.resources.descriptor.ResourceDescriptor; import org.opennaas.core.resources.helpers.ResourceDescriptorFactory; import org.opennaas.core.resources.protocol.IProtocolManager; import org.opennaas.core.resources.protocol.ProtocolException; import org.opennaas.core.resources.protocol.ProtocolSessionContext; import org.opennaas.itests.helpers.OpennaasExamOptions; import org.ops4j.pax.exam.Configuration; import org.ops4j.pax.exam.Option; import org.ops4j.pax.exam.junit.PaxExam; import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; import org.ops4j.pax.exam.spi.reactors.PerClass; import org.ops4j.pax.exam.util.Filter; import org.osgi.framework.BundleContext; import org.osgi.service.blueprint.container.BlueprintContainer; @RunWith(PaxExam.class) @ExamReactorStrategy(PerClass.class) public class ResourceManagerIntegrationTest { private final static Log log = LogFactory.getLog(ResourceManagerIntegrationTest.class); @Inject private IResourceManager rm; @SuppressWarnings("unused") @Inject private BundleContext bundleContext; @Inject @Filter("type=router") private IResourceRepository resourceRepo; @Inject private IProtocolManager protocolManager; @Inject @Filter(value = "(osgi.blueprint.container.symbolicname=org.opennaas.extensions.router.repository)", timeout = 20000) private BlueprintContainer repositoryService; @Inject @Filter(value = "(osgi.blueprint.container.symbolicname=org.opennaas.extensions.router.capability.chassis)", timeout = 20000) private BlueprintContainer chassisService; @Inject @Filter(value = "(osgi.blueprint.container.symbolicname=org.opennaas.extensions.router.capability.ip)", timeout = 20000) private BlueprintContainer ipService; @Inject @Filter(value = "(osgi.blueprint.container.symbolicname=org.opennaas.extensions.queuemanager)", timeout = 20000) private BlueprintContainer queueService; @Configuration public static Option[] configuration() { return options( OpennaasExamOptions.opennaasDistributionConfiguration(), OpennaasExamOptions.includeFeatures("opennaas-router", "opennaas-router-driver-junos"), OpennaasExamOptions.noConsole(), OpennaasExamOptions.doNotDelayShell(), OpennaasExamOptions.keepLogConfiguration(), OpennaasExamOptions.keepRuntimeFolder()); } public void createProtocolForResource(String resourceId) throws ProtocolException { protocolManager.getProtocolSessionManagerWithContext(resourceId, newSessionContextNetconf()); } public static ProtocolSessionContext newSessionContextNetconf() { String uri = System.getProperty("protocol.uri"); if (uri == null || uri.equals("${protocol.uri}")) { uri = "mock://user:pass@host.net:2212/mocksubsystem"; } ProtocolSessionContext protocolSessionContext = new ProtocolSessionContext(); protocolSessionContext.addParameter( ProtocolSessionContext.PROTOCOL_URI, uri); protocolSessionContext.addParameter(ProtocolSessionContext.PROTOCOL, "netconf"); protocolSessionContext.addParameter(ProtocolSessionContext.AUTH_TYPE, "password"); return protocolSessionContext; } @Test public void resourceWorkflow() throws InterruptedException, ResourceException, ProtocolException { createResource(); startResource(); stopResource(); removeResource(); createResourcetwo(); } public void createResource() throws ResourceException, ProtocolException { List<String> capabilities = new ArrayList<String>(); capabilities.add("chassis"); capabilities.add("ip"); capabilities.add("queue"); ResourceDescriptor descriptor = ResourceDescriptorFactory.newResourceDescriptor("junosm20", "router", capabilities); IResource resource = rm.createResource(descriptor); createProtocolForResource(resource.getResourceIdentifier().getId()); Assert.assertEquals("junosm20", rm.getNameFromResourceID(resource.getResourceIdentifier().getId())); Assert.assertEquals(org.opennaas.core.resources.ILifecycle.State.INITIALIZED, resource.getState()); List<IResource> resources = rm.listResourcesByType("router"); Assert.assertFalse(resources.isEmpty()); Assert.assertNotNull(resourceRepo); List<IResource> resources1 = resourceRepo.listResources(); Assert.assertFalse(resources1.isEmpty()); } public void startResource() throws ResourceException { Assert.assertNotNull(resourceRepo); List<IResource> resources = resourceRepo.listResources(); Assert.assertFalse(resources.isEmpty()); List<IResource> resources1 = rm.listResourcesByType("router"); Assert.assertFalse(resources1.isEmpty()); IResource resource = rm.getResource(rm.getIdentifierFromResourceName("router", "junosm20")); Assert.assertNotNull(resource); Assert.assertEquals(org.opennaas.core.resources.ILifecycle.State.INITIALIZED, resource.getState()); rm.startResource(rm.getIdentifierFromResourceName("router", "junosm20")); resource = rm.getResource(rm.getIdentifierFromResourceName("router", "junosm20")); Assert.assertNotNull(resource); Assert.assertEquals(org.opennaas.core.resources.ILifecycle.State.ACTIVE, resource.getState()); } public void stopResource() throws ResourceException, InterruptedException { List<IResource> resources = rm.listResourcesByType("router"); Assert.assertFalse(resources.isEmpty()); IResource resource = rm.getResource(rm.getIdentifierFromResourceName("router", "junosm20")); Assert.assertNotNull(resource); Assert.assertEquals(org.opennaas.core.resources.ILifecycle.State.ACTIVE, resource.getState()); rm.stopResource(rm.getIdentifierFromResourceName("router", "junosm20")); resource = rm.getResource(rm.getIdentifierFromResourceName("router", "junosm20")); Assert.assertNotNull(resource); Assert.assertEquals(org.opennaas.core.resources.ILifecycle.State.INITIALIZED, resource.getState()); } public void removeResource() throws ResourceException { List<IResource> resources = rm.listResourcesByType("router"); Assert.assertFalse(resources.isEmpty()); rm.removeResource(rm.getIdentifierFromResourceName("router", "junosm20")); } public void createResourcetwo() throws ResourceException, ProtocolException { List<String> capabilities = new ArrayList<String>(); capabilities.add("chassis"); capabilities.add("ip"); capabilities.add("queue"); ResourceDescriptor descriptor = ResourceDescriptorFactory.newResourceDescriptor("junosm20", "router", capabilities); IResource resource = rm.createResource(descriptor); createProtocolForResource(resource.getResourceIdentifier().getId()); Assert.assertEquals("junosm20", rm.getNameFromResourceID(resource.getResourceIdentifier().getId())); Assert.assertEquals(org.opennaas.core.resources.ILifecycle.State.INITIALIZED, resource.getState()); List<IResource> resources = rm.listResourcesByType("router"); Assert.assertFalse(resources.isEmpty()); } }