blob: 4bc170e4eba4cd12191d99c021f6ec5924c6f791 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.testing.tests.eis.aq;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.queries.*;
import org.eclipse.persistence.eis.*;
import org.eclipse.persistence.eis.adapters.aq.*;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.sessions.JNDIConnector;
import org.eclipse.persistence.sessions.factories.*;
import org.eclipse.persistence.testing.framework.*;
/**
* Test TopLink EIS with the Oracle IP JCA drivers.
*/
public class AQTestModel extends TestModel {
protected Session oldSession;
public AQTestModel() {
super();
setDescription("Test TopLink EIS with the Oracle AQ drivers.");
}
public void addTests() {
TestSuite jmsSuite = new TestSuite();
jmsSuite.setName("JMSDirectTestSuite");
jmsSuite.addTest(new JMSDirectConnectTest());
jmsSuite.addTest(new JMSDirectInteractionTest());
addTest(jmsSuite);
TestSuite javaSuite = new TestSuite();
javaSuite.setName("JavaDirectTestSuite");
javaSuite.addTest(new JavaDirectConnectTest());
javaSuite.addTest(new JavaDirectInteractionTest());
addTest(javaSuite);
TestSuite toplinkSuite = new TestSuite();
toplinkSuite.setName("TopLinkTestSuite");
toplinkSuite.addTest(new ConnectTest());
toplinkSuite.addTest(new AuthenticationTest());
toplinkSuite.addTest(new ReadWriteTest());
toplinkSuite.addTest(new ReadTimeoutTest());
toplinkSuite.addTest(new ReadUOWTest());
addTest(toplinkSuite);
}
public void setup() {
oldSession = getSession();
DatabaseLogin login = (DatabaseLogin)oldSession.getLogin().clone();
if (login.getConnector() instanceof JNDIConnector) {
login.setConnector(new JNDIConnector("jdbc/OracleCoreAQ"));
} else {
login.setUserName("aquser");
login.setPassword("aquser");
}
DatabaseSession session = new Project(login).createDatabaseSession();
session.setSessionLog(getSession().getSessionLog());
try {
session.login();
} catch (Exception exception) {
throw new TestProblemException("Database needs to be setup for AQ, with the aquser", exception);
}
/** to setup aquser, need to execute,
1 - login as sys (default password is password)
- login as scott tiger
connect sys/password@james as sysdba
2 - might need to install aq procesures?
- in sqlplus - @@<orahome>\ora92\rdbms\admin\catproc.sql
3 - create a aq user (i.e aquser)
grant connect, resource , aq_administrator_role to aquser identified by aquser
grant execute on dbms_aq to aquser
grant execute on dbms_aqadm to aquser
grant execute on dbms_lock to aquser
connect aquser/aquser
*/
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.STOP_QUEUE (queue_name => 'order_queue'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.DROP_QUEUE (queue_name => 'order_queue'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.DROP_QUEUE_TABLE (queue_table => 'order_queue_table'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.STOP_QUEUE (queue_name => 'order_topic'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.DROP_QUEUE (queue_name => 'order_topic'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.DROP_QUEUE_TABLE (queue_table => 'order_topic_table'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.STOP_QUEUE (queue_name => 'raw_order_queue'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.DROP_QUEUE (queue_name => 'raw_order_queue'); end;"));
} catch (Exception notThere) {
}
try {
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.DROP_QUEUE_TABLE (queue_table => 'raw_order_queue_table'); end;"));
} catch (Exception notThere) {
}
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.CREATE_QUEUE_TABLE (queue_table => 'order_queue_table', multiple_consumers => FALSE, queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.CREATE_QUEUE (queue_name => 'order_queue', queue_table => 'order_queue_table'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.START_QUEUE (queue_name => 'order_queue'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.CREATE_QUEUE_TABLE (queue_table => 'order_topic_table', multiple_consumers => TRUE, queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.CREATE_QUEUE (queue_name => 'order_topic', queue_table => 'order_topic_table'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.START_QUEUE (queue_name => 'order_topic'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.CREATE_QUEUE_TABLE (queue_table => 'raw_order_queue_table', multiple_consumers => FALSE, queue_payload_type => 'RAW'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.CREATE_QUEUE (queue_name => 'raw_order_queue', queue_table => 'raw_order_queue_table'); end;"));
session.executeNonSelectingCall(new SQLCall("begin DBMS_AQADM.START_QUEUE (queue_name => 'raw_order_queue'); end;"));
session = XMLProjectReader.read("org/eclipse/persistence/testing/models/order/eis/aq/order-project.xml", getClass().getClassLoader()).createDatabaseSession();
session.setSessionLog(getSession().getSessionLog());
//String url = oldSession.getLogin().getConnectionString();
String url;
try{
url = ((AbstractSession)getSession()).getAccessor().getConnection().getMetaData().getURL();
}catch(java.sql.SQLException se){
se.printStackTrace();
throw new TestErrorException("There is SQLException");
}
EISLogin eisLogin = (EISLogin)session.getDatasourceLogin();
eisLogin.setConnectionSpec(new AQEISConnectionSpec());
eisLogin.setProperty(AQEISConnectionSpec.URL, url);
eisLogin.setUserName("aquser");
eisLogin.setPassword("aquser");
session.login();
getExecutor().setSession(session);
}
public void reset() {
getDatabaseSession().logout();
getExecutor().setSession(oldSession);
}
/**
* Return the JUnit suite to allow JUnit runner to find it.
*/
public static junit.framework.TestSuite suite() {
return new AQTestModel();
}
}