Attila Sasvari created OOZIE-3125: ------------------------------------- Summary: 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)