<!--
 ! 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_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="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-group>
</test-suite>
