You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2018/04/13 21:16:33 UTC

svn commit: r1829105 - /felix/trunk/osgi-r7/framework/src/test/java/org/apache/felix/framework/ExtensionManagerTest.java

Author: pauls
Date: Fri Apr 13 21:16:32 2018
New Revision: 1829105

URL: http://svn.apache.org/viewvc?rev=1829105&view=rev
Log:
FELIX-5800: add some simple test to see that we have at least some system packages.

Modified:
    felix/trunk/osgi-r7/framework/src/test/java/org/apache/felix/framework/ExtensionManagerTest.java

Modified: felix/trunk/osgi-r7/framework/src/test/java/org/apache/felix/framework/ExtensionManagerTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/framework/src/test/java/org/apache/felix/framework/ExtensionManagerTest.java?rev=1829105&r1=1829104&r2=1829105&view=diff
==============================================================================
--- felix/trunk/osgi-r7/framework/src/test/java/org/apache/felix/framework/ExtensionManagerTest.java (original)
+++ felix/trunk/osgi-r7/framework/src/test/java/org/apache/felix/framework/ExtensionManagerTest.java Fri Apr 13 21:16:32 2018
@@ -18,40 +18,34 @@
  */
 package org.apache.felix.framework;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.apache.felix.framework.util.FelixConstants;
+import org.apache.felix.framework.util.manifestparser.NativeLibraryClause;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
+import org.osgi.framework.launch.Framework;
+import org.osgi.framework.namespace.NativeNamespace;
+import org.osgi.framework.wiring.BundleCapability;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.security.SecureRandom;
 import java.util.Arrays;
-import java.util.Comparator;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
 
-import org.apache.felix.framework.util.FelixConstants;
-import org.apache.felix.framework.util.manifestparser.NativeLibraryClause;
-import org.junit.Before;
-import org.junit.Test;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Version;
-import org.osgi.framework.launch.Framework;
-import org.osgi.framework.namespace.NativeNamespace;
-import org.osgi.framework.wiring.BundleCapability;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  *
@@ -64,12 +58,28 @@ public class ExtensionManagerTest {
 
     @Before
     public void setUp() throws Exception {
-        String path = "/" + getClass().getName().replace('.', '/') + ".class";
-        String url = getClass().getResource(path).getFile();
-        String baseDir = url.substring(0, url.length() - path.length());
-        String rndStr = Long.toString(System.nanoTime(), Character.MAX_RADIX);
-        rndStr = rndStr.substring(rndStr.length() - 6, rndStr.length() - 1);
-        testDir = new File(baseDir, getClass().getSimpleName() + "_" + rndStr);
+        testDir = File.createTempFile("felix-temp", ".dir");
+        assertTrue("precondition", testDir.delete());
+        assertTrue("precondition", testDir.mkdirs());
+
+    }
+
+    @After
+    public void tearDown() throws Exception
+    {
+        deleteDir(testDir);
+    }
+
+    private static void deleteDir(File root) throws IOException
+    {
+        if (root.isDirectory())
+        {
+            for (File file : root.listFiles())
+            {
+                deleteDir(file);
+            }
+        }
+        assertTrue(root.delete());
     }
 
     /**
@@ -92,10 +102,10 @@ public class ExtensionManagerTest {
         configMap.put(FelixConstants.NATIVE_PROC_NAME_ALIAS_PREFIX + ".x86-64", "amd64,em64t,x86_64");
         configMap.put(FelixConstants.FRAMEWORK_SYSTEMPACKAGES, "foo");
         NativeLibraryClause.initializeNativeAliases(configMap);
-        ExtensionManager extensionManager = new ExtensionManager(logger,
-                configMap, null);
+        ExtensionManager extensionManager = new ExtensionManager(configMap, logger, null);
+
         BundleCapability nativeBundleCapability = extensionManager
-                .buildNativeCapabilites();
+                .buildNativeCapabilites(extensionManager.getRevision(), configMap);
         assertEquals(
                 "Native Language should be same as framework Language",
                 "en",
@@ -149,6 +159,35 @@ public class ExtensionManagerTest {
         assertEquals("startstop", activatorCalls.toString());
     }
 
+    @Test
+    public void testSystemBundleHeaders() throws Exception
+    {
+        File cacheDir = new File(testDir, "cache");
+        cacheDir.mkdirs();
+        String cache = cacheDir.getAbsolutePath();
+
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("felix.cache.profiledir", cache);
+        params.put("felix.cache.dir", cache);
+        params.put(Constants.FRAMEWORK_STORAGE, cache);
+
+        Framework framework = new Felix(params);
+        framework.init();
+        framework.start();
+
+        Version version = new Version(System.getProperty("java.specification.version"));
+        String versionString;
+        if (version.getMajor() < 9)
+        {
+            versionString = String.format("0.0.0.JavaSE_001_%03d", version.getMinor() > 6 ? version.getMinor() : 6);
+        }
+        else
+        {
+            versionString = String.format("0.0.0.JavaSE_%03d", version.getMajor());
+        }
+        assert(framework.getHeaders().get(Constants.EXPORT_PACKAGE).contains("java.lang; version=\"" + versionString + "\""));
+    }
+
     private File createExtensionBundle() throws IOException {
         File f = File.createTempFile("felix-bundle" + counter++, ".jar", testDir);