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");
}
}
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);
}
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);
}
}
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;
}
}
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());
}
Aggregations