or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration-management.mddistribution-configuration.mdfeature-management.mdindex.mdruntime-configuration.mdsecurity-console.md
tile.json

tessl/maven-org-ops4j-pax-exam--pax-exam-container-karaf

Integration testing framework for OSGi applications running in Apache Karaf containers

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.ops4j.pax.exam/pax-exam-container-karaf@4.14.x

To install, run

npx @tessl/cli install tessl/maven-org-ops4j-pax-exam--pax-exam-container-karaf@4.14.0

index.mddocs/

Pax Exam Container Karaf

A 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.

Package Information

  • Package Name: pax-exam-container-karaf
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>org.ops4j.pax.exam</groupId>
      <artifactId>pax-exam-container-karaf</artifactId>
      <version>4.14.0</version>
      <scope>test</scope>
    </dependency>

Core Imports

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;

Basic Usage

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
    }
}

Architecture

Pax Exam Container Karaf is built around several key components:

  • Distribution Configuration: Setup and configuration of Karaf distributions (KarafDistributionOption)
  • Configuration File Management: Modification of Karaf configuration files during test setup
  • Feature Management: Installation and configuration of Karaf features
  • Runtime Control: Control over Karaf container lifecycle and runtime behavior
  • Option Pattern: Fluent configuration API using the Pax Exam Option pattern

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.

Capabilities

Distribution Configuration

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);

Distribution Configuration

Configuration File Management

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);

Configuration Management

Feature Management

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);

Feature Management

Runtime Configuration

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();

Runtime Configuration

Security and Console Configuration

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();

Security and Console

Library-Specific Options

Options for controlling default library behavior and overriding standard deployments.

// Override default JUnit bundle deployment
public static OverrideJUnitBundlesOption overrideJUnitBundles();

Key Types

// 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 {
}