[ 
https://issues.apache.org/jira/browse/OOZIE-3125?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Attila Sasvari updated OOZIE-3125:
----------------------------------
    Attachment: OOZIE-3125-002.patch

> 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
>            Assignee: Attila Sasvari
>            Priority: Minor
>             Fix For: 5.0.0b1
>
>         Attachments: OOZIE-3125-001.patch, OOZIE-3125-002.patch
>
>
> 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)

Reply via email to