Hi, I am not sure whether this belongs on the karaf or rather on the pax mailinglist. After i upgraded from karaf 2.3.3 to 3.0.3 i noticed that our integration tests slowed down dramatically (30 seconds to 1 minute per test).
So i tried a few things, setted up a minimal test with PaxExam for
KarafContainer and added also a Tinybundle to the Test (because most of our
tests use TinyBundles). I noticed that when i was using the same Test and
same maven settings for PaxExam with diffrent Karaf Version they were a lot
slower on Karaf 3.0.3 (a ~30 second timeout during the Test with 3.0.3).
With Karaf 2.3.3 they behaved as expected. This only seems to happen when
using TinyBundles and Karaf 3.0.3.
Is this a bug? Does anybody know how to fix this?
Best regards
2.3.3 result:
[INFO] Total time: 24.384 s
3.0.3 result:
[INFO] Total time: 54.138 s
Test:
import static aQute.bnd.osgi.Constants.BUNDLE_SYMBOLICNAME;
import static aQute.bnd.osgi.Constants.EXPORT_PACKAGE;
import static aQute.bnd.osgi.Constants.IMPORT_PACKAGE;
import static junit.framework.Assert.assertTrue;
import static org.ops4j.pax.exam.CoreOptions.maven;
import static org.ops4j.pax.exam.CoreOptions.streamBundle;
import static org.ops4j.pax.tinybundles.core.TinyBundles.bundle;
import static org.osgi.framework.Constants.DYNAMICIMPORT_PACKAGE;
import java.io.File;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.CoreOptions;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.karaf.options.KarafDistributionOption;
import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.ops4j.pax.tinybundles.core.TinyBundle;
import sample.minimal.karaf.test.second.MyClass;
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class VersionAsInProjectKarafTest
{
@Configuration
public Option[] config()
{
return new Option[]{
KarafDistributionOption.logLevel(LogLevel.TRACE),
KarafDistributionOption.karafDistributionConfiguration().frameworkUrl(
maven().groupId("org.apache.karaf").artifactId("apache-karaf").type("tar.gz").versionAsInProject())
.karafVersion("2.3.3")
// .karafVersion("3.0.3")
.name("Apache
Karaf").useDeployFolder(false).unpackDirectory(new File("target/paxexam")),
KarafDistributionOption.editConfigurationFileExtend("etc/config.properties",
"org.apache.aries.blueprint.synchronous", "false"),
runtimeUtils()
};
}
/**
* Sets up and provisions a bundle packaged with the runtime utitlity
classes and corresponding headers. This method
* should not be called directly as it is called from {@link
#provisionRuntimeUtilities()}.
*/
private static Option runtimeUtils()
{
final TinyBundle tinyBundle = bundle()
.add(MyClass.class)
.set(BUNDLE_SYMBOLICNAME,
"sample.minimal.karaf.test.second")
.set(EXPORT_PACKAGE, "sample.minimal.karaf.test.second")
.set(IMPORT_PACKAGE, "*")
.set(DYNAMICIMPORT_PACKAGE, "*");
return CoreOptions.provision(streamBundle(tinyBundle.build()));
}
@Test
public void test() throws Exception
{
assertTrue(true);
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>some.test</groupId>
<artifactId>sample.minimal.karaf.test.second</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<dependencies>
<dependency>
*setting for karaf 3*
/
< groupId>org.apache.karaf.features</groupId>
<version>3.0.3</version>/
*setting for karaf 2*
/ <groupId>org.apache.karaf.assemblies.features</groupId>
/
<artifactId>standard</artifactId>
/<version>2.3.3</version>/
<classifier>features</classifier>
<type>xml</type>
</dependency>
<dependency>
<groupId>org.apache.karaf</groupId>
<artifactId>apache-karaf</artifactId>
<version>2.3.3</version>
<type>tar.gz</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>
org.ops4j.pax.exam
</groupId>
<artifactId>
pax-exam-spi
</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam-container-karaf</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam-junit4</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.url</groupId>
<artifactId>pax-url-aether</artifactId>
<version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>2.3.7</version>
</plugin>
<plugin>
<groupId>org.apache.servicemix.tooling</groupId>
<artifactId>depends-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>generate-depends-file</id>
<goals>
<goal>generate-depends-file</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<pax.exam.karaf.version>2.3.3</pax.exam.karaf.version>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>
--
View this message in context:
http://karaf.922171.n3.nabble.com/Integration-Tests-hang-for-approx-30-seconds-after-Karaf-2-3-3-upgrade-to-3-0-3-tp4038517.html
Sent from the Karaf - User mailing list archive at Nabble.com.
