mondrian.test
Class PerformanceTest

java.lang.Object
  extended by junit.framework.Assert
      extended by junit.framework.TestCase
          extended by mondrian.test.FoodMartTestCase
              extended by mondrian.test.PerformanceTest
All Implemented Interfaces:
junit.framework.Test

public class PerformanceTest
extends FoodMartTestCase

Various unit tests concerned with performance.

Since:
August 7, 2006
Author:
jhyde

Nested Class Summary
static class PerformanceTest.CounterUdf
          User-defined function that counts how many times it has been invoked.
(package private) static class PerformanceTest.Statistician
          Collects statistics for a test that is run multiple times.
 
Nested classes/interfaces inherited from class mondrian.test.FoodMartTestCase
FoodMartTestCase.QueryAndResult
 
Field Summary
static org.apache.log4j.Logger LOGGER
          Certain tests are enabled only if logging is enabled at debug level or higher.
 
Fields inherited from class mondrian.test.FoodMartTestCase
propSaver
 
Constructor Summary
PerformanceTest(String name)
           
 
Method Summary
 void testBigResultsWithBigSchemaPerforms()
          Tests performance of a larger schema with a large number of result cells.
 void testBugMondrian1242()
          Test for MONDRIAN-1242, "Slicer size is exponentially inflating the cell requests".
 void testBugMondrian550()
          Test case for Bug MONDRIAN-550, "Performance bug with NON EMPTY and large axes".
 void testBugMondrian550Tuple()
          As testBugMondrian550() but with tuples on the rows axis.
 void testBugMondrian639()
          Test case for Bug MONDRIAN-639, "RolapNamedSetEvaluator anon classes implement Iterable, causing performance regression from 2.4 in FunUtil.count()".
 void testBugMondrian843()
          Test case for Bug MONDRIAN-843, where Filter is inefficient.
 void testBugMondrian981()
          Testcase for bug MONDRIAN-981, "Poor performance when >=2 hierarchies are access-controlled with rollupPolicy=partial".
 void testInMemoryCalc()
          Runs a query that performs a lot of in-memory calculation.
 void testMondrianBug641()
          Test case for Bug MONDRIAN-641, "Large NON EMPTY result performs poorly with ResultStyle.ITERABLE".
 void testVeryLargeExplicitSet()
          Tests performance when an MDX query contains a very large explicit set.
 
Methods inherited from class mondrian.test.FoodMartTestCase
allMember, assertAxisReturns, assertAxisThrows, assertBooleanExprReturns, assertExprReturns, assertExprThrows, assertQueriesReturnSimilarResults, assertQueryReturns, assertQueryThrows, assertSize, cubeByName, execute, executeExpr, executeQuery, executeSingletonAxis, genderMembersIncludingAll, getConnection, getDimensionWithName, getTestContext, isDefaultNullMemberRepresentation, isGroupingSetsSupported, member, productMembersPotScrubbersPotsAndPans, storeMembersCAAndOR, storeMembersUsaAndCanada, tearDown, warehouseMembersCanadaMexicoUsa
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runBare, runTest, setName, setUp, toString
 
Methods inherited from class junit.framework.Assert
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LOGGER

public static final org.apache.log4j.Logger LOGGER
Certain tests are enabled only if logging is enabled at debug level or higher.

Constructor Detail

PerformanceTest

public PerformanceTest(String name)
Method Detail

testBugMondrian550

public void testBugMondrian550()
Test case for Bug MONDRIAN-550, "Performance bug with NON EMPTY and large axes".


testBugMondrian550Tuple

public void testBugMondrian550Tuple()
As testBugMondrian550() but with tuples on the rows axis.


testMondrianBug641

public void testMondrianBug641()
Test case for Bug MONDRIAN-641, "Large NON EMPTY result performs poorly with ResultStyle.ITERABLE". Runs in ~10 seconds with ResultStyle.LIST, 99+ seconds with ITERABLE (on DELL Latitude D630).


testVeryLargeExplicitSet

public void testVeryLargeExplicitSet()
Tests performance when an MDX query contains a very large explicit set.


testBugMondrian639

public void testBugMondrian639()
Test case for Bug MONDRIAN-639, "RolapNamedSetEvaluator anon classes implement Iterable, causing performance regression from 2.4 in FunUtil.count()".


testBigResultsWithBigSchemaPerforms

public void testBigResultsWithBigSchemaPerforms()
Tests performance of a larger schema with a large number of result cells. Runs in 186 seconds without nonAllPositions array in RolapEvaluator. Runs in 14 seconds when RolapEvaluator.getProperty uses getNonAllMembers. The performance boost gets more significant as the schema size grows.


testInMemoryCalc

public void testInMemoryCalc()
Runs a query that performs a lot of in-memory calculation.

Timings (branch / change / host / DBMS / jdk / timings (s) / mean):


testBugMondrian843

public void testBugMondrian843()
Test case for Bug MONDRIAN-843, where Filter is inefficient.


testBugMondrian981

public void testBugMondrian981()
Testcase for bug MONDRIAN-981, "Poor performance when >=2 hierarchies are access-controlled with rollupPolicy=partial".


testBugMondrian1242

public void testBugMondrian1242()
Test for MONDRIAN-1242, "Slicer size is exponentially inflating the cell requests". This case just checks correctness; a similar case in PerformanceTest checks performance.


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