Я пишу некоторые Arquillian (с усадочной) тесты, и им в настоящее время с помощью JPA 2.1 создавать и удалять автоматизацию с помощью скриптов, с помощью persistence.xml:JPA 2.1 Выполнение сценария падения из persistence.xml с Arquillian & Розничной
// src/test/resources-wildfly-remote/test-persistence.xml
// runs fine, configured as resource in pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="testPU" transaction-type="JTA">
<!-- Wildfly JPA specific implementation config -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>java:/jdbc/Test</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="javax.persistence.schema-generation.database.action"
value="drop-and-create" />
<property name="javax.persistence.schema-generation.create-source"
value="script" />
<property name="javax.persistence.schema-generation.drop-source"
value="script" />
<property name="javax.persistence.schema-generation.create-script-source"
value="META-INF/create-test.sql" />
<property name="javax.persistence.schema-generation.drop-script-source"
value="META-INF/drop-test.sql" />
</properties>
</persistence-unit>
</persistence>
Arquillian ж/Упаковочная сниппет: соответствующая структура
// src/test/java/com/example/MyTest.java
@Deployment
@TargetsContainer("wildfly")
public static Archive<?> createDeployment() {
return ShrinkWrap
.create(WebArchive.class, "test.war")
.addAsResource("create-test.sql", "META-INF/create-test.sql")
.addAsResource("drop-test.sql", "META-INF/drop-test.sql")
.addAsResource("test-persistence.xml",
"META-INF/persistence.xml")
.addAsWebInfResource("example-ds.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
}
проекта:
--project
--src/test
--java
--com/example/MyTest.java
--resources
--create-test.sql
--drop-test.sql
--example-ds.xml
--resources-wildfly-remote
--test-persistence.xml
Тестирование и создание скриптов выполняется нормально, но капли не происходит, есть ли у кого такая же проблема?
EDIT (журнал добавлено):
// log snippet discriminating that the drop command wasnt executed
2015-01-08 15:36:21,781 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table1]
2015-01-08 15:36:21,781 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table2]
2015-01-08 15:36:21,781 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table3]
2015-01-08 15:36:21,791 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table4]
2015-01-08 15:36:21,791 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table5]
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table6]
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table7]
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table8]
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table9]
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table10]
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table11]
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table12]
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table13]
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table14]
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table15]
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table16]
2015-01-08 15:36:21,821 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table17]
Я буду стараться, любой шаг вперед, сообщим здесь.
EDIT ручной сценарий exection в методе испытания @After:
protected static void dropAllTables(UserTransaction utx, EntityManager em)
throws SystemException {
// Temporary solution for table dropping after tests
try {
InputStream fis = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("META-INF/drop-teste.sql");
StringBuilder builder = new StringBuilder();
int ch;
while ((ch = fis.read()) != -1) {
builder.append((char) ch);
}
String[] dropCommands = builder.toString().split(";");
utx.begin();
for (String command : dropCommands) {
em.createNativeQuery(command).executeUpdate();
}
utx.commit();
} catch (Exception e) {
utx.rollback();
}
}
Привет Grzesiek, Странным является то, что я использую тот же самый сценарий, чтобы удалить таблицы, я даже выполняя падение команд вручную, чтение файла, как временное решение, я отредактирую вопрос с помощью фрагмента. – vcorrea
Что касается ошибок ограничения, которые уже натолкнулись на него, так как я выполнял его вручную и исправлял. Во всяком случае, thnx для двойной проверки:) – vcorrea
О, и для сценария капли, его можно писать как можно проще, например: 'DROP TABLE table1; DROP TABLE table2; ... ' – vcorrea