<!-- ! 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. ! -->
<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>98304</value>
	</property>
	<property>
		<name>compiler.groupmemory</name>
		<value>98304</value>
	</property>
	<property>
		<name>compiler.joinmemory</name>
		<value>131072</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>
</asterixConfiguration>
