@Test
    public void testTransactionManagement_success_transactionFailed() throws SQLException {
        Map<String, Object> jdbcConnConfig = new HashMap<String, Object>();
        jdbcConnConfig.put(JdbcConnectionFactory.CONFIG_DATASOURCE_FQCN, JdbcDataSource.class.getName());
        jdbcConnConfig.put(JdbcConnectionFactory.CONFIG_DATASOURCE_PROPERTIES + "URL", "jdbc:h2:test/" + PACKAGE_PATH + "test");
        jdbcConnConfig.put(JdbcConnectionFactory.CONFIG_DATASOURCE_PROPERTIES +"User", "sa");
        jdbcConnConfig.put(JdbcConnectionFactory.CONFIG_DATASOURCE_PROPERTIES +"Password", "sa");

        JdbcConnectionFactory jdbcConnectionFactory = new JdbcConnectionFactory();
        jdbcConnectionFactory.initialize(jdbcConnConfig);

        DefaultTrnExecutor defaultTrnExecutor = new DefaultTrnExecutor();
        Map<String, Object> trnExecutorConfigMap = new HashMap<String, Object>();
        trnExecutorConfigMap.put(DefaultTrnExecutor.CONFIG_RESOURCE_FACTORY, jdbcConnectionFactory);
        defaultTrnExecutor.initialize(trnExecutorConfigMap);

        defaultTrnExecutor.execute(new TrnAction() {
            @Override
            public void run() {
                TrnResource trnResource = TrnResourceRegistry.peekCurrentTrnResource();
                Connection connection = trnResource.getRawResource();
                PreparedStatement preparedStatement = DataSourceUtil.createPreparedStatement(connection,
                        "CREATE TABLE hogehoge(num INT)");
                TestDataSourceUtil.execute(preparedStatement);
            }
        });

        defaultTrnExecutor.execute(new TrnAction() {
            @Override
            public void run() {
                TrnResource trnResource = TrnResourceRegistry.peekCurrentTrnResource();
                Connection connection = trnResource.getRawResource();
                {
                    PreparedStatement preparedStatement = DataSourceUtil.createPreparedStatement(connection,
                            "INSERT INTO hogehoge(num) VALUES(1),(2)");
                    TestDataSourceUtil.execute(preparedStatement);
                }
                {
                    // failure
                    PreparedStatement preparedStatement = DataSourceUtil.createPreparedStatement(connection,
                            "INSERT INTO piyopiyo(num) VALUES(1),(2)");
                    TestDataSourceUtil.execute(preparedStatement);
                }
            }
        });

        TrnResource resource = jdbcConnectionFactory.createResource();
        Connection connection = resource.getRawResource();
        ResultSet resultSet = TestDataSourceUtil.select(connection, "SELECT COUNT(num) FROM hogehoge");
        resultSet.next();
        assertThat(resultSet.getInt(1), is(0));
    }