<!--
 ! 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>nc1</metadataNode>
	<store>
		<ncId>nc1</ncId>
		<storeDirs>nc1data</storeDirs>
	</store>
	<store>
		<ncId>nc2</ncId>
		<storeDirs>nc2data</storeDirs>
	</store>
	<transactionLogDir>
		<ncId>nc1</ncId>
		<txnLogDirPath>target/txnLogDir/nc1</txnLogDirPath>
	</transactionLogDir>
	<transactionLogDir>
		<ncId>nc2</ncId>
		<txnLogDirPath>target/txnLogDir/nc2</txnLogDirPath>
	</transactionLogDir>

	<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>32768</value>
	</property>
	<property>
		<name>compiler.sortmemory</name>
		<value>163840</value>
	</property>
	<property>
		<name>compiler.groupmemory</name>
		<value>163840</value>
	</property>
	<property>
		<name>compiler.joinmemory</name>
		<value>163840</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>
