1 package org.opencv.osgi;
4 import javax.inject.Inject;
5 import junit.framework.TestCase;
6 import org.apache.karaf.log.core.LogService;
8 import org.junit.runner.RunWith;
9 import org.ops4j.pax.exam.Configuration;
10 import static org.ops4j.pax.exam.CoreOptions.maven;
11 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
12 import org.ops4j.pax.exam.Option;
13 import org.ops4j.pax.exam.junit.PaxExam;
14 import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
15 import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
16 import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
17 import org.ops4j.pax.exam.karaf.options.LogLevelOption;
18 import org.ops4j.pax.exam.options.MavenArtifactUrlReference;
19 import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
20 import org.ops4j.pax.exam.spi.reactors.PerClass;
21 import org.ops4j.pax.logging.spi.PaxLoggingEvent;
22 import org.osgi.framework.BundleContext;
26 * @author Kerry Billingham <contact@AvionicEngineers.com>
28 @ExamReactorStrategy(PerClass.class)
29 @RunWith(PaxExam.class)
30 public class DeployOpenCVTest {
33 The expected string in Karaf logs when the bundle has deployed and native library loaded.
35 private static final String OPENCV_SUCCESSFUL_LOAD_STRING = "Successfully loaded OpenCV native library.";
37 private static final String KARAF_VERSION = "4.0.6";
40 protected BundleContext bundleContext;
43 private LogService logService;
46 This service is required to ensure that the native library has been loaded
47 before any test is carried out.
50 private OpenCVInterface openCVInterface;
53 public static Option[] configuration() throws Exception {
54 MavenArtifactUrlReference karafUrl = maven()
55 .groupId("org.apache.karaf")
56 .artifactId("apache-karaf")
57 .version(KARAF_VERSION)
60 karafDistributionConfiguration()
61 .frameworkUrl(karafUrl)
62 .unpackDirectory(new File("../../../build/target/exam"))
63 .useDeployFolder(false),
66 .groupId("org.opencv")
69 logLevel(LogLevelOption.LogLevel.INFO)
74 * Tests that the OpenCV bundle has been successfully deployed and that the
75 * native library has been loaded.
78 public void testOpenCVNativeLibraryLoadSuccess() {
80 Iterable<PaxLoggingEvent> loggingEvents = logService.getEvents();
81 boolean loadSuccessful = logsContainsMessage(loggingEvents, OPENCV_SUCCESSFUL_LOAD_STRING);
83 TestCase.assertTrue("Could not determine if OpenCV library successfully loaded from the logs.", loadSuccessful);
87 private boolean logsContainsMessage(Iterable<PaxLoggingEvent> logEnumeration, final String logMessageString) {
88 boolean contains = false;
89 for (PaxLoggingEvent logEntry : logEnumeration) {
90 if (logEntry.getMessage().contains(logMessageString)) {