<!--
 ! Copyright 2009-2013 by The Regents of the University of California
 ! Licensed under the Apache License, Version 2.0 (the "License");
 ! you may not use this file except in compliance with the License.
 ! you may obtain a copy of the License from
 ! 
 !     http://www.apache.org/licenses/LICENSE-2.0
 ! 
 ! Unless required by applicable law or agreed to in writing, software
 ! distributed under the License is distributed on an "AS IS" BASIS,
 ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 ! See the License for the specific language governing permissions and
 ! limitations under the License.
 !-->
<test-suite xmlns="urn:xml.testframework.asterix.ics.uci.edu" ResultOffsetPath="results" QueryOffsetPath="queries" QueryFileExtension=".aql">
 
  <test-group name="recover_after_abort">

    <test-case FilePath="recover_after_abort">
      <compilation-unit name="primary_index_only">
        <output-dir compare="Text">primary_index_only</output-dir>
      </compilation-unit>
    </test-case>

    <test-case FilePath="recover_after_abort">
      <compilation-unit name="primary_plus_default_secondary_index">
        <output-dir compare="Text">primary_plus_default_secondary_index</output-dir>
      </compilation-unit>
    </test-case>

    <test-case FilePath="recover_after_abort">
      <compilation-unit name="primary_plus_rtree_index">
        <output-dir compare="Text">primary_plus_rtree_index</output-dir>
      </compilation-unit>
    </test-case>
     
    <test-case FilePath="recover_after_abort">
      <compilation-unit name="primary_plus_keyword_secondary_index">
        <output-dir compare="Text">primary_plus_keyword_secondary_index</output-dir>
      </compilation-unit>
    </test-case>
      
    <test-case FilePath="recover_after_abort">
      <compilation-unit name="primary_plus_ngram_index">
        <output-dir compare="Text">primary_plus_ngram_index</output-dir>
      </compilation-unit>
    </test-case>
 
	<test-case FilePath="recover_after_abort">
      <compilation-unit name="primary_plus_multiple_secondary_indices">
        <output-dir compare="Text">primary_plus_multiple_secondary_indices</output-dir>
      </compilation-unit>
    </test-case>
  
 </test-group>

 <test-group name="recovery_ddl">
    
    <test-case FilePath="recovery_ddl">
      <compilation-unit name="dataverse_recovery">
        <output-dir compare="Text">dataverse_recovery</output-dir>
      </compilation-unit>
    </test-case>

    <test-case FilePath="recovery_ddl">
      <compilation-unit name="datatype_recovery">
        <output-dir compare="Text">datatype_recovery</output-dir>
      </compilation-unit>
    </test-case>
    
    <test-case FilePath="recovery_ddl">
      <compilation-unit name="dataset_recovery">
        <output-dir compare="Text">dataset_recovery</output-dir>
      </compilation-unit>
    </test-case>
    
    <test-case FilePath="recovery_ddl">
      <compilation-unit name="secondary_index_recovery">
        <output-dir compare="Text">secondary_index_recovery</output-dir>
      </compilation-unit>
    </test-case>
  
    <test-case FilePath="recovery_ddl">
      <compilation-unit name="load_after_recovery">
        <output-dir compare="Text">load_after_recovery</output-dir>
      </compilation-unit>
    </test-case>
    
    <test-case FilePath="recovery_ddl">
      <compilation-unit name="insert_after_recovery">
        <output-dir compare="Text">insert_after_recovery</output-dir>
      </compilation-unit>
    </test-case>

    <test-case FilePath="recovery_ddl">
      <compilation-unit name="delete_after_recovery">
        <output-dir compare="Text">delete_after_recovery</output-dir>
      </compilation-unit>
    </test-case>
    
    <test-case FilePath="recovery_ddl">
      <compilation-unit name="function_recovery">
        <output-dir compare="Text">function_recovery</output-dir>
      </compilation-unit>
    </test-case>
 
  </test-group>


</test-suite>
