Search in sources :

Example 31 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class TestContext method executeSingletonAxis.

/**
 * Executes a set expression which is expected to return 0 or 1 members. It is an error if the expression returns
 * tuples (as opposed to members), or if it returns two or more members.
 *
 * @param expression Expression string
 * @return Null if axis returns the empty set, member if axis returns one member. Throws otherwise.
 */
public Member executeSingletonAxis(String expression) {
    final String cubeName = getDefaultCubeName();
    Result result = executeQuery("select {" + expression + "} on columns from " + cubeName);
    Axis axis = result.getAxes()[0];
    switch(axis.getPositions().size()) {
        case 0:
            // yielded just the null member, the array will be empty.
            return null;
        case 1:
            // Java nulls should never happen during expression evaluation.
            Position position = axis.getPositions().get(0);
            Util.assertTrue(position.size() == 1);
            Member member = position.get(0);
            Util.assertTrue(member != null);
            return member;
        default:
            throw Util.newInternal("expression " + expression + " yielded " + axis.getPositions().size() + " positions");
    }
}
Also used : Position(mondrian.olap.Position) Member(mondrian.olap.Member) Axis(mondrian.olap.Axis) CellSetAxis(org.olap4j.CellSetAxis) Result(mondrian.olap.Result)

Example 32 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class TestContext method assertQueryThrows.

/**
 * Executes a query, and asserts that it throws an exception which contains the given pattern.
 *
 * @param queryString Query string
 * @param pattern     Pattern which exception must match
 */
public void assertQueryThrows(String queryString, String pattern) {
    Throwable throwable;
    try {
        Result result = executeQuery(queryString);
        Util.discard(result);
        throwable = null;
    } catch (Throwable e) {
        throwable = e;
    }
    checkThrowable(throwable, pattern);
}
Also used : Result(mondrian.olap.Result)

Example 33 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class TestContext method assertQueryReturns.

/**
 * Executes a query and checks that the result is a given string, displaying a message if result does not match
 * desiredResult.
 */
public void assertQueryReturns(String message, String query, String desiredResult) {
    Result result = executeQuery(query);
    String resultString = toString(result);
    if (desiredResult != null) {
        assertEqualsVerbose(desiredResult, upgradeActual(resultString), true, message);
    }
}
Also used : Result(mondrian.olap.Result)

Example 34 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class TestContext method databaseIsValid.

/**
 * Tests whether the database is valid. Allows tests that depend on optional databases to figure out whether to
 * proceed.
 *
 * @return whether a database is present and correct
 */
public boolean databaseIsValid() {
    try {
        Connection connection = getConnection();
        String cubeName = getDefaultCubeName();
        if (cubeName.indexOf(' ') >= 0) {
            cubeName = Util.quoteMdxIdentifier(cubeName);
        }
        Query query = connection.parseQuery("select from " + cubeName);
        Result result = connection.execute(query);
        Util.discard(result);
        connection.close();
        return true;
    } catch (RuntimeException e) {
        Util.discard(e);
        return false;
    }
}
Also used : Query(mondrian.olap.Query) OlapConnection(org.olap4j.OlapConnection) Connection(mondrian.olap.Connection) Result(mondrian.olap.Result)

Example 35 with Result

use of mondrian.olap.Result in project mondrian by pentaho.

the class PerformanceTest method testMondrianBug641.

/**
 * Test case for
 * <a href="http://jira.pentaho.com/browse/MONDRIAN-641">
 * Bug MONDRIAN-641</a>, "Large NON EMPTY result performs poorly with ResultStyle.ITERABLE".  Runs in ~10 seconds
 * with
 * ResultStyle.LIST, 99+ seconds with ITERABLE (on DELL Latitude D630).
 */
public void testMondrianBug641() {
    if (!Bug.BugMondrian641Fixed) {
        return;
    }
    long start = System.currentTimeMillis();
    Result result = executeQuery("select  non empty  {  crossjoin( customers.[city].members, " + "crossjoin( [store type].[store type].members,  " + "product.[product name].members)) }" + " on 0 from sales");
    // jdk1.6 marmalade main 14036 287,940 518,349 ms
    printDuration("testBugMondrian641", start);
    assertEquals(51148, result.getAxes()[0].getPositions().size());
}
Also used : Result(mondrian.olap.Result)

Aggregations

Result (mondrian.olap.Result)113 Axis (mondrian.olap.Axis)24 Member (mondrian.olap.Member)10 Test (org.junit.Test)10 Cell (mondrian.olap.Cell)9 Connection (mondrian.olap.Connection)9 Query (mondrian.olap.Query)9 Position (mondrian.olap.Position)8 TestContext (mondrian.test.TestContext)7 ArrayList (java.util.ArrayList)5 MondrianProperties (mondrian.olap.MondrianProperties)5 OlapElement (mondrian.olap.OlapElement)5 RolapCell (mondrian.rolap.RolapCell)5 NonEmptyResult (mondrian.rolap.RolapConnection.NonEmptyResult)5 Execution (mondrian.server.Execution)5 Dialect (mondrian.spi.Dialect)5 OlapConnection (org.olap4j.OlapConnection)5 List (java.util.List)4 ResultBase (mondrian.olap.ResultBase)4 Evaluator (mondrian.olap.Evaluator)3