[ https://issues.apache.org/jira/browse/OOZIE-3125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16249713#comment-16249713 ]
Attila Sasvari commented on OOZIE-3125: --------------------------------------- We should make sure that in init() of JPAService {{sql.enforce_strict_size=true}} is set in the TestDBLoadDump tests. I tested from my debugger if I set {code} props.setProperty("openjpa.ConnectionProperties", "DriverClassName=org.hsqldb.jdbcDriver,Url=jdbc:hsqldb:mem:oozie-db;sql.enforce_strict_size=true;create=true,MaxActive=10,TestOnBorrow=false,TestOnReturn=false,TestWhileIdle=false, ") {code} before {{factory = Persistence.createEntityManagerFactory(persistentUnit, props)}} After reviewing {{XTestCase.java}}, it turns out tools tests use {{hsqld-oozie-site.xml}} from the core module, so we shouldsimply set "sql.enforce_strict_size=true" there. After this {{TestDBLoadDump.testImportInvalidDataLeavesTablesEmpty}} passes. > TestDBLoadDump.testImportInvalidDataLeavesTablesEmpty fails > ----------------------------------------------------------- > > Key: OOZIE-3125 > URL: https://issues.apache.org/jira/browse/OOZIE-3125 > Project: Oozie > Issue Type: Bug > Components: tests > Reporter: Attila Sasvari > Priority: Minor > Fix For: 5.0.0b1 > > > Running {{mvn test > -Dtest=TestDBLoadDump#testImportInvalidDataLeavesTablesEmpty}} results in a > test failure: > {code} > [ERROR] > TestDBLoadDump.testImportInvalidDataLeavesTablesEmpty:136->tryImportAndCheckPrematureExit:271 > import should have been ended prematurely > {code} > {{TestDBLoadDump.testImportInvalidDataLeavesTablesEmpty}} tests that > processing an invalid dump file results in transactions are rolled back and > tables are left unpopulated (empty). > {{tools/src/test/resources/dumpData/invalid/ooziedb_ac.json}} contains an > {{executionPath}} that consists of more than 1024 characters (2000). > {{OozieDBImportCLI.importOneInputFileToOneEntityTable}} deserialize the > WorkflowActionBean object from the JSON using {{final E newEntity = > gson.fromJson(line, entityClass);}} . However, persisting this object should > fail even because invariants (see {{@Column(name = "execution_path", length = > 1024)}} in {{WorkflowActionBean}}) do not hold. > In the setup method of TestDBLoadDump, {{setSqlStricEnforce()}} is used to > make sure strict size is enforced: > {code} > private void setSqlStrictEnforce(final EntityManager entityManager) { > final String sqlStrictEnforce = "SET PROPERTY > \"sql.enforce_strict_size\" TRUE"; > final EntityTransaction tx = entityManager.getTransaction(); > tx.begin(); > entityManager.createNativeQuery(sqlStrictEnforce).executeUpdate(); > tx.commit(); > } > {code} > However it does not seem to take effect. [HSQL db's > documentation|http://hsqldb.org/doc/guide/dbproperties-chapt.html] says: > {quote} > Management of properties has changed since version 1.8. The old SET PROPERTY > statement does not change a property and is ignored. The statement is > retained to simplify application upgrades. > {quote} > Running {{mvn dependency:tree}}, it turns out Oozie core uses 1.8.0.10 > {code} > [INFO] +- hsqldb:hsqldb:jar:1.8.0.10:compile > {code} > It is, however, strange that tests pass if running all the test cases in > TestDBLoadDump with {{mvn test -Dmaven.surefire.debug > -Dtest=TestDBLoadDump}}. In other words, tests are not independent of > execution order. > Looking at a successfull test execution in surefire-reports > ({{TEST-org.apache.oozie.tools.TestDBLoadDump.xml}}) : > {code} > <testcase name="testImportTablesOverflowBatchSize" > classname="org.apache.oozie.tools.TestDBLoadDump" time="25.362"/> > <testcase name="testImportToNonExistingTablesSucceedsOnHsqldb" > classname="org.apache.oozie.tools.TestDBLoadDump" time="0.559"/> > <testcase name="testImportInvalidDataLeavesTablesEmpty" > classname="org.apache.oozie.tools.TestDBLoadDump" time="0.708"/> > <testcase name="testImportToNonEmptyTablesCausesPrematureExit" > classname="org.apache.oozie.tools.TestDBLoadDump" time="1.066"/> > <testcase name="testImportedDBIsExportedCorrectly" > classname="org.apache.oozie.tools.TestDBLoadDump" time="1.135"/> > {code} > We shall make sure individual tests pass. As a first step, > {{TestDBLoadDump.testImportInvalidDataLeavesTablesEmpty}} is to be fixed. -- This message was sent by Atlassian JIRA (v6.4.14#64029)