@Test
  public void testBlockingTimeOut() throws Exception {
    Context jndiContext = cache.getJNDIContext();
    DataSource dataSource = (DataSource) jndiContext.lookup("java:/XAPooledDataSource");
    UserTransaction utx = (UserTransaction) jndiContext.lookup("java:/UserTransaction");
    utx.begin();
    dataSource.getConnection();

    // sleep longer than the blocking timeout (nothing exposed to await on)
    Thread.sleep(Duration.ofSeconds(BLOCKING_TIMEOUT_SECONDS * 2).toMillis());

    Throwable thrown = catchThrowable(utx::commit);

    // NOTE: XAException is double-wrapped in SystemException (probably unintentional)
    assertThat(thrown)
        .isInstanceOf(SystemException.class);
    assertThat(thrown.getCause())
        .isInstanceOf(SystemException.class)
        .hasCauseInstanceOf(XAException.class)
        .hasMessageContaining("No current connection");
  }
Fixed up (best as possible) and re-enabled JTA tests from ExceptionsDUnitTest. Treat these as
characterization tests because I think some of this behavior is not strictly correct.
geode-core/src/integrationTest/java/org/apache/geode/internal/jta/TransactionTimeoutExceptionIntegrationTest.java