<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you 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 at
 !
 !   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.apache.org" ResultOffsetPath="results" QueryOffsetPath="queries_sqlpp"
            QueryFileExtension=".sqlpp">
  <test-group name="replication">
    <test-case FilePath="replication">
      <compilation-unit name="add_replica">
        <output-dir compare="Text">add_replica</output-dir>
      </compilation-unit>
    </test-case>
    <test-case FilePath="replication">
      <compilation-unit name="metadata_failover">
        <output-dir compare="Text">metadata_failover</output-dir>
      </compilation-unit>
    </test-case>
    <test-case FilePath="replication">
      <compilation-unit name="bulkload">
        <output-dir compare="Text">bulkload</output-dir>
      </compilation-unit>
    </test-case>
    <test-case FilePath="replication">
      <compilation-unit name="mem_component_recovery">
        <output-dir compare="Text">mem_component_recovery</output-dir>
      </compilation-unit>
    </test-case>
    <test-case FilePath="replication">
      <compilation-unit name="flushed_component">
        <output-dir compare="Text">flushed_component</output-dir>
      </compilation-unit>
    </test-case>
    <test-case FilePath="replication">
      <compilation-unit name="release_partition">
        <output-dir compare="Text">release_partition</output-dir>
      </compilation-unit>
    </test-case>
    <!-- Replication with compression -->
    <test-case FilePath="replication">
      <compilation-unit name="flushed_component_compressed">
        <output-dir compare="Text">bulkload</output-dir>
      </compilation-unit>
    </test-case>
    <test-case FilePath="replication">
      <compilation-unit name="bulkload_with_compression">
        <output-dir compare="Text">bulkload</output-dir>
      </compilation-unit>
    </test-case>
  </test-group>
</test-suite>