Search in sources :

Example 1 with DeployedBundles

use of org.apache.aries.application.modelling.DeployedBundles in project aries by apache.

the class DeployedBundlesTest method testGetImportPackage_bundleSymbolicNameOK.

@Test
public void testGetImportPackage_bundleSymbolicNameOK() throws Exception {
    DeployedBundles deployedBundles = getSimpleDeployedBundles(ternary.CONTENT, ternary.CONTENT, ternary.NONE);
    deployedBundles.addBundle(createModelledResource("bundle.a", "1.0.0", Arrays.asList("package.b;version=1.0.0;bundle-symbolic-name=bundle.b;bundle-version=\"[1.0.0,2.0.0)\""), new ArrayList<String>()));
    deployedBundles.addBundle(createModelledResource("bundle.b", "1.0.0", new ArrayList<String>(), Arrays.asList("package.b;version=2.0.0")));
    // Check that the bundle-symbolic-name attribute for a bundle within deployed-content is ok.
    String importPackageEntry = null;
    try {
        importPackageEntry = deployedBundles.getImportPackage();
    } catch (ResolverException e) {
        e.printStackTrace();
        Assert.fail(e.toString());
    }
    // All packages are satisfied internally
    String expectedResult = "";
    Assert.assertTrue("ImportPackage=" + importPackageEntry, isEqual(importPackageEntry, expectedResult));
}
Also used : ResolverException(org.apache.aries.application.management.ResolverException) ArrayList(java.util.ArrayList) DeployedBundles(org.apache.aries.application.modelling.DeployedBundles) Test(org.junit.Test)

Example 2 with DeployedBundles

use of org.apache.aries.application.modelling.DeployedBundles in project aries by apache.

the class DeployedBundlesTest method testGetUseBundle_Valid.

@Test
public void testGetUseBundle_Valid() throws Exception {
    // Get a valid set of deployment information.
    DeployedBundles deployedBundles = validDeployedBundles();
    packagesResolve(deployedBundles);
    // Check the deployed use bundle entry is correct.
    String useBundleEntry = deployedBundles.getUseBundle();
    String expectedResult = "bundle.c;deployed-version=1.0.0,bundle.d;deployed-version=1.0.0";
    Assert.assertTrue("UseBundle=" + useBundleEntry, isEqual(useBundleEntry, expectedResult));
}
Also used : DeployedBundles(org.apache.aries.application.modelling.DeployedBundles) Test(org.junit.Test)

Example 3 with DeployedBundles

use of org.apache.aries.application.modelling.DeployedBundles in project aries by apache.

the class DeployedBundlesTest method testGetProvisionBundle_Valid.

@Test
public void testGetProvisionBundle_Valid() throws Exception {
    // Check the provision bundle entry is correct.
    DeployedBundles deployedBundles = validDeployedBundles();
    packagesResolve(deployedBundles);
    String provisionBundleEntry = deployedBundles.getProvisionBundle();
    String expectedResult = "bundle.e;deployed-version=1.0.0";
    Assert.assertTrue("ProvisionBundle=" + provisionBundleEntry, isEqual(provisionBundleEntry, expectedResult));
}
Also used : DeployedBundles(org.apache.aries.application.modelling.DeployedBundles) Test(org.junit.Test)

Example 4 with DeployedBundles

use of org.apache.aries.application.modelling.DeployedBundles in project aries by apache.

the class DeploymentGeneratorTest method checkBasicCircularDependenciesDetected.

@Test
public void checkBasicCircularDependenciesDetected() throws Exception {
    // Override Resolver behaviour.
    // ImportedBundle isolated = new ImportedBundleImpl ("test.isolated" , "1.0.0");
    // When we resolve isolated, we're going to get another bundle which has a dependency on isolated.
    Collection<ModelledResource> cmr = new ArrayList<ModelledResource>();
    ExportedPackage testIsolatedPkg = createExportedPackage("test.isolated", "1.0.0", new String[] { "test.shared" }, new String[] { "test.isolated.pkg" });
    cmr.add(testIsolatedPkg.getBundle());
    ExportedPackage testSharedPkg = createExportedPackage("test.shared", "1.0.0", new String[] { "test.isolated.pkg" }, new String[] { "test.shared" });
    cmr.add(testSharedPkg.getBundle());
    _resolver.addResult(cmr);
    // The second time DeploymentGenerator calls the Resolver, it will provide just
    // test.shared. The resolver will return test.shared _plus_ test.isolated.
    _resolver.addResult(cmr);
    Skeleton.getSkeleton(appMetadata).setReturnValue(new MethodCall(ApplicationMetadata.class, "getApplicationContents"), Arrays.asList(mockContent("test.isolated", "1.0.0")));
    try {
        DeployedBundles deployedBundles = deplMFMgr.generateDeployedBundles(appMetadata, new ArrayList<ModelledResource>(), new ArrayList<Content>());
        deplMFMgr.generateDeploymentManifest(appMetadata.getApplicationSymbolicName(), appMetadata.getApplicationVersion().toString(), deployedBundles);
    } catch (ResolverException rx) {
        List<String> usr = rx.getUnsatisfiedRequirements();
        assertEquals("One unsatisfied requirement expected, not " + usr.size(), usr.size(), 1);
        String chkMsg = "Shared bundle test.shared_1.0.0 has a dependency for package " + "test.shared which is exported from application bundle [test.isolated_1.0.0]";
        assertTrue(chkMsg + " expected, not " + usr, usr.contains(chkMsg));
        return;
    }
    fail("ResolverException expected");
}
Also used : ResolverException(org.apache.aries.application.management.ResolverException) ArrayList(java.util.ArrayList) DeployedBundles(org.apache.aries.application.modelling.DeployedBundles) MethodCall(org.apache.aries.unittest.mocks.MethodCall) ModelledResource(org.apache.aries.application.modelling.ModelledResource) ApplicationMetadata(org.apache.aries.application.ApplicationMetadata) ExportedPackage(org.apache.aries.application.modelling.ExportedPackage) Content(org.apache.aries.application.Content) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 5 with DeployedBundles

use of org.apache.aries.application.modelling.DeployedBundles in project aries by apache.

the class DeploymentGeneratorTest method checkBundleInAppContentAndProvisionContent.

@Test
public void checkBundleInAppContentAndProvisionContent() throws Exception {
    List<ModelledResource> cmr = new ArrayList<ModelledResource>();
    cmr.add(createModelledResource("test.api", "1.1.0", Collections.<String>emptyList(), Arrays.asList("test.api.pack;version=1.1.0")));
    cmr.add(createModelledResource("test.api", "1.0.0", Collections.<String>emptyList(), Arrays.asList("test.api.pack;version=1.0.0")));
    cmr.add(createModelledResource("test.consumer", "1.0.0", Arrays.asList("test.api.pack;version=\"[1.0.0,2.0.0)\""), Collections.<String>emptyList()));
    cmr.add(createModelledResource("test.provider", "1.0.0", Arrays.asList("test.api.pack;version=\"[1.0.0,1.1.0)\""), Collections.<String>emptyList()));
    // The second time DeploymentGenerator calls the Resolver, it will provide just
    // test.shared. The resolver will return test.shared _plus_ test.isolated.
    _resolver.addResult(cmr);
    Skeleton.getSkeleton(appMetadata).setReturnValue(new MethodCall(ApplicationMetadata.class, "getApplicationContents"), Arrays.asList(mockContent("test.api", "1.1.0"), mockContent("test.consumer", "1.0.0"), mockContent("test.provider", "1.0.0")));
    app = Skeleton.newMock(AriesApplication.class);
    Skeleton.getSkeleton(app).setReturnValue(new MethodCall(AriesApplication.class, "getApplicationMetadata"), appMetadata);
    try {
        DeployedBundles deployedBundles = deplMFMgr.generateDeployedBundles(appMetadata, Arrays.asList(new ModelledResource[] { cmr.get(0), cmr.get(2), cmr.get(3) }), new ArrayList<Content>());
        deplMFMgr.generateDeploymentManifest(appMetadata.getApplicationSymbolicName(), appMetadata.getApplicationVersion().toString(), deployedBundles);
        fail("Expected exception because we can't provision an isolated bundle twice");
    } catch (ResolverException rx) {
    }
}
Also used : ApplicationMetadata(org.apache.aries.application.ApplicationMetadata) ResolverException(org.apache.aries.application.management.ResolverException) Content(org.apache.aries.application.Content) ArrayList(java.util.ArrayList) AriesApplication(org.apache.aries.application.management.AriesApplication) DeployedBundles(org.apache.aries.application.modelling.DeployedBundles) MethodCall(org.apache.aries.unittest.mocks.MethodCall) ModelledResource(org.apache.aries.application.modelling.ModelledResource) Test(org.junit.Test)

Aggregations

DeployedBundles (org.apache.aries.application.modelling.DeployedBundles)26 Test (org.junit.Test)23 ArrayList (java.util.ArrayList)17 ResolverException (org.apache.aries.application.management.ResolverException)17 ModelledResource (org.apache.aries.application.modelling.ModelledResource)10 ApplicationMetadata (org.apache.aries.application.ApplicationMetadata)8 Content (org.apache.aries.application.Content)7 MethodCall (org.apache.aries.unittest.mocks.MethodCall)6 Manifest (java.util.jar.Manifest)4 AriesApplication (org.apache.aries.application.management.AriesApplication)4 List (java.util.List)3 ExportedPackage (org.apache.aries.application.modelling.ExportedPackage)3 InvalidAttributeException (org.apache.aries.application.InvalidAttributeException)2 ServiceUnavailableException (org.osgi.service.blueprint.container.ServiceUnavailableException)2 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 Attributes (java.util.jar.Attributes)1 ResolveConstraint (org.apache.aries.application.management.ResolveConstraint)1