mondrian.test
Class ConcurrentValidatingQueryRunner

java.lang.Object
  extended by java.lang.Thread
      extended by mondrian.test.ConcurrentValidatingQueryRunner
All Implemented Interfaces:
Runnable

public class ConcurrentValidatingQueryRunner
extends Thread

Utility class to run set of MDX queries in multiple threads and validate the results. Queries are run against the FoodMart database.

Author:
Thiyagu, Ajit

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ConcurrentValidatingQueryRunner(int numSeconds, boolean useRandomQuery, boolean randomCacheFlush, FoodMartTestCase.QueryAndResult[] queriesAndResults)
          Runs concurrent queries with random cache flush.
ConcurrentValidatingQueryRunner(int numSeconds, boolean useRandomQuery, FoodMartTestCase.QueryAndResult[] queriesAndResults)
          Runs concurrent queries without flushing cache.
 
Method Summary
 void run()
          Runs a number of queries until time expires.
(package private) static List<Throwable> runTest(int numThreads, int runTimeInSeconds, boolean randomQueries, boolean randomCacheFlush, boolean printReport, FoodMartTestCase.QueryAndResult[] queriesAndResults)
          Creates and runs concurrent threads of tests with random cache flush.
(package private) static List<Throwable> runTest(int numThreads, int runTimeInSeconds, boolean randomQueries, boolean printReport, FoodMartTestCase.QueryAndResult[] queriesAndResults)
          Creates and runs concurrent threads of tests without flushing cache.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ConcurrentValidatingQueryRunner

public ConcurrentValidatingQueryRunner(int numSeconds,
                                       boolean useRandomQuery,
                                       FoodMartTestCase.QueryAndResult[] queriesAndResults)
Runs concurrent queries without flushing cache. This constructor provides backward compatibilty for usage in ConcurrentMdxTest.

Parameters:
numSeconds - Running time
useRandomQuery - If set to true, the runner will pick a random query from the set. If set to false, the runner will circle through queries sequentially
queriesAndResults - The array of pairs of query and expected result

ConcurrentValidatingQueryRunner

public ConcurrentValidatingQueryRunner(int numSeconds,
                                       boolean useRandomQuery,
                                       boolean randomCacheFlush,
                                       FoodMartTestCase.QueryAndResult[] queriesAndResults)
Runs concurrent queries with random cache flush.

Parameters:
numSeconds - Running time
useRandomQuery - If set to true, the runner will pick a random query from the set. If set to false, the runner will circle through queries sequentially
randomCacheFlush - If set to true, the runner will do a coin toss before running the query. If the result of the experiment is favorable, runner will flush a random region of aggregation cache
queriesAndResults - The array of pairs of query and expected result
Method Detail

run

public void run()
Runs a number of queries until time expires. For each iteration, if cache is to be flushed, do it before running the query.

Specified by:
run in interface Runnable
Overrides:
run in class Thread

runTest

static List<Throwable> runTest(int numThreads,
                               int runTimeInSeconds,
                               boolean randomQueries,
                               boolean printReport,
                               FoodMartTestCase.QueryAndResult[] queriesAndResults)
Creates and runs concurrent threads of tests without flushing cache. This method provides backward compatibilty for usage in ConcurrentMdxTest.

Parameters:
numThreads - Number of concurrent threads
runTimeInSeconds - Running Time
randomQueries - Whether to pick queries in random or in sequence
printReport - Whether to print report
queriesAndResults - Array of pairs of query and expected result
Returns:
The list of failures

runTest

static List<Throwable> runTest(int numThreads,
                               int runTimeInSeconds,
                               boolean randomQueries,
                               boolean randomCacheFlush,
                               boolean printReport,
                               FoodMartTestCase.QueryAndResult[] queriesAndResults)
Creates and runs concurrent threads of tests with random cache flush.

Parameters:
numThreads - Number of concurrent threads
runTimeInSeconds - Running Time
randomQueries - Whether to pick queries in random or in sequence
randomCacheFlush - Whether to flush cache before running queries
printReport - Whether to print report
queriesAndResults - Array of pairs of query and expected result
Returns:
The list of failures

Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads