<!-- ! 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>log.level</name>
		<value>WARNING</value>
		<description>Log level for running tests/build</description>
	</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>
