<!--
 ! 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.
 !-->
<asterixConfiguration xmlns="asterixconf">
  <metadataNode>asterix_nc1</metadataNode>
  <store>
    <ncId>asterix_nc1</ncId>
    <storeDirs>iodevice0,iodevice1</storeDirs>
  </store>
  <store>
    <ncId>asterix_nc2</ncId>
    <storeDirs>iodevice0,iodevice1</storeDirs>
  </store>
  <transactionLogDir>
    <ncId>asterix_nc1</ncId>
    <txnLogDirPath>target/txnLogDir/asterix_nc1</txnLogDirPath>
  </transactionLogDir>
  <transactionLogDir>
    <ncId>asterix_nc2</ncId>
    <txnLogDirPath>target/txnLogDir/asterix_nc2</txnLogDirPath>
  </transactionLogDir>
  <extensions>
    <extension>
      <extensionClassName>org.apache.asterix.bad.lang.BADQueryTranslatorExtension</extensionClassName>
    </extension>
    <extension>
      <extensionClassName>org.apache.asterix.bad.lang.BADLangExtension</extensionClassName>
    </extension>
    <extension>
      <extensionClassName>org.apache.asterix.bad.metadata.BADMetadataExtension</extensionClassName>
    </extension>
  </extensions>
  <property>
    <name>max.wait.active.cluster</name>
    <value>60</value>
    <description>Maximum wait (in seconds) for a cluster to be ACTIVE (all
      nodes are available)
      before a submitted query/statement can be
      executed. (Default = 60 seconds)
    </description>
  </property>
  <property>
    <name>log.level</name>
    <value>WARNING</value>
    <description>Log level for running tests/build</description>
  </property>
  <property>
    <name>compiler.framesize</name>
    <value>32KB</value>
  </property>
  <property>
    <name>compiler.sortmemory</name>
    <value>640KB</value>
  </property>
  <property>
    <name>compiler.groupmemory</name>
    <value>640KB</value>
  </property>
  <property>
    <name>compiler.joinmemory</name>
    <value>640KB</value>
  </property>
  <property>
    <name>compiler.pregelix.home</name>
    <value>~/pregelix</value>
  </property>
  <property>
    <name>storage.buffercache.pagesize</name>
    <value>32768</value>
    <description>The page size in bytes for pages in the buffer cache.
      (Default = "32768" // 32KB)
    </description>
  </property>
  <property>
    <name>storage.buffercache.size</name>
    <value>33554432</value>
    <description>The size of memory allocated to the disk buffer cache.
      The value should be a multiple of the buffer cache page size(Default
      = "33554432" // 32MB)
    </description>
  </property>
  <property>
    <name>storage.memorycomponent.numpages</name>
    <value>8</value>
    <description>The number of pages to allocate for a memory component.
      (Default = 8)
    </description>
  </property>
  <property>
    <name>plot.activate</name>
    <value>false</value>
    <description>Enabling plot of Algebricks plan to tmp folder. (Default = false)
    </description>
  </property>
</asterixConfiguration>
