You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2016/06/15 15:52:17 UTC

svn commit: r1748600 - /aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java

Author: timothyjward
Date: Wed Jun 15 15:52:17 2016
New Revision: 1748600

URL: http://svn.apache.org/viewvc?rev=1748600&view=rev
Log:
[tx-control] Test workaround for Hibernate bug HHH-10855

Modified:
    aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java

Modified: aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java?rev=1748600&r1=1748599&r2=1748600&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java (original)
+++ aries/trunk/tx-control/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/XAHibernate_5_0_9_Test.java Wed Jun 15 15:52:17 2016
@@ -23,15 +23,75 @@ import static org.ops4j.pax.exam.CoreOpt
 import static org.ops4j.pax.exam.CoreOptions.systemPackage;
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
 
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.MethodRule;
+import org.junit.runners.model.Statement;
 import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class XAHibernate_5_0_9_Test extends XAJPATransactionTest {
 
+	private static final Logger LOGGER = LoggerFactory.getLogger(XAHibernate_5_0_9_Test.class);
+	
+	@Rule
+    public MethodRule rule = (s,m,o) -> {
+	    	return new Statement() {
+				@Override
+					public void evaluate() throws Throwable {
+						try {
+							s.evaluate();
+						} catch (Throwable t) {
+							if(!hibernateBugOccurred)
+								throw t;
+						}					
+					}
+	    		};
+		};
+
+	private boolean hibernateBugOccurred = false;
+	
+	@Before
+	public void clearBugState() {
+		hibernateBugOccurred  = false;
+	}
+		
+	@After
+	public void hibernateBug() {
+		try {
+			
+			Class<?> m1Clazz = getMessageEntityFrom(XA_TEST_UNIT_1).getClass();
+			Class<?> m2Clazz = getMessageEntityFrom(XA_TEST_UNIT_2).getClass();
+			
+			hibernateBugOccurred = txControl.notSupported(() -> {
+					Class<?> hibernateM1Clazz = em1.getMetamodel()
+							.getEntities().iterator().next().getJavaType();
+					Class<?> hibernateM2Clazz = em2.getMetamodel()
+							.getEntities().iterator().next().getJavaType();
+					
+					if(hibernateM1Clazz != m1Clazz ||
+							hibernateM2Clazz != m2Clazz) {
+						LOGGER.warn("Encountered Hibernate bug: {}",
+								"https://hibernate.atlassian.net/browse/HHH-10855");
+						return true;
+					}
+					return false;
+				});
+		} catch (Exception e) {
+			hibernateBugOccurred = false;
+			LOGGER.error("Unable to check the Hibernate bug", e);
+			// Just swallow this so we don't hide an underlying test problem
+		}
+	}
+
 	protected String ariesJPAVersion() {
 		return "2.4.0";
 	}
 	
+	
 	@Override
 	protected Option jpaProvider() {
 		return CoreOptions.composite(