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:39:39 UTC

[sling-org-apache-sling-hc-junit-bridge] 04/16: Configurable tag groups, and start testing

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

rombert pushed a commit to annotated tag org.apache.sling.hc.junit.bridge-1.0.2
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-hc-junit-bridge.git

commit f92ac2847612a5453362fe211e1c82ac9e035cef
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Tue Jul 15 15:01:44 2014 +0000

    Configurable tag groups, and start testing
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/whiteboard/bdelacretaz/junit-bridge@1610720 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 13 ++++-
 .../hc/junitbridge/HealthCheckTestsProvider.java   | 28 +++++++----
 .../tests/HealthCheckTestsProviderTest.java        | 57 ++++++++++++++++++++++
 3 files changed, 88 insertions(+), 10 deletions(-)

diff --git a/pom.xml b/pom.xml
index 04440b9..ef8fe22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,18 @@
             <artifactId>junit</artifactId>
             <scope>provided</scope>
         </dependency>
-         <dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>1.9.5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
             <version>1.6.2</version>
diff --git a/src/main/java/org/apache/sling/hc/junitbridge/HealthCheckTestsProvider.java b/src/main/java/org/apache/sling/hc/junitbridge/HealthCheckTestsProvider.java
index fb5c14b..f99d2d6 100644
--- a/src/main/java/org/apache/sling/hc/junitbridge/HealthCheckTestsProvider.java
+++ b/src/main/java/org/apache/sling/hc/junitbridge/HealthCheckTestsProvider.java
@@ -23,16 +23,20 @@ import java.util.List;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.junit.TestsProvider;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.service.component.ComponentContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /** Bridge Health Checks into the Sling JUnit server-side test
  *  framework, based on their tags.
  */
-@Component
+@Component(metatype=true)
 @Service
 public class HealthCheckTestsProvider implements TestsProvider {
 
@@ -40,20 +44,26 @@ public class HealthCheckTestsProvider implements TestsProvider {
     private long lastModified;
     private BundleContext bundleContext;
     
+    private final Logger log = LoggerFactory.getLogger(getClass());
+    
     public static final String TEST_NAME_PREFIX = "HealthChecks(";
     public static final String TEST_NAME_SUFFIX = ")";
 
-    // TODO configurable
-    private String [] tags = { 
-        "script",
-        "sling",
-        "bundles,script",
-        "bundles,-script"
-    };
+    @Property(cardinality=2147483647, 
+            label="Health Check Tags",
+            description="Groups of health check tags to execute as JUnit tests. Use the standard Health Checks 'includeThis,-omitThat' syntax")
+    public static final String PROP_TAG_GROUPS = "health.check.tag.groups";
+    
+    private String [] tagGroups;
     
     @Activate
     protected void activate(ComponentContext ctx) {
         bundleContext = ctx.getBundleContext();
+        tagGroups = PropertiesUtil.toStringArray(ctx.getProperties().get(PROP_TAG_GROUPS));
+        if(tagGroups == null) {
+            tagGroups = new String[]{};
+            log.warn("No tag groups configured via {}, Health Checks won't be available as JUnit tests", PROP_TAG_GROUPS);
+        }
         servicePid = (String)ctx.getProperties().get(Constants.SERVICE_PID);
         lastModified = System.currentTimeMillis();
     }
@@ -89,7 +99,7 @@ public class HealthCheckTestsProvider implements TestsProvider {
     @Override
     public List<String> getTestNames() {
         final List<String> result = new ArrayList<String>();
-        for(String t : tags) {
+        for(String t : tagGroups) {
             result.add(TEST_NAME_PREFIX + t + TEST_NAME_SUFFIX);
         }
         return result;
diff --git a/src/test/java/org/apache/sling/hc/junitbridge/tests/HealthCheckTestsProviderTest.java b/src/test/java/org/apache/sling/hc/junitbridge/tests/HealthCheckTestsProviderTest.java
new file mode 100644
index 0000000..2ef9114
--- /dev/null
+++ b/src/test/java/org/apache/sling/hc/junitbridge/tests/HealthCheckTestsProviderTest.java
@@ -0,0 +1,57 @@
+package org.apache.sling.hc.junitbridge.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.List;
+
+import org.apache.sling.hc.junitbridge.HealthCheckTestsProvider;
+import org.apache.sling.junit.TestsProvider;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.osgi.service.component.ComponentContext;
+
+/** Test the HealthCheckTestsProvider, which 
+ *  uses everything else.
+ */
+public class HealthCheckTestsProviderTest {
+    private TestsProvider provider;
+    
+    final String [] TAG_GROUPS = {
+            "foo,bar",
+            "wii",
+            "blue"
+    };
+    
+    private static String testName(String tagGroup) {
+        return HealthCheckTestsProvider.TEST_NAME_PREFIX + tagGroup + HealthCheckTestsProvider.TEST_NAME_SUFFIX;
+    }
+            
+    @Before
+    public void setup() {
+        final ComponentContext ctx = Mockito.mock(ComponentContext.class);
+        final Dictionary<String, Object> props = new Hashtable<String, Object>();
+        props.put(HealthCheckTestsProvider.PROP_TAG_GROUPS, TAG_GROUPS);
+        Mockito.when(ctx.getProperties()).thenReturn(props);
+        
+        provider = new HealthCheckTestsProvider() {
+            {
+                activate(ctx);
+            }
+        };
+    }
+    
+    @Test
+    public void testGetTestNames() {
+        final List<String> names = provider.getTestNames();
+        assertEquals(TAG_GROUPS.length, names.size());
+        for(String tag : TAG_GROUPS) {
+            final String expected = testName(tag);
+            assertTrue("Expecting test names to contain " + expected + ", " + names, names.contains(expected));
+        }
+    }
+    
+}

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