/* * Copyright (C) 2010 Toni Menzel * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.ops4j.pax.exam.regression.plumbing; import java.io.IOException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.ops4j.pax.exam.ExamSystem; import org.ops4j.pax.exam.Option; import org.ops4j.pax.exam.TestAddress; import org.ops4j.pax.exam.TestContainer; import org.ops4j.pax.exam.TestProbeBuilder; import org.ops4j.pax.exam.TestProbeProvider; import org.ops4j.pax.exam.spi.PaxExamRuntime; import static org.ops4j.pax.exam.CoreOptions.*; import static org.ops4j.pax.exam.regression.plumbing.RegressionConfiguration.regressionDefaults; import static org.ops4j.pax.exam.spi.PaxExamRuntime.*; /** * */ public class BareAPITest { @Test public void bareRunTest() throws Exception { Option[] options = new Option[] { regressionDefaults(), mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.junit", "4.9_2"), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("DEBUG"), }; ExamSystem system = createTestSystem(options); TestProbeProvider p = makeProbe(system); // the parse will split all single containers for (TestContainer testContainer : getTestContainerFactory().create(system)) { try { testContainer.start(); testContainer.install(p.getStream()); for (TestAddress test : p.getTests()) { testContainer.call(test); } } catch (Exception e) { e.printStackTrace(); } finally { testContainer.stop(); } } system.clear(); } @Test public void singleStepTest() throws Exception { Option[] options = new Option[] { mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.junit", "4.9_2"), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("DEBUG") }; ExamSystem system = createTestSystem(options); TestProbeProvider p = makeProbe(system); TestContainer[] containers = PaxExamRuntime.getTestContainerFactory().create(system); for (TestContainer testContainer : containers) { testContainer.start(); } try { for (TestContainer testContainer : containers) { testContainer.install(p.getStream()); } for (TestContainer testContainer : containers) { for (TestAddress test : p.getTests()) { testContainer.call(test); } } } catch (Exception e) { e.printStackTrace(); } finally { for (TestContainer testContainer : containers) { testContainer.stop(); } } } private TestProbeProvider makeProbe(ExamSystem system) throws IOException { TestProbeBuilder probe = system.createProbe(); probe.addTests(SingleTestProbe.class, getAllMethods(SingleTestProbe.class)); return probe.build(); } private Method[] getAllMethods(Class<?> c) { List<Method> methods = new ArrayList<Method>(); for (Method m : c.getDeclaredMethods()) { if (m.getModifiers() == Modifier.PUBLIC) { methods.add(m); } } return methods.toArray(new Method[methods.size()]); } }