Integration testing framework for OSGi applications running in Apache Karaf containers
npx @tessl/cli install tessl/maven-org-ops4j-pax-exam--pax-exam-container-karaf@4.14.0A specialized container implementation for the Pax Exam testing framework, specifically designed for testing OSGi applications within Apache Karaf environments. This library enables developers to write integration tests that can launch, configure, and interact with Karaf instances programmatically, allowing for comprehensive testing of OSGi bundles, features, and configurations in a controlled environment.
<dependency>
<groupId>org.ops4j.pax.exam</groupId>
<artifactId>pax-exam-container-karaf</artifactId>
<version>4.14.0</version>
<scope>test</scope>
</dependency>import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.*;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.karaf.options.KarafDistributionBaseConfigurationOption;
import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;import static org.ops4j.pax.exam.CoreOptions.*;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.*;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(PaxExam.class)
public class BasicKarafTest {
@Configuration
public Option[] config() {
return new Option[] {
// Configure Karaf distribution
karafDistributionConfiguration()
.frameworkUrl("mvn:org.apache.karaf/apache-karaf/4.2.0/zip")
.karafVersion("4.2.0")
.name("Apache Karaf"),
// Set log level
logLevel(LogLevel.INFO),
// Install features
features("mvn:org.apache.karaf.features/standard/4.2.0/xml/features",
"scr", "http"),
// Keep runtime folder for debugging
keepRuntimeFolder()
};
}
@Test
public void testKarafContainer() {
// Your test logic here
}
}Pax Exam Container Karaf is built around several key components:
KarafDistributionOption)The library integrates seamlessly with the Pax Exam testing framework, providing Karaf-specific options that can be combined with standard Pax Exam options for comprehensive OSGi integration testing.
Core functionality for setting up and configuring Karaf distributions for testing, including framework URL specification, version management, and runtime behavior control.
// Primary entry point for distribution configuration
public static KarafDistributionBaseConfigurationOption karafDistributionConfiguration();
public static KarafDistributionBaseConfigurationOption karafDistributionConfiguration(
String frameworkURL, String name, String karafVersion);Comprehensive system for modifying Karaf configuration files during test setup, supporting put, extend, and replace operations on any configuration file.
// Configuration file modification operations
public static Option editConfigurationFilePut(String configurationFilePath, String key, Object value);
public static Option editConfigurationFileExtend(String configurationFilePath, String key, Object value);
public static Option replaceConfigurationFile(String configurationFilePath, File source);Installation and configuration of Karaf features from repositories, enabling comprehensive testing of feature-based OSGi applications.
// Feature installation from repositories
public static KarafFeaturesOption features(String repositoryUrl, String... features);
public static KarafFeaturesOption features(UrlReference repositoryUrl, String... features);Control over Karaf container runtime behavior including logging, debugging, console access, and system-level configuration.
// Runtime control options
public static Option keepRuntimeFolder();
public static Option logLevel(LogLevel logLevel);
public static Option debugConfiguration();
public static Option doNotModifyLogConfiguration();Configuration of Karaf security features and console access, including JMX RBAC security and remote shell configuration.
// Console and security configuration
public static KarafDistributionConfigurationConsoleOption configureConsole();
public static KarafDistributionConfigurationSecurityOption configureSecurity();Options for controlling default library behavior and overriding standard deployments.
// Override default JUnit bundle deployment
public static OverrideJUnitBundlesOption overrideJUnitBundles();// Core option types
interface Option {
// Marker interface for all Pax Exam options
}
// Log level enumeration
enum LogLevel {
TRACE, DEBUG, INFO, WARN, ERROR
}
// Configuration pointer for type-safe configuration
class ConfigurationPointer {
public ConfigurationPointer(String configurationFilePath, String key);
public String getConfigurationFilePath();
public String getKey();
}
// Library-specific option for overriding JUnit bundles
class OverrideJUnitBundlesOption implements Option {
}