Модульное тестирование кросс-групповой транзакции XG в App Engine Java JDO

У меня есть межгрупповая транзакция в движке приложения java jdo.

Он отлично работает на локальном сервере механизма разработки приложений.

Однако при модульном тестировании я получаю java.lang.IllegalArgumentException: транзакции в нескольких группах сущностей разрешены только в приложениях с высоким уровнем репликации.

Можно ли смоделировать приложение с высоким уровнем репликации с помощью LocalServiceTestHelper?

Я использую 1.6.6.

Вот мой класс, вы можете запустить его как есть, чтобы воспроизвести:

public class Ds2Test {

    private final LocalServiceTestHelper helper =
            new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());

    private static final PersistenceManagerFactory pmfXgInstance =
            JDOHelper.getPersistenceManagerFactory("xg-transactions");

        @Before
        public void setUp() {
            helper.setUp();
        }

        @After
        public void tearDown() {
            helper.tearDown();
        }

        @Test
        public void testXgTransaction() throws Exception {
            PersistenceManager xgPm = pmfXgInstance.getPersistenceManager();
            Transaction xgTx = xgPm.currentTransaction();
            xgTx.begin();

            xgTx.commit();
            xgPm.close();
        }
}

А вот конфигурация в jdoconfig.xml:

   <persistence-manager-factory name="xg-transactions">
       <property name="javax.jdo.PersistenceManagerFactoryClass"
           value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
       <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
       <property name="javax.jdo.option.NontransactionalRead" value="true"/>
       <property name="javax.jdo.option.NontransactionalWrite" value="true"/>
       <property name="javax.jdo.option.RetainValues" value="true"/>
       <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
       <property name="datanucleus.appengine.datastoreEnableXGTransactions" value="true"/>
   </persistence-manager-factory>

Исключение выдается xgTx.begin();

6
задан Patrick 30 May 2012 в 07:49
поделиться