You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:56:53 UTC

[sling-org-apache-sling-paxexam-util] 10/18: SLING-4832 - SlingPaxOptions.setIgnoredBundles added, with tests

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.paxexam.util-1.0.4
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-paxexam-util.git

commit ede4f47b78b26569cb5d8b144725bfbeb4ec5226
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Wed Jun 24 20:20:23 2015 +0000

    SLING-4832 - SlingPaxOptions.setIgnoredBundles added, with tests
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/sling-pax-util@1687359 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            |  2 +
 .../apache/sling/paxexam/util/SlingPaxOptions.java | 33 +++++++++++-
 .../sling/paxexam/util/IgnoredBundlesTest.java     | 63 ++++++++++++++++++++++
 .../apache/sling/paxexam/util/SlingSetupTest.java  | 11 ++--
 4 files changed, 105 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 6e9b378..af14bac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,7 @@
         <exam.version>3.0.3</exam.version>
         <url.version>1.5.2</url.version>
         <pax.exam.log.level>INFO</pax.exam.log.level>
+        <pax.vm.options>-Xmx256M -XX:MaxPermSize=256m</pax.vm.options>        
     </properties>
 
     <scm>
@@ -76,6 +77,7 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
+                    <argLine>${pax.vm.options}</argLine>
                     <systemProperties>
                         <property>
                             <name>pax.exam.log.level</name>
diff --git a/src/main/java/org/apache/sling/paxexam/util/SlingPaxOptions.java b/src/main/java/org/apache/sling/paxexam/util/SlingPaxOptions.java
index 9b1dcef..5368d71 100644
--- a/src/main/java/org/apache/sling/paxexam/util/SlingPaxOptions.java
+++ b/src/main/java/org/apache/sling/paxexam/util/SlingPaxOptions.java
@@ -55,6 +55,7 @@ public class SlingPaxOptions {
     public static final String PROP_TELNET_PORT = "osgi.shell.telnet.port";
     public static final String PROP_HTTP_PORT = "org.osgi.service.http.port";
     public static final String DEFAULT_RUN_MODES = "jackrabbit";
+    private static String [] ignoredBundlePrefixes;
     
     private static int getAvailablePort() {
         int result = Integer.MIN_VALUE;
@@ -67,6 +68,16 @@ public class SlingPaxOptions {
         return result;
     }
     
+    /** When reading bundle lists, ignore bundles which have symbolic names
+     *  starting with one of the supplied prefixes */
+    public static void setIgnoredBundles(String ... symbolicNamePrefix) {
+        if(symbolicNamePrefix == null || symbolicNamePrefix.length == 0) {
+            ignoredBundlePrefixes = new String[] {};
+        } else {
+            ignoredBundlePrefixes = symbolicNamePrefix;
+        }
+    }
+    
     /** Get run modes to use for our tests, as set by the sling.run.modes property */
     public static Collection<String> getTestRunModes() {
         final String runModes = System.getProperty("sling.run.modes", DEFAULT_RUN_MODES);
@@ -96,6 +107,20 @@ public class SlingPaxOptions {
         );
     }
     
+    private static boolean ignore(Bundle b) {
+        boolean result = false;
+        if(ignoredBundlePrefixes != null) {
+            final String sn = b.getArtifactId();
+            for(String prefix : ignoredBundlePrefixes) {
+                if(sn.startsWith(prefix)) {
+                    result = true;
+                    break;
+                }
+            }
+        }
+        return result;
+    }
+    
     public static CompositeOption slingBundleList(String groupId, String artifactId, String version, String type, String classifier) {
         
         final DefaultCompositeOption result = new DefaultCompositeOption();
@@ -121,12 +146,18 @@ public class SlingPaxOptions {
             tmp = dumpMvnUrlToTmpFile(paxUrl);
             final BundleList list = BundleListUtils.readBundleList(tmp);
             int counter = 0;
+            int ignored = 0;
             for(StartLevel s : list.getStartLevels()) {
                 
                 // Start level < 0 means bootstrap in our bundle lists
                 final int startLevel = s.getStartLevel() < 0 ? 1 : s.getStartLevel();
                 
                 for(Bundle b : s.getBundles()) {
+                    if(ignore(b)) {
+                        log.info("Bundle ignored due to setIgnoredBundles: {}", b);
+                        ignored++;
+                        continue;
+                    }
                     counter++;
                     
                     // TODO need better fragment detection
@@ -163,7 +194,7 @@ public class SlingPaxOptions {
                     log.info("Bundle added: {}/{}/{}", new Object [] { b.getGroupId(), b.getArtifactId(), b.getVersion()});
                 }
             }
-            log.info("Got {} bundles from {}", counter, paxUrl);
+            log.info("Got {} bundles ({} ignored) from {}", new Object[] { counter, ignored, paxUrl });
         } catch(Exception e) {
             throw new RuntimeException("Error getting bundle list " + paxUrl, e);
         } finally {
diff --git a/src/test/java/org/apache/sling/paxexam/util/IgnoredBundlesTest.java b/src/test/java/org/apache/sling/paxexam/util/IgnoredBundlesTest.java
new file mode 100644
index 0000000..23e8ff1
--- /dev/null
+++ b/src/test/java/org/apache/sling/paxexam/util/IgnoredBundlesTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.paxexam.util;
+
+import static org.junit.Assert.assertNull;
+
+import javax.inject.Inject;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+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.osgi.framework.BundleContext;
+
+/** Test the bundles ignoring feature */
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class IgnoredBundlesTest {
+    /** Use a released launchpad for this example */
+    public static final String SLING_LAUNCHPAD_VERSION = "7";
+    
+    public static final String MIME_BUNDLE_SN = "org.apache.sling.commons.mime";
+    public static final String JSON_BUNDLE_SN = "org.apache.sling.commons.json";
+    
+    @Inject
+    private BundleContext bundleContext;
+    
+    @org.ops4j.pax.exam.Configuration
+    public Option[] config() {
+        SlingPaxOptions.setIgnoredBundles(MIME_BUNDLE_SN, JSON_BUNDLE_SN);
+        try {
+            return SlingPaxOptions.defaultLaunchpadOptions(SLING_LAUNCHPAD_VERSION).getOptions();
+        } finally {
+            SlingPaxOptions.setIgnoredBundles();
+        }
+    }
+    
+    @Test
+    public void testMimeBundle() {
+        assertNull(SlingSetupTest.getBundle(bundleContext, MIME_BUNDLE_SN));
+    }
+    
+    @Test
+    public void testJsonBundle() {
+        assertNull(SlingSetupTest.getBundle(bundleContext, JSON_BUNDLE_SN));
+    }
+ }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/paxexam/util/SlingSetupTest.java b/src/test/java/org/apache/sling/paxexam/util/SlingSetupTest.java
index 13e40c2..d3157e1 100644
--- a/src/test/java/org/apache/sling/paxexam/util/SlingSetupTest.java
+++ b/src/test/java/org/apache/sling/paxexam/util/SlingSetupTest.java
@@ -97,13 +97,18 @@ public class SlingSetupTest {
     }
     
     private Bundle getBundle(String symbolicName) {
-        for(Bundle b : bundleContext.getBundles()) {
+        return getBundle(bundleContext, symbolicName);
+    }
+    
+    static Bundle getBundle(BundleContext bc, String symbolicName) {
+        for(Bundle b : bc.getBundles()) {
             if(symbolicName.equals(b.getSymbolicName())) {
                 return b;
             }
         }
         return null;
     }
+    
     /** @return bundle state, UNINSTALLED if absent */
     private int getBundleState(String symbolicName) {
         return getBundleState(getBundle(symbolicName));
@@ -177,10 +182,10 @@ public class SlingSetupTest {
                 "org.apache.sling.bundleresource.impl",
                 "org.apache.sling.commons.classloader",
                 "org.apache.sling.commons.compiler",
-                "org.apache.sling.commons.json",
+                IgnoredBundlesTest.JSON_BUNDLE_SN,
                 "org.apache.sling.commons.log",
                 "org.apache.sling.commons.logservice",
-                "org.apache.sling.commons.mime",
+                IgnoredBundlesTest.MIME_BUNDLE_SN,
                 "org.apache.sling.commons.osgi",
                 "org.apache.sling.commons.scheduler",
                 "org.apache.sling.commons.threads",

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.