Integration testing framework for OSGi applications running in Apache Karaf containers
—
Core functionality for setting up and configuring Karaf distributions for testing. This capability provides comprehensive control over Karaf distribution selection, installation paths, runtime behavior, and platform-specific configurations.
Creates a Karaf distribution configuration option with default settings or specific framework details.
/**
* Creates a default Karaf distribution configuration
* @return Distribution configuration option with defaults
*/
public static KarafDistributionBaseConfigurationOption karafDistributionConfiguration();
/**
* Creates a Karaf distribution configuration with specific parameters
* @param frameworkURL URL to the Karaf distribution archive
* @param name Framework name for identification
* @param karafVersion Karaf version string
* @return Configured distribution option
*/
public static KarafDistributionBaseConfigurationOption karafDistributionConfiguration(
String frameworkURL, String name, String karafVersion);Usage Examples:
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.*;
// Default configuration (uses Maven Central Karaf)
Option defaultConfig = karafDistributionConfiguration();
// Specific Karaf version and location
Option customConfig = karafDistributionConfiguration(
"mvn:org.apache.karaf/apache-karaf/4.2.0/zip",
"Apache Karaf",
"4.2.0"
);
// Using existing Karaf installation
Option existingConfig = karafDistributionConfiguration()
.existing(new File("/opt/karaf"));Fluent configuration interface for detailed Karaf distribution setup with method chaining.
/**
* Base configuration class for Karaf distributions
*/
class KarafDistributionBaseConfigurationOption implements Option {
// Constructors
public KarafDistributionBaseConfigurationOption();
public KarafDistributionBaseConfigurationOption(String frameworkURL, String name, String karafVersion);
public KarafDistributionBaseConfigurationOption(File existing);
public KarafDistributionBaseConfigurationOption(MavenUrlReference frameworkURLReference, String name, String karafVersion);
public KarafDistributionBaseConfigurationOption(MavenUrlReference frameworkURLReference);
public KarafDistributionBaseConfigurationOption(KarafDistributionBaseConfigurationOption base);
// Fluent configuration methods (all return this)
public KarafDistributionBaseConfigurationOption frameworkUrl(String frameworkURL);
public KarafDistributionBaseConfigurationOption frameworkUrl(MavenUrlReference frameworkURL);
public KarafDistributionBaseConfigurationOption existing(File existing);
public KarafDistributionBaseConfigurationOption name(String name);
public KarafDistributionBaseConfigurationOption karafVersion(String karafVersion);
public KarafDistributionBaseConfigurationOption karafMain(String karafMain);
public KarafDistributionBaseConfigurationOption karafData(String karafData);
public KarafDistributionBaseConfigurationOption karafEtc(String karafEtc);
public KarafDistributionBaseConfigurationOption karafLog(String karafLog);
public KarafDistributionBaseConfigurationOption unpackDirectory(File unpackDirectory);
public KarafDistributionBaseConfigurationOption directoryNameFormat(String directoryNameFormat);
public KarafDistributionBaseConfigurationOption useDeployFolder(boolean useDeployFolder);
public KarafDistributionBaseConfigurationOption runEmbedded(boolean runEmbedded);
// Getter methods
public String getFrameworkURL();
public File getExisting();
public String getName();
public String getKarafVersion();
public String getKarafMain();
public String getKarafData();
public String getKarafEtc();
public String getKarafLog();
public File getUnpackDirectory();
public String getDirectoryNameFormat();
public boolean isUseDeployFolder();
public boolean isRunEmbedded();
}Usage Examples:
// Complete fluent configuration
Option fluentConfig = karafDistributionConfiguration()
.frameworkUrl("mvn:org.apache.karaf/apache-karaf/4.2.0/zip")
.karafVersion("4.2.0")
.name("Test Karaf")
.karafData("data")
.karafEtc("etc")
.karafLog("log")
.useDeployFolder(true)
.runEmbedded(false)
.unpackDirectory(new File("target/pax"));
// Using existing Karaf installation
Option existingConfig = karafDistributionConfiguration()
.existing(new File("/opt/karaf"))
.runEmbedded(true);
// Custom main class and directories
Option customConfig = karafDistributionConfiguration()
.karafMain("com.example.CustomMain")
.karafData("custom-data")
.directoryNameFormat("test-%s");Standard implementation of the base distribution configuration.
/**
* Standard Karaf distribution configuration implementation
*/
class KarafDistributionConfigurationOption extends KarafDistributionBaseConfigurationOption {
public KarafDistributionConfigurationOption();
public KarafDistributionConfigurationOption(KarafDistributionBaseConfigurationOption base);
public KarafDistributionConfigurationOption(MavenUrlReference frameworkURLReference, String name, String karafVersion);
public KarafDistributionConfigurationOption(String frameworkURL, String name, String karafVersion);
}Platform-specific distribution configuration for Karaf kit deployments with executable script management.
/**
* Kit-based distribution configuration with platform-specific script handling
*/
class KarafDistributionKitConfigurationOption extends KarafDistributionBaseConfigurationOption {
// Platform enumeration
enum Platform {
WINDOWS, NIX
}
// Constructors
public KarafDistributionKitConfigurationOption(KarafDistributionBaseConfigurationOption base, Platform platform);
public KarafDistributionKitConfigurationOption(MavenUrlReference frameworkURLReference, String name, String karafVersion, Platform platform);
public KarafDistributionKitConfigurationOption(MavenUrlReference frameworkURLReference, Platform platform);
public KarafDistributionKitConfigurationOption(String frameworkURL, String name, String karafVersion, Platform platform);
// Platform-specific methods
public KarafDistributionKitConfigurationOption filesToMakeExecutable(String... platformRelativeFilePath);
public KarafDistributionKitConfigurationOption executable(String platformRelativeFilePath);
public Platform getPlatform();
public List<String> getMakeExec();
public String getExec();
}Usage Examples:
// Windows kit configuration
Option windowsKit = new KarafDistributionKitConfigurationOption(
"mvn:org.apache.karaf/apache-karaf/4.2.0/zip",
"Apache Karaf",
"4.2.0",
KarafDistributionKitConfigurationOption.Platform.WINDOWS
)
.executable("bin/karaf.bat")
.filesToMakeExecutable("bin/start.bat", "bin/stop.bat");
// Unix/Linux kit configuration
Option nixKit = new KarafDistributionKitConfigurationOption(
"mvn:org.apache.karaf/apache-karaf/4.2.0/zip",
"Apache Karaf",
"4.2.0",
KarafDistributionKitConfigurationOption.Platform.NIX
)
.executable("bin/karaf")
.filesToMakeExecutable("bin/start", "bin/stop");Configuration methods throw IllegalStateException for:
Install with Tessl CLI
npx tessl i tessl/maven-org-ops4j-pax-exam--pax-exam-container-karaf