...
One way to run a test a lot of times is to add a new method to your case test that runs a problematic method many times. Here's an example
Code Block |
---|
public void testLoop() throws Exception {
for(int i=0; i < 200; i++) {
testGetBucketOwners();
tearDown();
setUp();
}
} |
...
Code Block |
---|
public void testClientPutWithInterrupt() throws Throwable {
addExpectedException("InterruptedException");
//...
} |
Turn on debug level in dunit tests
There're many ways to run a test case with debug level, the easiest way is to add following code into the test program temporarily.
Code Block |
---|
@Override
public Properties getDistributedSystemProperties() {
Properties props = new Properties();
props.setProperty("log-level", "debug");
return props;
} |
Turn on trace level using log4j2.xml
There're some trace code in product code like following:
Code Block |
---|
if (logger.isTraceEnabled(LogMarker.TOMBSTONE)) { logger.trace(LogMarker.TOMBSTONE, "Destroyed entries sweeper starting with default sleep interval={}", this.expiryTime); } |
They will not be displayed in debug level log. To specify a customized log4j2.xml, there're also several ways, but the easiest one is to copy your log4j2.xml into open/gemfire-core/src/main/resources/log4j2.xml. Here is an example of log4j2.xml which turned on LogMarker.TOMBSTONE, LogMarker.DISTRIBUTION, LogMarker.DISK_STORE_MONITOR:
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ERROR" shutdownHook="disable" packages="com.gemstone.gemfire.internal.logging.log4j">
<Properties>
<Property name="gemfire-pattern">[%level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} <%thread> tid=%tid] %message%n%throwable%n</Property>
</Properties>
<filters>
<MarkerFilter marker="DISTRIBUTION" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
<MarkerFilter marker="DISK_STORE_MONITOR" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
<MarkerFilter marker="TOMBSTONE" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
<!--MarkerFilter marker="PERSIST_RECOVERY" onMatch="ACCEPT" onMismatch="NEUTRAL"/-->
<!--MarkerFilter marker="PERSIST_WRITES" onMatch="ACCEPT" onMismatch="NEUTRAL"/-->
<!-- have to explicitly DENY all the markers' log, then explicitly add back one by one -->
<MarkerFilter marker="GEMFIRE_MARKER" onMatch="DENY" onMismatch="NEUTRAL"/>
</filters>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="${gemfire-pattern}"/>
</Console>
<Console name="STDERR" target="SYSTEM_ERR">
<PatternLayout pattern="${gemfire-pattern}"/>
</Console>
<!--RollingFile name="RollingFile" fileName="${filename}"-->
<File name="Log" fileName="system.log" bufferedIO="true">
<PatternLayout pattern="${gemfire-pattern}"/>
</File>
</Appenders>
<Loggers>
<Logger name="com.gemstone" level="INFO" additivity="false">
<AppenderRef ref="Log"/>
</Logger>
<Logger name="com.gemstone.gemfire.distributed.internal" level="TRACE" additivity="false">
<AppenderRef ref="STDOUT" level="DEBUG"/>
</Logger>
<Logger name="com.gemstone.gemfire.cache.client.internal" level="TRACE" additivity="false">
<AppenderRef ref="STDOUT" level="DEBUG"/>
</Logger>
<Logger name="com.gemstone.gemfire.internal.cache" level="TRACE" additivity="false">
<AppenderRef ref="STDOUT" level="TRACE"/>
</Logger>
<!--Logger name="com.gemstone.gemfire.distributed.internal.DistributionManager" level="TRACE" additivity="false">
<AppenderRef ref="Log" level="DEBUG"/>
</Logger-->
<!--Logger name="com.gemstone.gemfire.distributed.internal.DistributionMessage" level="TRACE" additivity="false">
<AppenderRef ref="Log" level="DEBUG"/>
</Logger-->
<Root level="ERROR">
<!--AppenderRef ref="STDOUT"/-->
</Root>
</Loggers>
</Configuration>
|