mondrian.xmla
Class XmlaBaseTestCase

java.lang.Object
  extended by junit.framework.Assert
      extended by junit.framework.TestCase
          extended by mondrian.test.FoodMartTestCase
              extended by mondrian.xmla.XmlaBaseTestCase
All Implemented Interfaces:
junit.framework.Test
Direct Known Subclasses:
XmlaBasicTest, XmlaCognosTest, XmlaErrorTest, XmlaExcel2000Test, XmlaExcel2007Test, XmlaExcelXPTest, XmlaMetaDataConstraintsTest, XmlaTabularTest

public abstract class XmlaBaseTestCase
extends FoodMartTestCase

Extends FoodMartTestCase, adding support for testing XMLA specific functionality, for example LAST_SCHEMA_UPDATE

Author:
mkambol

Nested Class Summary
(package private) static class XmlaBaseTestCase.Action
           
(package private) static class XmlaBaseTestCase.CallBack
           
protected static class XmlaBaseTestCase.XmlaRequestCallbackImpl
           
 
Field Summary
static String CATALOG
           
static String CATALOG_NAME_PROP
           
static String CATALOG_PROP
           
protected  SortedMap<String,String> catalogNameUrls
           
static String CUBE_NAME_PROP
           
static String DATA_SOURCE_INFO
           
static String DATA_SOURCE_INFO_PROP
           
protected static boolean DEBUG
           
static String FORMAT_MULTI_DIMENSIONAL
           
static String FORMAT_PROP
           
protected static String LAST_SCHEMA_UPDATE_DATE
           
static String LOCALE_PROP
           
static String REQUEST_TYPE_PROP
           
static String ROLE_PROP
           
static String SALES_CUBE
           
static String SESSION_ID_PROP
           
 
Fields inherited from class mondrian.test.FoodMartTestCase
propSaver
 
Constructor Summary
XmlaBaseTestCase()
           
XmlaBaseTestCase(String name)
           
 
Method Summary
protected  void doTest(MockHttpServletRequest req, Properties props)
           
 void doTest(Properties props)
           
 void doTest(String requestType, Properties props, TestContext testContext)
          Executes an XMLA request, reading the text of the request and the response from attributes in getDiffRepos().
 void doTest(String requestType, Properties props, TestContext testContext, Role role)
           
 void doTestInline(String requestType, String requestText, String respFileName, Properties props, TestContext testContext)
           
 void doTestInline(String requestType, String requestText, String respFileName, Properties props, TestContext testContext, Role role)
           
protected  void doTests(String soapRequestText, Properties props, TestContext testContext, String connectString, Map<String,String> catalogNameUrls, Document expectedDoc, XmlaConstants.Content content, Role role, boolean replace)
          Executes a SOAP request.
protected  void doTestsJson(String soapRequestText, Properties props, TestContext testContext, String connectString, Map<String,String> catalogNameUrls, String expectedStr, XmlaConstants.Content content, Role role)
           
protected  Document fileToDocument(String filename, Properties props)
           
protected  String fileToString(String filename)
           
protected  String filter(String testCaseName, String filename, String content)
          Filters the content of a test resource.
protected  String filterConnectString(String original)
           
protected  String generateExpectedString(Properties props)
           
protected  String generateRequestString(Properties props)
           
protected  Map<String,String> getCatalogNameUrls(TestContext testContext)
           
protected  Properties getDefaultRequestProperties(String requestType)
           
protected abstract  DiffRepository getDiffRepos()
           
protected  javax.servlet.Servlet getServlet(TestContext testContext)
           
protected abstract  Class<? extends XmlaRequestCallback> getServletCallbackClass()
           
protected static String getSessionId(String name, XmlaBaseTestCase.Action action)
           
protected abstract  String getSessionId(XmlaBaseTestCase.Action action)
          Creates, retrieves or clears the session id for this test.
protected  void helperTest(boolean doSessionId)
           
protected  void helperTestExpect(boolean doSessionId)
           
protected  Document replaceLastSchemaUpdateDate(Document doc)
           
protected  void tearDown()
           
protected  void validate(byte[] bytes, Document expectedDoc, TestContext testContext, boolean replace, boolean validate)
           
 
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, 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

LAST_SCHEMA_UPDATE_DATE

protected static final String LAST_SCHEMA_UPDATE_DATE
See Also:
Constant Field Values

catalogNameUrls

protected SortedMap<String,String> catalogNameUrls

SESSION_ID_PROP

public static final String SESSION_ID_PROP
See Also:
Constant Field Values

REQUEST_TYPE_PROP

public static final String REQUEST_TYPE_PROP
See Also:
Constant Field Values

DATA_SOURCE_INFO_PROP

public static final String DATA_SOURCE_INFO_PROP
See Also:
Constant Field Values

DATA_SOURCE_INFO

public static final String DATA_SOURCE_INFO
See Also:
Constant Field Values

CATALOG_PROP

public static final String CATALOG_PROP
See Also:
Constant Field Values

CATALOG_NAME_PROP

public static final String CATALOG_NAME_PROP
See Also:
Constant Field Values

CATALOG

public static final String CATALOG
See Also:
Constant Field Values

CUBE_NAME_PROP

public static final String CUBE_NAME_PROP
See Also:
Constant Field Values

SALES_CUBE

public static final String SALES_CUBE
See Also:
Constant Field Values

FORMAT_PROP

public static final String FORMAT_PROP
See Also:
Constant Field Values

FORMAT_MULTI_DIMENSIONAL

public static final String FORMAT_MULTI_DIMENSIONAL
See Also:
Constant Field Values

ROLE_PROP

public static final String ROLE_PROP
See Also:
Constant Field Values

LOCALE_PROP

public static final String LOCALE_PROP
See Also:
Constant Field Values

DEBUG

protected static final boolean DEBUG
See Also:
Constant Field Values
Constructor Detail

XmlaBaseTestCase

public XmlaBaseTestCase()

XmlaBaseTestCase

public XmlaBaseTestCase(String name)
Method Detail

tearDown

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

generateExpectedString

protected String generateExpectedString(Properties props)
                                 throws Exception
Throws:
Exception

generateRequestString

protected String generateRequestString(Properties props)
                                throws Exception
Throws:
Exception

validate

protected void validate(byte[] bytes,
                        Document expectedDoc,
                        TestContext testContext,
                        boolean replace,
                        boolean validate)
                 throws Exception
Throws:
Exception

doTest

public void doTest(Properties props)
            throws Exception
Throws:
Exception

doTest

protected void doTest(MockHttpServletRequest req,
                      Properties props)
               throws Exception
Throws:
Exception

helperTestExpect

protected void helperTestExpect(boolean doSessionId)

helperTest

protected void helperTest(boolean doSessionId)

getDiffRepos

protected abstract DiffRepository getDiffRepos()

fileToString

protected String fileToString(String filename)
                       throws Exception
Throws:
Exception

replaceLastSchemaUpdateDate

protected Document replaceLastSchemaUpdateDate(Document doc)

getCatalogNameUrls

protected Map<String,String> getCatalogNameUrls(TestContext testContext)

getServlet

protected javax.servlet.Servlet getServlet(TestContext testContext)
                                    throws IOException,
                                           javax.servlet.ServletException,
                                           SAXException
Throws:
IOException
javax.servlet.ServletException
SAXException

filterConnectString

protected String filterConnectString(String original)

getServletCallbackClass

protected abstract Class<? extends XmlaRequestCallback> getServletCallbackClass()

getDefaultRequestProperties

protected Properties getDefaultRequestProperties(String requestType)

fileToDocument

protected Document fileToDocument(String filename,
                                  Properties props)
                           throws IOException,
                                  SAXException
Throws:
IOException
SAXException

filter

protected String filter(String testCaseName,
                        String filename,
                        String content)
Filters the content of a test resource. The default implementation returns the content unchanged, but a derived class might override this method to change the content.

Parameters:
testCaseName - Name of current test case, e.g. "testFoo"
filename - Name of requested content, e.g. "${request}"
content - Content
Returns:
Modified content

doTest

public void doTest(String requestType,
                   Properties props,
                   TestContext testContext)
            throws Exception
Executes an XMLA request, reading the text of the request and the response from attributes in getDiffRepos().

Parameters:
requestType - Request type: "DISCOVER_DATASOURCES", "EXECUTE", etc.
props - Properties for request
testContext - Test context
Throws:
Exception - on error

doTest

public void doTest(String requestType,
                   Properties props,
                   TestContext testContext,
                   Role role)
            throws Exception
Throws:
Exception

doTestInline

public void doTestInline(String requestType,
                         String requestText,
                         String respFileName,
                         Properties props,
                         TestContext testContext)
                  throws Exception
Throws:
Exception

doTestInline

public void doTestInline(String requestType,
                         String requestText,
                         String respFileName,
                         Properties props,
                         TestContext testContext,
                         Role role)
                  throws Exception
Throws:
Exception

doTests

protected void doTests(String soapRequestText,
                       Properties props,
                       TestContext testContext,
                       String connectString,
                       Map<String,String> catalogNameUrls,
                       Document expectedDoc,
                       XmlaConstants.Content content,
                       Role role,
                       boolean replace)
                throws Exception
Executes a SOAP request.

Parameters:
soapRequestText - SOAP request
props - Name/value pairs to substitute in the request
testContext - Test context
connectString - Connect string
catalogNameUrls - Map from catalog names to URL
expectedDoc - Expected SOAP output
content - Content type
role - Role in which to execute query, or null
replace - Whether to generate a replacement reference log into TestName.log.xml if there is an exception. If you are running the same request with different content types and the same reference log, you should pass true for the content type that has the most information (generally XmlaConstants.Content.SchemaData)
Throws:
Exception - on error

doTestsJson

protected void doTestsJson(String soapRequestText,
                           Properties props,
                           TestContext testContext,
                           String connectString,
                           Map<String,String> catalogNameUrls,
                           String expectedStr,
                           XmlaConstants.Content content,
                           Role role)
                    throws Exception
Throws:
Exception

getSessionId

protected abstract String getSessionId(XmlaBaseTestCase.Action action)
Creates, retrieves or clears the session id for this test.

Parameters:
action - Action to perform
Returns:
Session id for create, query; null for clear

getSessionId

protected static String getSessionId(String name,
                                     XmlaBaseTestCase.Action action)

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