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)

Reply via email to