mondrian.rolap
Class TestAggregationManager

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

public class TestAggregationManager
extends BatchTestCase

Unit test for AggregationManager.

Since:
21 March, 2002
Author:
jhyde

Nested Class Summary
 
Nested classes/interfaces inherited from class mondrian.rolap.BatchTestCase
BatchTestCase.Bomb, BatchTestCase.CellRequestConstraint, BatchTestCase.TestCase, BatchTestCase.TestListener
 
Field Summary
 
Fields inherited from class mondrian.rolap.BatchTestCase
cubeNameSales, fieldGender, fieldProductDepartment, fieldProductFamily, fieldValueProductDepartment, fieldValuesGender, fieldValuesProductFamily, fieldValuesYear, fieldYear, measureUnitSales, tableCustomer, tableProductClass, tableTime
 
Fields inherited from class mondrian.test.FoodMartTestCase
propSaver
 
Constructor Summary
TestAggregationManager()
           
TestAggregationManager(String name)
           
 
Method Summary
protected  void setUp()
           
protected  void tearDown()
           
 void testAggChildMembersOfLeaf()
          As testAggMembers(), but asks for children of a leaf level.
 void testAggMembers()
          Tests that an aggregate table is used to speed up a <Member>.Children expression.
 void testAggNameApproxRowCount()
          This is a test for MONDRIAN-918 and MONDRIAN-903.
 void testAggregatingTuples()
           
 void testCollapsedChildren()
          this test verifies the collapsed children code in SqlMemberSource
 void testColumnCadinalityCache()
          Test that once fetched, column cardinality can be shared between different queries using the same connection.
 void testCountDistinctAggMatch()
           
 void testCountDistinctAggMiss()
           
 void testCountDistinctBatchLoading()
          Test that cells with the same compound member constraints are loaded in one Sql statement.
 void testCountDistinctCannotRollup()
           
 void testCountDistinctRollup2()
          As above, but we rollup [Marital Status] but not [Gender].
 void testCountDistinctRollupAlongDim()
          Now, here's a funny thing.
 void testCountDistinctWithConstraintAggMiss()
          Test that using compound member constrant disables using AggregateTable
 void testFemaleCustomerCount()
           
 void testFemaleCustomerCountWithConstraints()
           
 void testFemaleUnitSales()
           
 void testFemaleUnitSalesSql()
          Tests that a request for ([Measures].[Unit Sales], [Gender].[F]) generates the correct SQL.
 void testHierarchyInFactTable()
          If a hierarchy lives in the fact table, we should not generate a join.
 void testKeyExpressionCardinalityCache()
           
 void testLevelKeyAsSqlExpWithAgg()
          Test case for bug MONDRIAN-812, "Issues with aggregate table recognition when using <KeyExpression><SQL> ...
 void testMondrian1271()
          This is a test for MONDRIAN-1271 When a non-collapsed AggLevel was used, Mondrian would join on the key column of the lowest level isntead of the one it should have.
 void testMultipleMeasures()
          Test a batch containing multiple measures: (store_state=CA, gender=F, measure=[Unit Sales]) (store_state=CA, gender=M, measure=[Store Sales]) (store_state=OR, gender=M, measure=[Unit Sales])
 void testNonCollapsedAggregate()
           
 void testNonEmptyCrossJoinLoneAxis()
          Tests that a NonEmptyCrossJoin uses the measure referenced by the query (Store Sales) instead of the default measure (Unit Sales) in the case where the query only has one result axis.
 void testNoNullPtrInCellRequest()
          This test case tests for a null pointer that was being thrown inside of CellRequest.
 void testOrdinalExprAggTuplesAndChildren()
          Test case for bug MONDRIAN-663, "Improve metadata query (TupleReader) support for aggregation tables to include dimensions defining more than one column".
 void testTwoNonCollapsedAggregate()
           
 void testUniqueMembers()
          Tests that if a level is marked 'unique members', then its parent is not constrained.
 void testVirtualCubeAggBugMondrian1221()
          This is a test for MONDRIAN-1221 When performing a non-empty crossjoin over a virtual cube with agg tables, there was no match with any agg tables.
 
Methods inherited from class mondrian.rolap.BatchTestCase
assertNative, assertNoQuerySql, assertNotNative, assertQuerySql, assertQuerySql, assertQuerySql, assertQuerySqlOrNot, assertRequestSql, assertRequestSql, checkNative, checkNative, checkNative, checkNotNative, checkNotNative, checkNotNative, createBatch, createBatch, createRequest, createRequest, createRequest, createRequest, dialectize, executeQuery, getCube, getFoodMartConnection, getGroupingSet, getMeasure, getRegistry, makeConstraintCountryState, makeConstraintProductFamilyDepartment, makeConstraintYearQuarterMonth
 
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, warehouseMembersCanadaMexicoUsa
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runBare, runTest, setName, 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
 

Constructor Detail

TestAggregationManager

public TestAggregationManager(String name)

TestAggregationManager

public TestAggregationManager()
Method Detail

setUp

protected void setUp()
              throws Exception
Overrides:
setUp in class junit.framework.TestCase
Throws:
Exception

tearDown

protected void tearDown()
                 throws Exception
Overrides:
tearDown in class FoodMartTestCase
Throws:
Exception

testFemaleUnitSales

public void testFemaleUnitSales()

testFemaleCustomerCount

public void testFemaleCustomerCount()

testFemaleCustomerCountWithConstraints

public void testFemaleCustomerCountWithConstraints()

testFemaleUnitSalesSql

public void testFemaleUnitSalesSql()
Tests that a request for ([Measures].[Unit Sales], [Gender].[F]) generates the correct SQL.


testMultipleMeasures

public void testMultipleMeasures()
Test a batch containing multiple measures: (store_state=CA, gender=F, measure=[Unit Sales]) (store_state=CA, gender=M, measure=[Store Sales]) (store_state=OR, gender=M, measure=[Unit Sales])


testUniqueMembers

public void testUniqueMembers()
Tests that if a level is marked 'unique members', then its parent is not constrained.


testNonEmptyCrossJoinLoneAxis

public void testNonEmptyCrossJoinLoneAxis()
Tests that a NonEmptyCrossJoin uses the measure referenced by the query (Store Sales) instead of the default measure (Unit Sales) in the case where the query only has one result axis. The setup here is necessarily elaborate because the original bug was quite arbitrary.


testHierarchyInFactTable

public void testHierarchyInFactTable()
If a hierarchy lives in the fact table, we should not generate a join.


testCountDistinctAggMiss

public void testCountDistinctAggMiss()

testCountDistinctAggMatch

public void testCountDistinctAggMatch()

testCountDistinctCannotRollup

public void testCountDistinctCannotRollup()

testCountDistinctRollupAlongDim

public void testCountDistinctRollupAlongDim()
Now, here's a funny thing. Usually you can't roll up a distinct-count aggregate. But if you're rolling up along the dimension which the count is counting, it's OK. In this case, you know that every member can only belong to one group.


testCountDistinctRollup2

public void testCountDistinctRollup2()
As above, but we rollup [Marital Status] but not [Gender].


testCountDistinctBatchLoading

public void testCountDistinctBatchLoading()
Test that cells with the same compound member constraints are loaded in one Sql statement. Cells [Food] and [Drink] have the same constraint: {[1997].[Q1].[1], [1997].[Q3].[7]}


testAggMembers

public void testAggMembers()
Tests that an aggregate table is used to speed up a <Member>.Children expression.


testAggChildMembersOfLeaf

public void testAggChildMembersOfLeaf()
As testAggMembers(), but asks for children of a leaf level. Rewrite using an aggregate table is not possible, so just check that it gets the right result.


testNoNullPtrInCellRequest

public void testNoNullPtrInCellRequest()
This test case tests for a null pointer that was being thrown inside of CellRequest.


testColumnCadinalityCache

public void testColumnCadinalityCache()
Test that once fetched, column cardinality can be shared between different queries using the same connection.

Test also that expressions with only table alias difference do not share cardinality result.


testKeyExpressionCardinalityCache

public void testKeyExpressionCardinalityCache()

testCountDistinctWithConstraintAggMiss

public void testCountDistinctWithConstraintAggMiss()
Test that using compound member constrant disables using AggregateTable


testOrdinalExprAggTuplesAndChildren

public void testOrdinalExprAggTuplesAndChildren()
Test case for bug MONDRIAN-663, "Improve metadata query (TupleReader) support for aggregation tables to include dimensions defining more than one column".


testAggregatingTuples

public void testAggregatingTuples()

testCollapsedChildren

public void testCollapsedChildren()
this test verifies the collapsed children code in SqlMemberSource


testLevelKeyAsSqlExpWithAgg

public void testLevelKeyAsSqlExpWithAgg()
Test case for bug MONDRIAN-812, "Issues with aggregate table recognition when using <KeyExpression><SQL> ... </SQL></KeyExpression> to define a level". Using a key expression for a level element would make aggregate tables fail to be used.


testAggNameApproxRowCount

public void testAggNameApproxRowCount()
This is a test for MONDRIAN-918 and MONDRIAN-903. We have added an attribute to AggName called approxRowCount so that the aggregation manager can optimize the aggregation tables without having to issue a select count() query.


testNonCollapsedAggregate

public void testNonCollapsedAggregate()
                               throws Exception
Throws:
Exception

testTwoNonCollapsedAggregate

public void testTwoNonCollapsedAggregate()
                                  throws Exception
Throws:
Exception

testVirtualCubeAggBugMondrian1221

public void testVirtualCubeAggBugMondrian1221()
This is a test for MONDRIAN-1221 When performing a non-empty crossjoin over a virtual cube with agg tables, there was no match with any agg tables.


testMondrian1271

public void testMondrian1271()
This is a test for MONDRIAN-1271 When a non-collapsed AggLevel was used, Mondrian would join on the key column of the lowest level isntead of the one it should have.


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