You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2015/07/03 16:56:08 UTC
svn commit: r1689031 - in /sling/whiteboard/bdelacretaz/it-startup: ./
src/test/java/org/apache/sling/launchpad/it/startup/
Author: bdelacretaz
Date: Fri Jul 3 14:56:08 2015
New Revision: 1689031
URL: http://svn.apache.org/r1689031
Log:
SLING-4851 - test bundles installed via OSGi installer (but not based on start levels yet)
Added:
sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java
Modified:
sling/whiteboard/bdelacretaz/it-startup/pom.xml
sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java
sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java
Modified: sling/whiteboard/bdelacretaz/it-startup/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/pom.xml?rev=1689031&r1=1689030&r2=1689031&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/it-startup/pom.xml (original)
+++ sling/whiteboard/bdelacretaz/it-startup/pom.xml Fri Jul 3 14:56:08 2015
@@ -165,5 +165,23 @@
<version>2.0.0</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.testing</artifactId>
+ <version>2.0.18</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.installer.core</artifactId>
+ <version>3.6.7-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.log</artifactId>
+ <version>4.0.2</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Added: sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java?rev=1689031&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java (added)
+++ sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java Fri Jul 3 14:56:08 2015
@@ -0,0 +1,118 @@
+/*
+ * 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.launchpad.it.startup;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Random;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.sling.installer.api.InstallableResource;
+import org.apache.sling.installer.api.OsgiInstaller;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.tinybundles.core.TinyBundles;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkEvent;
+import org.osgi.framework.FrameworkListener;
+import org.osgi.service.startlevel.StartLevel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** Asynchronously installs test bundles when start levels change,
+ * to verify the Sling incremental startup mechanism.
+ */
+@RunWith(PaxExam.class)
+class AsyncInstaller implements FrameworkListener {
+
+ private final Logger log = LoggerFactory.getLogger(getClass());
+ private final BundleContext bundleContext;
+ private final StartLevel startLevelService;
+ private final OsgiInstaller installer;
+ private final Set<String> installedBundles = new HashSet<String>();
+ private final String bundleNamePrefix = "AsyncInstaller-" + UUID.randomUUID().toString() + ".";
+ private final Random random = new Random(42);
+ private final AtomicInteger counter = new AtomicInteger();
+
+ public static final int MAX_BUNDLES_PER_LEVEL = 7;
+
+ AsyncInstaller(BundleContext bc, OsgiInstaller inst, StartLevel s) {
+ bundleContext = bc;
+ startLevelService = s;
+ installer = inst;
+ bundleContext.addFrameworkListener(this);
+ }
+
+ private InputStream getTestBundleStream(String bundleSymbolicName) throws Exception {
+ return TinyBundles.bundle()
+ .set(Constants.BUNDLE_SYMBOLICNAME, bundleSymbolicName)
+ .build(TinyBundles.withBnd());
+ }
+
+ void installBundles() throws Exception {
+ final int n = (int)(random.nextFloat() * MAX_BUNDLES_PER_LEVEL);
+ final int startLevel = startLevelService.getStartLevel();
+ log.info("Installing {} test bundles at start level {}", n, startLevel);
+ final InstallableResource [] toInstall = new InstallableResource[n];
+
+ for(int i=0; i < n; i++) {
+ final String bsn = bundleNamePrefix + counter.incrementAndGet() + "." + startLevel;
+ final InputStream is = getTestBundleStream(bsn);
+ toInstall[i] = new InstallableResource(bsn, is, null, bsn, "bundle", 100);
+ installedBundles.add(bsn);
+ }
+
+ installer.registerResources(getClass().getSimpleName(), toInstall);
+ }
+
+ boolean isTestBundle(Bundle b) {
+ return b.getSymbolicName().startsWith(bundleNamePrefix);
+ }
+
+ Collection<String> getBundleIssues(Bundle [] toCheck, boolean checkActiveState) {
+ final Set<String> issues = new HashSet<String>(installedBundles);
+ assertTrue("Expecting some installed bundles", issues.size() > 0);
+ for(Bundle b : toCheck) {
+ if(issues .remove(b.getSymbolicName()) && checkActiveState) {
+ if(b.getState() != Bundle.ACTIVE) {
+ issues.add(b.getSymbolicName() + " (not active)");
+ }
+ }
+ }
+ return issues ;
+ }
+
+ @Override
+ public void frameworkEvent(FrameworkEvent event) {
+ if(event.getType() == FrameworkEvent.STARTLEVEL_CHANGED) {
+ try {
+ installBundles();
+ } catch(Exception e) {
+ log.error("Installing bundles failed", e);
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java?rev=1689031&r1=1689030&r2=1689031&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java (original)
+++ sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java Fri Jul 3 14:56:08 2015
@@ -19,71 +19,72 @@
package org.apache.sling.launchpad.it.startup;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
+import java.util.Collection;
import javax.inject.Inject;
-import org.junit.Before;
+import org.apache.sling.installer.api.OsgiInstaller;
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.tinybundles.core.TinyBundles;
-import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
+import org.osgi.service.startlevel.StartLevel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Test the Sling Launchpad incremental startup mechanism */
@RunWith(PaxExam.class)
public class IncrementalStartupIT {
-
+
private final Logger log = LoggerFactory.getLogger(getClass());
@Inject
protected BundleContext bundleContext;
- private List<Bundle> bundles;
-
+ @Inject
+ private StartLevel startLevel;
+
+ @Inject
+ private OsgiInstaller installer;
+
@org.ops4j.pax.exam.Configuration
public Option[] config() {
return P.paxConfig();
}
- private InputStream getTestBundleStream(String bundleSymbolicName) throws Exception {
- return TinyBundles.bundle()
- .set(Constants.BUNDLE_SYMBOLICNAME, bundleSymbolicName)
- .build(TinyBundles.withBnd());
- }
-
- @Before
- public void setup() throws Exception {
- bundles = new ArrayList<Bundle>();
- final String basename = UUID.randomUUID().toString();
- for(int i=0; i<25; i++) {
- final InputStream is = getTestBundleStream(basename + "_" + i);
- try {
- final Bundle b = bundleContext.installBundle(basename, is);
- bundles.add(b);
- b.start();
- log.info("Started test bundle {}", b);
- } finally {
- is.close();
- }
- }
- }
-
@Test
public void allBundlesActive() throws Exception {
- // TODO setup is not called by JUnit??
- setup();
- for(Bundle b : bundles) {
- assertEquals("Expecting bundle to be active:" + b, Bundle.ACTIVE, b.getState());
+ final AsyncInstaller ai = new AsyncInstaller(bundleContext, installer, startLevel);
+ ai.installBundles();
+
+ final int to = startLevel.getStartLevel();
+
+ /*
+ final int from = startLevel.getStartLevel();
+ final int to = from + 10;
+ log.info("Changing start level from {} to {}", from, to);
+ startLevel.setStartLevel(to);
+ */
+
+ final long timeoutMsec = 10000;
+ final long endtime = System.currentTimeMillis() + timeoutMsec;
+ Collection<String> issues = null;
+ while(System.currentTimeMillis() < endtime) {
+ if(startLevel.getStartLevel() != to) {
+ continue;
+ }
+ issues = ai.getBundleIssues(bundleContext.getBundles(), true);
+ if(issues.isEmpty()) {
+ return;
+ }
+ Thread.sleep(50);
+ }
+ assertEquals("Expecting start level change to be done", to, startLevel.getStartLevel());
+ if(!issues.isEmpty()) {
+ fail("Missing or inactive bundles:" + issues);
}
}
}
\ No newline at end of file
Modified: sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java?rev=1689031&r1=1689030&r2=1689031&view=diff
==============================================================================
--- sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java (original)
+++ sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java Fri Jul 3 14:56:08 2015
@@ -36,7 +36,11 @@ public class P {
provision(bundle(thisProjectsBundle.toURI().toString())),
wrappedBundle(mavenBundle("org.ops4j.pax.tinybundles", "tinybundles").versionAsInProject()),
mavenBundle("biz.aQute.bnd", "bndlib").versionAsInProject(),
- wrappedBundle(mavenBundle("junit", "junit").versionAsInProject())
+ wrappedBundle(mavenBundle("junit", "junit").versionAsInProject()),
+ mavenBundle("org.apache.sling","org.apache.sling.installer.core").versionAsInProject(),
+ mavenBundle("org.slf4j","slf4j-api").versionAsInProject(),
+ mavenBundle("org.apache.sling","org.apache.sling.commons.log").versionAsInProject(),
+ wrappedBundle(mavenBundle("org.apache.sling","org.apache.sling.commons.testing").versionAsInProject())
).getOptions();
}
}
Re: svn commit: r1689031 - in /sling/whiteboard/bdelacretaz/it-startup:
./ src/test/java/org/apache/sling/launchpad/it/startup/
Posted by Bertrand Delacretaz <bd...@apache.org>.
Hi Julian,
On Fri, Jul 3, 2015 at 5:25 PM, Julian Sedding <js...@gmail.com> wrote:
>... I just saw that AsyncInstaller is annotated with
> @RunWith(PaxExam.class). Either I'm missing something or that is
> wrong...
Thanks - you're not missing anything..I have fixed that now, not sure
whether to blame the heat wave or my copy and paste skills ;-)
-Bertrand
Re: svn commit: r1689031 - in /sling/whiteboard/bdelacretaz/it-startup:
./ src/test/java/org/apache/sling/launchpad/it/startup/
Posted by Julian Sedding <js...@gmail.com>.
Hi Bertrand
I just saw that AsyncInstaller is annotated with
@RunWith(PaxExam.class). Either I'm missing something or that is
wrong.
Regards
Julian
On Fri, Jul 3, 2015 at 4:56 PM, <bd...@apache.org> wrote:
> Author: bdelacretaz
> Date: Fri Jul 3 14:56:08 2015
> New Revision: 1689031
>
> URL: http://svn.apache.org/r1689031
> Log:
> SLING-4851 - test bundles installed via OSGi installer (but not based on start levels yet)
>
> Added:
> sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java
> Modified:
> sling/whiteboard/bdelacretaz/it-startup/pom.xml
> sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java
> sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java
>
> Modified: sling/whiteboard/bdelacretaz/it-startup/pom.xml
> URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/pom.xml?rev=1689031&r1=1689030&r2=1689031&view=diff
> ==============================================================================
> --- sling/whiteboard/bdelacretaz/it-startup/pom.xml (original)
> +++ sling/whiteboard/bdelacretaz/it-startup/pom.xml Fri Jul 3 14:56:08 2015
> @@ -165,5 +165,23 @@
> <version>2.0.0</version>
> <scope>test</scope>
> </dependency>
> + <dependency>
> + <groupId>org.apache.sling</groupId>
> + <artifactId>org.apache.sling.commons.testing</artifactId>
> + <version>2.0.18</version>
> + <scope>test</scope>
> + </dependency>
> + <dependency>
> + <groupId>org.apache.sling</groupId>
> + <artifactId>org.apache.sling.installer.core</artifactId>
> + <version>3.6.7-SNAPSHOT</version>
> + <scope>test</scope>
> + </dependency>
> + <dependency>
> + <groupId>org.apache.sling</groupId>
> + <artifactId>org.apache.sling.commons.log</artifactId>
> + <version>4.0.2</version>
> + <scope>test</scope>
> + </dependency>
> </dependencies>
> </project>
>
> Added: sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java
> URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java?rev=1689031&view=auto
> ==============================================================================
> --- sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java (added)
> +++ sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/AsyncInstaller.java Fri Jul 3 14:56:08 2015
> @@ -0,0 +1,118 @@
> +/*
> + * 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.launchpad.it.startup;
> +
> +import static org.junit.Assert.assertTrue;
> +
> +import java.io.InputStream;
> +import java.util.Collection;
> +import java.util.HashSet;
> +import java.util.Random;
> +import java.util.Set;
> +import java.util.UUID;
> +import java.util.concurrent.atomic.AtomicInteger;
> +
> +import org.apache.sling.installer.api.InstallableResource;
> +import org.apache.sling.installer.api.OsgiInstaller;
> +import org.junit.runner.RunWith;
> +import org.ops4j.pax.exam.junit.PaxExam;
> +import org.ops4j.pax.tinybundles.core.TinyBundles;
> +import org.osgi.framework.Bundle;
> +import org.osgi.framework.BundleContext;
> +import org.osgi.framework.Constants;
> +import org.osgi.framework.FrameworkEvent;
> +import org.osgi.framework.FrameworkListener;
> +import org.osgi.service.startlevel.StartLevel;
> +import org.slf4j.Logger;
> +import org.slf4j.LoggerFactory;
> +
> +/** Asynchronously installs test bundles when start levels change,
> + * to verify the Sling incremental startup mechanism.
> + */
> +@RunWith(PaxExam.class)
> +class AsyncInstaller implements FrameworkListener {
> +
> + private final Logger log = LoggerFactory.getLogger(getClass());
> + private final BundleContext bundleContext;
> + private final StartLevel startLevelService;
> + private final OsgiInstaller installer;
> + private final Set<String> installedBundles = new HashSet<String>();
> + private final String bundleNamePrefix = "AsyncInstaller-" + UUID.randomUUID().toString() + ".";
> + private final Random random = new Random(42);
> + private final AtomicInteger counter = new AtomicInteger();
> +
> + public static final int MAX_BUNDLES_PER_LEVEL = 7;
> +
> + AsyncInstaller(BundleContext bc, OsgiInstaller inst, StartLevel s) {
> + bundleContext = bc;
> + startLevelService = s;
> + installer = inst;
> + bundleContext.addFrameworkListener(this);
> + }
> +
> + private InputStream getTestBundleStream(String bundleSymbolicName) throws Exception {
> + return TinyBundles.bundle()
> + .set(Constants.BUNDLE_SYMBOLICNAME, bundleSymbolicName)
> + .build(TinyBundles.withBnd());
> + }
> +
> + void installBundles() throws Exception {
> + final int n = (int)(random.nextFloat() * MAX_BUNDLES_PER_LEVEL);
> + final int startLevel = startLevelService.getStartLevel();
> + log.info("Installing {} test bundles at start level {}", n, startLevel);
> + final InstallableResource [] toInstall = new InstallableResource[n];
> +
> + for(int i=0; i < n; i++) {
> + final String bsn = bundleNamePrefix + counter.incrementAndGet() + "." + startLevel;
> + final InputStream is = getTestBundleStream(bsn);
> + toInstall[i] = new InstallableResource(bsn, is, null, bsn, "bundle", 100);
> + installedBundles.add(bsn);
> + }
> +
> + installer.registerResources(getClass().getSimpleName(), toInstall);
> + }
> +
> + boolean isTestBundle(Bundle b) {
> + return b.getSymbolicName().startsWith(bundleNamePrefix);
> + }
> +
> + Collection<String> getBundleIssues(Bundle [] toCheck, boolean checkActiveState) {
> + final Set<String> issues = new HashSet<String>(installedBundles);
> + assertTrue("Expecting some installed bundles", issues.size() > 0);
> + for(Bundle b : toCheck) {
> + if(issues .remove(b.getSymbolicName()) && checkActiveState) {
> + if(b.getState() != Bundle.ACTIVE) {
> + issues.add(b.getSymbolicName() + " (not active)");
> + }
> + }
> + }
> + return issues ;
> + }
> +
> + @Override
> + public void frameworkEvent(FrameworkEvent event) {
> + if(event.getType() == FrameworkEvent.STARTLEVEL_CHANGED) {
> + try {
> + installBundles();
> + } catch(Exception e) {
> + log.error("Installing bundles failed", e);
> + }
> + }
> + }
> +}
> \ No newline at end of file
>
> Modified: sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java
> URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java?rev=1689031&r1=1689030&r2=1689031&view=diff
> ==============================================================================
> --- sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java (original)
> +++ sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/IncrementalStartupIT.java Fri Jul 3 14:56:08 2015
> @@ -19,71 +19,72 @@
> package org.apache.sling.launchpad.it.startup;
>
> import static org.junit.Assert.assertEquals;
> +import static org.junit.Assert.fail;
>
> -import java.io.InputStream;
> -import java.util.ArrayList;
> -import java.util.List;
> -import java.util.UUID;
> +import java.util.Collection;
>
> import javax.inject.Inject;
>
> -import org.junit.Before;
> +import org.apache.sling.installer.api.OsgiInstaller;
> 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.tinybundles.core.TinyBundles;
> -import org.osgi.framework.Bundle;
> import org.osgi.framework.BundleContext;
> -import org.osgi.framework.Constants;
> +import org.osgi.service.startlevel.StartLevel;
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
>
> /** Test the Sling Launchpad incremental startup mechanism */
> @RunWith(PaxExam.class)
> public class IncrementalStartupIT {
> -
> +
> private final Logger log = LoggerFactory.getLogger(getClass());
>
> @Inject
> protected BundleContext bundleContext;
>
> - private List<Bundle> bundles;
> -
> + @Inject
> + private StartLevel startLevel;
> +
> + @Inject
> + private OsgiInstaller installer;
> +
> @org.ops4j.pax.exam.Configuration
> public Option[] config() {
> return P.paxConfig();
> }
>
> - private InputStream getTestBundleStream(String bundleSymbolicName) throws Exception {
> - return TinyBundles.bundle()
> - .set(Constants.BUNDLE_SYMBOLICNAME, bundleSymbolicName)
> - .build(TinyBundles.withBnd());
> - }
> -
> - @Before
> - public void setup() throws Exception {
> - bundles = new ArrayList<Bundle>();
> - final String basename = UUID.randomUUID().toString();
> - for(int i=0; i<25; i++) {
> - final InputStream is = getTestBundleStream(basename + "_" + i);
> - try {
> - final Bundle b = bundleContext.installBundle(basename, is);
> - bundles.add(b);
> - b.start();
> - log.info("Started test bundle {}", b);
> - } finally {
> - is.close();
> - }
> - }
> - }
> -
> @Test
> public void allBundlesActive() throws Exception {
> - // TODO setup is not called by JUnit??
> - setup();
> - for(Bundle b : bundles) {
> - assertEquals("Expecting bundle to be active:" + b, Bundle.ACTIVE, b.getState());
> + final AsyncInstaller ai = new AsyncInstaller(bundleContext, installer, startLevel);
> + ai.installBundles();
> +
> + final int to = startLevel.getStartLevel();
> +
> + /*
> + final int from = startLevel.getStartLevel();
> + final int to = from + 10;
> + log.info("Changing start level from {} to {}", from, to);
> + startLevel.setStartLevel(to);
> + */
> +
> + final long timeoutMsec = 10000;
> + final long endtime = System.currentTimeMillis() + timeoutMsec;
> + Collection<String> issues = null;
> + while(System.currentTimeMillis() < endtime) {
> + if(startLevel.getStartLevel() != to) {
> + continue;
> + }
> + issues = ai.getBundleIssues(bundleContext.getBundles(), true);
> + if(issues.isEmpty()) {
> + return;
> + }
> + Thread.sleep(50);
> + }
> + assertEquals("Expecting start level change to be done", to, startLevel.getStartLevel());
> + if(!issues.isEmpty()) {
> + fail("Missing or inactive bundles:" + issues);
> }
> }
> }
> \ No newline at end of file
>
> Modified: sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java
> URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java?rev=1689031&r1=1689030&r2=1689031&view=diff
> ==============================================================================
> --- sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java (original)
> +++ sling/whiteboard/bdelacretaz/it-startup/src/test/java/org/apache/sling/launchpad/it/startup/P.java Fri Jul 3 14:56:08 2015
> @@ -36,7 +36,11 @@ public class P {
> provision(bundle(thisProjectsBundle.toURI().toString())),
> wrappedBundle(mavenBundle("org.ops4j.pax.tinybundles", "tinybundles").versionAsInProject()),
> mavenBundle("biz.aQute.bnd", "bndlib").versionAsInProject(),
> - wrappedBundle(mavenBundle("junit", "junit").versionAsInProject())
> + wrappedBundle(mavenBundle("junit", "junit").versionAsInProject()),
> + mavenBundle("org.apache.sling","org.apache.sling.installer.core").versionAsInProject(),
> + mavenBundle("org.slf4j","slf4j-api").versionAsInProject(),
> + mavenBundle("org.apache.sling","org.apache.sling.commons.log").versionAsInProject(),
> + wrappedBundle(mavenBundle("org.apache.sling","org.apache.sling.commons.testing").versionAsInProject())
> ).getOptions();
> }
> }
>
>