blob: d0d34c2953c42863f88ac1a50571cfbdab308096 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.tests.sessionsxml;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.sequencing.NativeSequence;
import org.eclipse.persistence.sessions.DatabaseSession;
import org.eclipse.persistence.sessions.coordination.DiscoveryManager;
import org.eclipse.persistence.sessions.coordination.TransportManager;
import org.eclipse.persistence.testing.framework.AutoVerifyTestCase;
import org.eclipse.persistence.testing.framework.TestErrorException;
import org.eclipse.persistence.sessions.server.ConnectionPool;
import org.eclipse.persistence.sessions.server.ServerSession;
import org.eclipse.persistence.internal.sessions.factories.XMLSessionConfigProject;
import org.eclipse.persistence.internal.sessions.factories.XMLSessionConfigProject_11_1_1;
import org.eclipse.persistence.sessions.factories.SessionManager;
import org.eclipse.persistence.sessions.factories.XMLSessionConfigLoader;
/**
* Tests that some of the defaulted values from the XML Schema are set properly.
* BUG #3455771 and 3454653
*
* @author Guy Pelletier
* @version 2.0
*/
public class SessionsXMLSchemaDefaultValueTest extends AutoVerifyTestCase {
DatabaseSession employeeSession;
ServerSession serverSession;
public SessionsXMLSchemaDefaultValueTest() {
setDescription("Test default values from the XML schema.");
}
@Override
public void reset() {
if (employeeSession != null && employeeSession.isConnected()) {
employeeSession.logout(); // If session is logged in, log it out
SessionManager.getManager().getSessions().remove(employeeSession);
employeeSession = null;
}
}
@Override
public void test() {
XMLSessionConfigLoader loader = new XMLSessionConfigLoader("org/eclipse/persistence/testing/models/sessionsxml/XMLSchemaSessionNoDefaultedTagsAllowed.xml");
// don't log in the session
employeeSession = (DatabaseSession)SessionManager.getManager().getSession(loader, "EmployeeSession", getClass().getClassLoader(), false, true); // refresh the session
// don't log in the session
serverSession = (ServerSession)SessionManager.getManager().getSession(loader, "ServerSession", getClass().getClassLoader(), false, true); // refresh the session
}
@Override
protected void verify() {
if (employeeSession == null) {
throw new TestErrorException("Employee session is null");
}
// Bug 300111 - Platform should specify default sequence table
if (!employeeSession.getDatasourceLogin().getPlatform().getSequenceTableName().equals(employeeSession.getPlatform().getDefaultSequenceTableName())) {
throw new TestErrorException("The sequence table had the wrong default value");
}
if (!employeeSession.getDatasourceLogin().getPlatform().getSequenceCounterFieldName().equals(XMLSessionConfigProject.SEQUENCE_COUNTER_FIELD_DEFAULT)) {
throw new TestErrorException("The sequence counter field name had the wrong default value");
}
if (!employeeSession.getDatasourceLogin().getPlatform().getSequenceNameFieldName().equals(XMLSessionConfigProject.SEQUENCE_NAME_FIELD_DEFAULT)) {
throw new TestErrorException("The sequence name field name had the wrong default value");
}
// We could check a few others. More can be added later.
// Most defaults were verified in the debugger at runtime.
// The three above were explicitly tested since they were the cause of
// error for BUG 3454653
if (employeeSession.getDatasourceLogin().getPlatform().getSequencePreallocationSize() != XMLSessionConfigProject.SEQUENCE_PREALLOCATION_SIZE_DEFAULT) {
throw new TestErrorException("The sequence preallocation size had the wrong default value");
}
if ((employeeSession.getDatasourceLogin().getPlatform().getDefaultSequence() instanceof NativeSequence) != XMLSessionConfigProject.NATIVE_SEQUENCING_DEFAULT) {
throw new TestErrorException("usesNativeSequencing status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().getMaxBatchWritingSize() != XMLSessionConfigProject.MAX_BATCH_WRITING_SIZE_DEFAULT) {
throw new TestErrorException("The max batch writing had the wrong default value");
}
if (employeeSession.getDatasourceLogin().getPlatform().usesNativeSQL() != XMLSessionConfigProject.NATIVE_SQL_DEFAULT) {
throw new TestErrorException("usesNativeSQL status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().usesBatchWriting() != XMLSessionConfigProject.BATCH_WRITING_DEFAULT) {
throw new TestErrorException("usesBatchWriting status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().usesJDBCBatchWriting() != XMLSessionConfigProject.JDBC20_BATCH_WRITING_DEFAULT) {
throw new TestErrorException("usesJDBCBatchWriting status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().usesNativeSQL() != XMLSessionConfigProject.NATIVE_SQL_DEFAULT) {
throw new TestErrorException("usesNativeSQL status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().usesStringBinding() != XMLSessionConfigProject.STRING_BINDING_DEFAULT) {
throw new TestErrorException("usesStringBinding status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().usesStreamsForBinding() != XMLSessionConfigProject.STREAMS_FOR_BINDING_DEFAULT) {
throw new TestErrorException("usesStreamsForBinding status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().usesByteArrayBinding() != XMLSessionConfigProject.BYTE_ARRAY_BINDING_DEFAULT) {
throw new TestErrorException("usesByteArrayBinding status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().shouldBindAllParameters() != XMLSessionConfigProject_11_1_1.BIND_ALL_PARAMETERS_DEFAULT) {
throw new TestErrorException("shouldBindAllParameters status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().shouldCacheAllStatements() != XMLSessionConfigProject.CACHE_ALL_STATEMENTS_DEFAULT) {
throw new TestErrorException("shouldCacheAllStatements status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().shouldForceFieldNamesToUpperCase() != XMLSessionConfigProject.FORCE_FIELD_NAMES_TO_UPPERCASE_DEFAULT) {
throw new TestErrorException("shouldForceFieldNamesToUpperCase status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().shouldTrimStrings() != XMLSessionConfigProject.TRIM_STRINGS_DEFAULT) {
throw new TestErrorException("shouldTrimStrings status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().getPlatform().shouldOptimizeDataConversion() != XMLSessionConfigProject.OPTIMIZE_DATA_CONVERSION_DEFAULT) {
throw new TestErrorException("shouldOptimizeDataConversion status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().shouldUseExternalConnectionPooling() != XMLSessionConfigProject.EXTERNAL_CONNECTION_POOL_DEFAULT) {
throw new TestErrorException("shouldUseExternalConnectionPooling status did not match the default setting");
}
if (employeeSession.getDatasourceLogin().shouldUseExternalTransactionController() != XMLSessionConfigProject.EXTERNAL_TRANSACTION_CONTROLLER_DEFAULT) {
throw new TestErrorException("shouldUseExternalTransactionController status did not match the default setting");
}
String logLevel = null;
switch (employeeSession.getLogLevel()) {
case (SessionLog.OFF):
{
logLevel = "off";
break;
}
case (SessionLog.SEVERE):
{
logLevel = "severe";
break;
}
case (SessionLog.WARNING):
{
logLevel = "warning";
break;
}
case (SessionLog.INFO):
{
logLevel = "info";
break;
}
case (SessionLog.CONFIG):
logLevel = "config";
{
logLevel = "config";
break;
}
case (SessionLog.FINE):
logLevel = "fine";
{
logLevel = "fine";
break;
}
case (SessionLog.FINER):
logLevel = "finer";
{
logLevel = "finer";
break;
}
case (SessionLog.FINEST):
logLevel = "finest";
{
logLevel = "finest";
break;
}
case (SessionLog.ALL):
logLevel = "all";
{
logLevel = "all";
break;
}
}
if (!logLevel.equals(XMLSessionConfigProject.LOG_LEVEL_DEFAULT)) {
throw new TestErrorException("The log level had the wrong default value");
}
if (serverSession == null) {
throw new TestErrorException("Server session is null");
}
if (serverSession.getCommandManager().shouldPropagateAsynchronously() != XMLSessionConfigProject.IS_ASYNCHRONOUS_DEFAULT) {
throw new TestErrorException("The initial context factory name had the wrong default value");
}
if (!serverSession.getCommandManager().getChannel().equals(XMLSessionConfigProject.CHANNEL_DEFAULT)) {
throw new TestErrorException("The channel the wrong default value");
}
if (!serverSession.getCommandManager().getTransportManager().getUserName().equals(XMLSessionConfigProject.USERNAME_DEFAULT)) {
throw new TestErrorException("The user name had the wrong default value");
}
if (!serverSession.getCommandManager().getTransportManager().getPassword().equals(XMLSessionConfigProject.PASSWORD_DEFAULT)) {
throw new TestErrorException("The password had the wrong default value");
}
if (!serverSession.getCommandManager().getTransportManager().getInitialContextFactoryName().equals(XMLSessionConfigProject.INITIAL_CONTEXT_FACTORY_NAME_DEFAULT)) {
throw new TestErrorException("The initial context factory name had the wrong default value");
}
if (TransportManager.DEFAULT_REMOVE_CONNECTION_ON_ERROR_MODE != XMLSessionConfigProject.REMOVE_CONNECTION_ON_ERROR_DEFAULT) {
throw new TestErrorException("The DEFAULT_REMOVE_CONNECTION_ON_ERROR_MODE had the wrong default value");
}
if (!DiscoveryManager.DEFAULT_MULTICAST_GROUP.equals(XMLSessionConfigProject.MULTICAST_GROUP_ADDRESS_DEFAULT)) {
throw new TestErrorException("The multicast group address had the wrong default value");
}
if (DiscoveryManager.DEFAULT_MULTICAST_PORT != XMLSessionConfigProject.MULTICAST_PORT_DEFAULT) {
throw new TestErrorException("The multicast port had the wrong default value");
}
if (DiscoveryManager.DEFAULT_ANNOUNCEMENT_DELAY != XMLSessionConfigProject.ANNOUNCEMENT_DELAY_DEFAULT) {
throw new TestErrorException("The announcement delay had the wrong default value");
}
if (DiscoveryManager.DEFAULT_PACKET_TIME_TO_LIVE != XMLSessionConfigProject.PACKET_TIME_TO_LIVE_DEFAULT) {
throw new TestErrorException("The packet time to live had the wrong default value");
}
/*
if (serverSession.getServerPlatform().isRuntimeServicesEnabled() != XMLSessionConfigProject.ENABLE_RUNTIME_SERVICES_DEFAULT)
{
throw new TestErrorException("isRuntimeServicesEnabled did not match the default setting");
}
if (serverSession.getServerPlatform().isJTAEnabled() != XMLSessionConfigProject.ENABLE_JTA_DEFAULT)
{
throw new TestErrorException("isJTAEnabled did not match the default setting");
}
*/
ConnectionPool readConnPool = serverSession.getConnectionPool("ReadConnectionPool");
ConnectionPool writeConnPool = serverSession.getConnectionPool("WriteConnectionPool");
ConnectionPool seqConnPool = serverSession.getConnectionPool("SequenceConnectionPool");
/*
if((readConnPool == null) || (writeConnPool == null) || (seqConnPool == null))
{
throw new TestErrorException("Connection Pools were not created correctly");
}
if((readConnPool.getMaxNumberOfConnections()!=XMLSessionConfigProject.READ_CONNECTION_POOL_MAX_DEFAULT) ||
(readConnPool.getMinNumberOfConnections()!=XMLSessionConfigProject.READ_CONNECTION_POOL_MIN_DEFAULT) ||
(writeConnPool.getMaxNumberOfConnections()!=XMLSessionConfigProject.CONNECTION_POOL_MAX_DEFAULT) ||
(writeConnPool.getMinNumberOfConnections()!=XMLSessionConfigProject.CONNECTION_POOL_MIN_DEFAULT) ||
(seqConnPool.getMaxNumberOfConnections()!=XMLSessionConfigProject.CONNECTION_POOL_MAX_DEFAULT) ||
(seqConnPool.getMinNumberOfConnections()!=XMLSessionConfigProject.CONNECTION_POOL_MIN_DEFAULT))
{
throw new TestErrorException("Connection Pools had the wrong default sizes");
}
*/
}
}