X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-it-base%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fit%2Fbase%2FAbstractConfigTestBase.java;fp=opendaylight%2Fconfig%2Fconfig-it-base%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fit%2Fbase%2FAbstractConfigTestBase.java;h=e581e502477a7d5bf58f451ba5fb9f8d99c7a5bb;hp=0000000000000000000000000000000000000000;hb=bc99ff03ddcba2ceff83fd1ebba68731f39c864b;hpb=e9bf41afa2413cc4574a7ac97a55f2cb6c2de6b2 diff --git a/opendaylight/config/config-it-base/src/main/java/org/opendaylight/controller/config/it/base/AbstractConfigTestBase.java b/opendaylight/config/config-it-base/src/main/java/org/opendaylight/controller/config/it/base/AbstractConfigTestBase.java new file mode 100644 index 0000000000..e581e50247 --- /dev/null +++ b/opendaylight/config/config-it-base/src/main/java/org/opendaylight/controller/config/it/base/AbstractConfigTestBase.java @@ -0,0 +1,173 @@ +package org.opendaylight.controller.config.it.base; + +import static org.ops4j.pax.exam.CoreOptions.maven; +import static org.ops4j.pax.exam.CoreOptions.when; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration; +import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder; + +import com.google.common.base.Stopwatch; + +import java.io.File; +import java.lang.management.ManagementFactory; +import java.util.concurrent.TimeUnit; + +import javax.management.ObjectName; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.internal.AssumptionViolatedException; +import org.junit.rules.TestRule; +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; +import org.opendaylight.controller.config.api.ConfigRegistry; +import org.opendaylight.controller.config.util.ConfigRegistryJMXClient; +import org.ops4j.pax.exam.Configuration; +import org.ops4j.pax.exam.Option; +import org.ops4j.pax.exam.karaf.options.KarafDistributionOption; +import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel; +import org.ops4j.pax.exam.options.MavenArtifactUrlReference; +import org.ops4j.pax.exam.options.MavenUrlReference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public abstract class AbstractConfigTestBase { + + private static final String PAX_EXAM_UNPACK_DIRECTORY = "target/exam"; + private static final String KARAF_DEBUG_PORT = "5005"; + private static final String KARAF_DEBUG_PROP = "karaf.debug"; + private static final String KEEP_UNPACK_DIRECTORY_PROP = "karaf.keep.unpack"; + private static final Logger LOG = LoggerFactory.getLogger(AbstractConfigTestBase.class); + public static final String ORG_OPS4J_PAX_LOGGING_CFG = "etc/org.ops4j.pax.logging.cfg"; + + /* + * Default values for karaf distro version, type, groupId, and artifactId + */ + private static final String KARAF_DISTRO_VERSION = "3.0.2"; + private static final String KARAF_DISTRO_TYPE = "zip"; + private static final String KARAF_DISTRO_ARTIFACTID = "apache-karaf"; + private static final String KARAF_DISTRO_GROUPID = "org.apache.karaf"; + + /* + * Property names to override defaults for karaf distro artifactId, groupId, version, and type + */ + private static final String KARAF_DISTRO_VERSION_PROP = "karaf.distro.version"; + private static final String KARAF_DISTRO_TYPE_PROP = "karaf.distro.type"; + private static final String KARAF_DISTRO_ARTIFACTID_PROP = "karaf.distro.artifactId"; + private static final String KARAF_DISTRO_GROUPID_PROP = "karaf.distro.groupId"; + + /* + * Wait up to 10s for our configured module to come up + */ + private static final int MODULE_TIMEOUT_MILLIS = 60000; + + public abstract String getModuleName(); + + public abstract String getInstanceName(); + + public abstract MavenUrlReference getFeatureRepo(); + + public abstract String getFeatureName(); + + public Option getLoggingOption() { + Option option = editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG, + logConfiguration(AbstractConfigTestBase.class), + LogLevel.INFO.name()); + return option; + } + + public String logConfiguration(Class klazz) { + return "log4j.logger." + klazz.getPackage().getName(); + } + + public String getKarafDistro() { + String groupId = System.getProperty(KARAF_DISTRO_GROUPID_PROP,KARAF_DISTRO_GROUPID); + String artifactId = System.getProperty(KARAF_DISTRO_ARTIFACTID_PROP,KARAF_DISTRO_ARTIFACTID); + String version = System.getProperty(KARAF_DISTRO_VERSION_PROP,KARAF_DISTRO_VERSION); + String type = System.getProperty(KARAF_DISTRO_TYPE_PROP,KARAF_DISTRO_TYPE); + MavenArtifactUrlReference karafUrl = maven() + .groupId(groupId) + .artifactId(artifactId) + .version(version) + .type(type); + return karafUrl.getURL(); + } + + @Configuration + public Option[] config() { + Option[] options = new Option[] { + when(Boolean.getBoolean(KARAF_DEBUG_PROP)) + .useOptions(KarafDistributionOption.debugConfiguration(KARAF_DEBUG_PORT, true)), + karafDistributionConfiguration().frameworkUrl(getKarafDistro()) + .unpackDirectory(new File(PAX_EXAM_UNPACK_DIRECTORY)) + .useDeployFolder(false), + when(Boolean.getBoolean(KEEP_UNPACK_DIRECTORY_PROP)).useOptions(keepRuntimeFolder()), + features(getFeatureRepo(), getFeatureName()), + getLoggingOption()}; + return options; + } + + @Before + public void setup() throws Exception { + LOG.info("Module: {} Instance: {} attempting to configure.", + getModuleName(),getInstanceName()); + Stopwatch stopWatch = Stopwatch.createStarted(); + ObjectName objectName = null; + for(int i = 0;i