/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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.jbpm.test.util; import static org.junit.Assert.assertEquals; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import org.drools.core.impl.KnowledgeBaseImpl; import org.jbpm.process.instance.impl.util.LoggingPrintStream; import org.jbpm.process.test.TestProcessEventListener; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.rules.TestName; import org.kie.api.definition.process.Process; import org.kie.api.runtime.KieSession; import org.kie.internal.KnowledgeBase; import org.kie.internal.KnowledgeBaseFactory; import org.slf4j.Logger; public abstract class AbstractBaseTest { protected Logger logger; @Rule public TestName name = new TestName(); @Before public void before() { addLogger(); logger.debug( "> " + name.getMethodName() ); } public abstract void addLogger(); protected static AtomicInteger uniqueIdGen = new AtomicInteger(0); public KieSession createKieSession(Process... process) { KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); for (Process processToAdd : process) { ((KnowledgeBaseImpl) kbase).addProcess(processToAdd); } return kbase.newStatefulKnowledgeSession(); } public void showEventHistory(KieSession ksession) { TestProcessEventListener procEventListener = (TestProcessEventListener) ksession.getProcessEventListeners().iterator().next(); for (String event : procEventListener.getEventHistory()) { System.out.println("\"" + event + "\","); } } public void verifyEventHistory(String[] eventOrder, List<String> eventHistory) { int max = eventOrder.length > eventHistory.size() ? eventOrder.length : eventHistory.size(); logger.debug("{} | {}", "EXPECTED", "TEST" ); for (int i = 0; i < max; ++i) { String expected = "", real = ""; if (i < eventOrder.length) { expected = eventOrder[i]; } if (i < eventHistory.size()) { real = eventHistory.get(i); } logger.debug("{} | {}", expected, real); assertEquals("Mismatch in expected event", expected, real); } assertEquals("Mismatch in number of events expected.", eventOrder.length, eventHistory.size()); } @BeforeClass public static void configure() { LoggingPrintStream.interceptSysOutSysErr(); } @AfterClass public static void reset() { LoggingPrintStream.resetInterceptSysOutSysErr(); } }