<!--
 ! 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>
