/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.test.cache.infinispan.util; import org.infinispan.test.fwk.TestResourceTracker; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; /** * Infinispan testing utilities take great care to verify isolation between concurrent tests * and resource teardown. * These utilities need to be integrated with the test lifecycle; use this as a Rule as one * way to achieve that integration. * * @author Sanne Grinovero */ public final class InfinispanTestingSetup implements TestRule { private volatile String runningTest; public InfinispanTestingSetup() { } public Statement apply(Statement base, Description d) { final String methodName = d.getMethodName(); final String testName = methodName == null ? d.getClassName() : d.getClassName() + "#" + d.getMethodName(); runningTest = testName; return new Statement() { @Override public void evaluate() throws Throwable { TestResourceTracker.testStarted( testName ); try { base.evaluate(); } finally { TestResourceTracker.testFinished( testName ); } } }; } public void joinContext() { TestResourceTracker.setThreadTestName( runningTest ); } }