Skip to content

Commit

Permalink
#1091 Modernize Karaf test container
Browse files Browse the repository at this point in the history
* update Karaf to 4.4.4
* fix boot classpath deployment
* adjust, improve and fix regression tests
  • Loading branch information
oliverlietz committed Oct 26, 2023
1 parent 9f4640d commit 1b8102c
Show file tree
Hide file tree
Showing 31 changed files with 124 additions and 150 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public void copyBootClasspathLibraries() throws IOException {
FileUtils.copyURLToFile(
new URL(libraryUrl.getURL()),
createUnique(libraryUrl.getURL(), new File(
karafHome + "/lib"), new String[] { "jar" }));
karafHome + "/lib/boot"), new String[] { "jar" }));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import org.ops4j.pax.exam.Option;

/**
* Option specifying a library that will be made available in teh boot classpath.
* Option specifying a library that will be made available in the boot classpath.
*
* @author Alin Dreghiciu (adreghiciu@gmail.com)
* @since 0.5.0, April 29, 2009
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,28 +30,28 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class BootClasspathLibraryOptionTest {
public class BootClasspathLibraryOptionTest extends TestBase {

@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults(),
regressionDefaults(unpackDirectory()),
bootClasspathLibrary("mvn:commons-naming/commons-naming-core/20031116.223527")
};
}

@Test
public void test() throws Exception {
File file = new File("lib");
File file = new File("lib/boot");
File[] files = file.listFiles();
int foundJarFiles = 0;
for (File libFile : files) {
if (libFile.getName().endsWith("jar")) {
foundJarFiles++;
}
}
// Karaf 4.1.1 has 2 boot libs, we expect another one to show up
assertEquals(2 + 1, foundJarFiles);
// Karaf 4.4.4 has 5 boot libs, we expect another one to show up
assertEquals(5 + 1, foundJarFiles);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class BootDelegationOptionTest {
public class BootDelegationOptionTest extends TestBase {

@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults(),
regressionDefaults(unpackDirectory()),
bootDelegationPackage("com.oracle.*")
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package org.ops4j.pax.exam.regression.karaf;

import static org.junit.Assert.assertTrue;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.useOwnExamBundlesStartLevel;
import static org.ops4j.pax.exam.regression.karaf.RegressionConfiguration.regressionDefaults;

Expand All @@ -33,13 +32,12 @@
* shown and we see if this option breaks generally.
*/
@RunWith(PaxExam.class)
public class BundleStartLvlTest {
public class BundleStartLvlTest extends TestBase {

@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults("target/paxexam/startLvl/"),
keepRuntimeFolder(),
regressionDefaults(unpackDirectory()),
useOwnExamBundlesStartLevel(4)
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import static org.junit.Assert.assertEquals;
import static org.ops4j.pax.exam.CoreOptions.composite;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFileExtend;
import static org.ops4j.pax.exam.regression.karaf.RegressionConfiguration.regressionDefaults;

import java.io.File;

Expand All @@ -33,7 +34,7 @@
import org.osgi.service.cm.ConfigurationAdmin;

@RunWith(PaxExam.class)
public class DuplicatedPropertyEntryFromFileTest {
public class DuplicatedPropertyEntryFromFileTest extends TestBase {

@Inject
private ConfigurationAdmin configAdmin;
Expand All @@ -42,7 +43,7 @@ public class DuplicatedPropertyEntryFromFileTest {
public Option[] config() {
return new Option[] //
{
RegressionConfiguration.regressionDefaults(),
regressionDefaults(unpackDirectory()),
composite(editConfigurationFileExtend("etc/tests.cfg",
new File("src/test/resources/BaseKarafDefaultFrameworkDuplicatedPropertyEntryTestFirstKey"))),
composite(editConfigurationFileExtend("etc/tests.cfg",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@
import org.osgi.service.cm.ConfigurationAdmin;

@RunWith(PaxExam.class)
public class DuplicatedPropertyEntryTest {
public class DuplicatedPropertyEntryTest extends TestBase {

@Inject
private ConfigurationAdmin configAdmin;

@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults(),
regressionDefaults(unpackDirectory()),
editConfigurationFileExtend("etc/tests.cfg", "mykey", "myvalue1"),
editConfigurationFileExtend("etc/tests.cfg", "mykey", "myvalue2") };
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package org.ops4j.pax.exam.regression.karaf;

import static org.junit.Assert.assertEquals;
import static org.ops4j.pax.exam.regression.karaf.RegressionConfiguration.regressionDefaults;

import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -27,12 +28,12 @@
import org.ops4j.pax.exam.options.extra.EnvironmentOption;

@RunWith(PaxExam.class)
public class EnvironmentOptionTest {
public class EnvironmentOptionTest extends TestBase {

@Configuration
public Option[] config() {
return new Option[]{
RegressionConfiguration.regressionDefaults(),
regressionDefaults(unpackDirectory()),
new EnvironmentOption("TEST=Option") };
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class EquinoxFrameworkTest {
public class EquinoxFrameworkTest extends TestBase {

@Inject
SystemService systemService;

@Configuration
public Option[] config() {
return new Option[] { regressionDefaults() };
return new Option[] { regressionDefaults(unpackDirectory()) };
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class FeaturesAndBootFeaturesTest {
public class FeaturesAndBootFeaturesTest extends TestBase {

@Inject
private FeaturesService featuresService;
Expand All @@ -47,7 +47,7 @@ public class FeaturesAndBootFeaturesTest {
@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults(),
regressionDefaults(unpackDirectory()),
editConfigurationFilePut(BOOT, "config, log, framework, feature"),
features(featureRepoStandard(), "kar")
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class FeaturesScannerProvisionTest {
public class FeaturesScannerProvisionTest extends TestBase {

@Inject
private FeaturesService featuresService;
Expand All @@ -44,7 +44,7 @@ public class FeaturesScannerProvisionTest {
@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults(),
regressionDefaults(unpackDirectory()),
features(featureRepoStandard(), "scheduler", "wrapper", "http") };
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@
import org.osgi.framework.BundleContext;

@RunWith(PaxExam.class)
public class FrameworkWithShellOffTest {
public class FrameworkWithShellOffTest extends TestBase {
@Inject
BundleContext bc;

@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults(),
regressionDefaults(unpackDirectory()),
configureConsole().ignoreLocalConsole().ignoreRemoteShell() };
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package org.ops4j.pax.exam.regression.karaf;

import static org.junit.Assert.assertNotNull;
import static org.ops4j.pax.exam.regression.karaf.RegressionConfiguration.regressionDefaults;

import javax.inject.Inject;

Expand All @@ -31,7 +32,7 @@
import org.osgi.framework.BundleContext;

@RunWith(PaxExam.class)
public class KarafBundleContextNotNullTest {
public class KarafBundleContextNotNullTest extends TestBase {

@Inject
private BundleContext bundleContext;
Expand All @@ -53,7 +54,9 @@ public void setUp() {

@Configuration
public Option[] config() {
return new Option[]{ RegressionConfiguration.regressionDefaults() };
return new Option[]{
regressionDefaults(unpackDirectory())
};
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.ops4j.pax.exam.regression.karaf;

import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
import static org.ops4j.pax.exam.regression.karaf.RegressionConfiguration.regressionDefaults;

import java.io.File;
Expand All @@ -30,15 +29,15 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class KeepFolderTest {
public class KeepFolderTest extends TestBase {

private File runtimeFolder;

@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults("target/paxexam/unpack/"),
keepRuntimeFolder() };
regressionDefaults(unpackDirectory()),
};
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package org.ops4j.pax.exam.regression.karaf;

import static org.junit.Assert.assertTrue;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
import static org.ops4j.pax.exam.regression.karaf.RegressionConfiguration.regressionDefaults;

Expand All @@ -30,13 +29,12 @@
import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;

@RunWith(PaxExam.class)
public class LogLevelTest {
public class LogLevelTest extends TestBase {

@Configuration
public Option[] config() {
return new Option[]{
regressionDefaults("target/paxexam/log/"),
keepRuntimeFolder(),
regressionDefaults(unpackDirectory()),
logLevel(LogLevel.ERROR) };
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
import static org.ops4j.pax.exam.regression.karaf.RegressionConfiguration.regressionDefaults;

import java.util.Arrays;
import java.util.List;
Expand All @@ -37,6 +38,7 @@
import org.ops4j.pax.exam.sample8.ds.Calculator;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.ops4j.pax.exam.util.PathUtils;

@RunWith(PaxExamParameterized.class)
@ExamReactorStrategy(PerClass.class)
Expand All @@ -63,8 +65,9 @@ public static List<Object[]> getParameters() {

@Configuration
public static Option[] config() {
final String unpackDirectory = String.format("%s/target/paxexam/%s/", PathUtils.getBaseDir(), ParameterizedTest.class.getSimpleName());
return new Option[] {
RegressionConfiguration.regressionDefaults(),
regressionDefaults(unpackDirectory),
mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.6.2"),
mavenBundle("org.ops4j.pax.exam.samples", "pax-exam-sample8-ds", Info.getPaxExamVersion()) };
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class PropagateSystemPropertyTest {
public class PropagateSystemPropertyTest extends TestBase {

@Configuration
public Option[] config() {
System.setProperty("pax.exam.test", "propagated");
return options(
regressionDefaults(),
regressionDefaults(unpackDirectory()),
propagateSystemProperty("pax.exam.test"));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.configureSecurity;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;

import java.io.File;

Expand All @@ -50,15 +51,13 @@ public class RegressionConfiguration {

public static final String HTTP_PORT = "9080";

public static Option regressionDefaults() {
return regressionDefaults("target/exam");
}

public static Option regressionDefaults(String unpackDir) {
return composite(
karafDistributionConfiguration().frameworkUrl(mvnKarafDist())
.unpackDirectory(unpackDir == null ? null : new File(unpackDir)),

keepRuntimeFolder(),

configureConsole().ignoreLocalConsole(),
configureConsole().ignoreRemoteShell(),
configureSecurity().disableKarafMBeanServerBuilder(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,20 @@
import org.ops4j.pax.exam.junit.PaxExam;

@RunWith(PaxExam.class)
public class RemoveRuntimeFolderTest {
public class RemoveRuntimeFolderTest extends TestBase {

private static File runtimeFolder;

@Configuration
public Option[] config() {
return new Option[] { regressionDefaults("target/paxexam/unpack/"), };
return new Option[] { regressionDefaults(unpackDirectory()), };
}

@Test
public void test() throws Exception {
runtimeFolder = new File(".").getAbsoluteFile().getParentFile();
Assert.assertTrue("Runtime folder should exist while test runs", runtimeFolder.exists());
// TODO keepRuntimeFolder() option is configured in regressionDefaults()
System.out.println("Please check manually that the folder "
+ runtimeFolder.getAbsolutePath() + " is deleted after this test");
}
Expand Down
Loading

0 comments on commit 1b8102c

Please sign in to comment.