blob: 80a258dd6be00c85724d6d537d012ee135ef8179 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2020 IBM Corporation. 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 java.io.File;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import org.eclipse.persistence.logging.SessionLog;
import org.eclipse.persistence.sessions.DatabaseSession;
import org.eclipse.persistence.testing.framework.AutoVerifyTestCase;
import org.eclipse.persistence.testing.framework.TestErrorException;
import org.eclipse.persistence.sessions.factories.SessionManager;
import org.eclipse.persistence.sessions.factories.XMLSessionConfigLoader;
/**
* This test will read a session xml with logging set to java log and test to ensure an
* expected logging message is generated in a log file.
*/
public class SessionsXMLSchemaJavaLogTest extends AutoVerifyTestCase {
DatabaseSession employeeSession;
protected Exception generationException = null;
protected Exception fileReadException = null;
protected String testString = "EmployeeSession login successful";
protected String fileName = "java.log";
public SessionsXMLSchemaJavaLogTest() {
setDescription("Test loading of a session xml with java logging against 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;
}
File file = new File(fileName);
file.delete();
getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
}
@Override
public void test() {
try {
XMLSessionConfigLoader loader = new XMLSessionConfigLoader("org/eclipse/persistence/testing/models/sessionsxml/XMLSchemaJavaLog.xml");
employeeSession = (DatabaseSession)SessionManager.getManager().getSession(loader, "EmployeeSession", getClass().getClassLoader(), false, true);
employeeSession.setLogLevel(SessionLog.FINE);
Logger.getLogger("org.eclipse.persistence").addHandler(new FileHandler(fileName));
employeeSession.login();
} catch (Exception e) {
generationException = e;
}
}
@Override
protected void verify() {
if (generationException != null) {
throw new TestErrorException("Exception thrown during session configuration: " + generationException.toString());
}
if (!findStringInFile(testString, fileName)) {
String exceptionString = "String: " + testString + " not found in " + fileName;
if (fileReadException != null) {
exceptionString = exceptionString + " Exception thrown while reading file. - " + fileReadException.toString();
}
throw new TestErrorException(exceptionString);
}
}
public boolean findStringInFile(String string, String fileName) {
try {
FileReader reader = new FileReader(fileName);
LineNumberReader lnr = new LineNumberReader(reader);
String line = lnr.readLine();
while (line != null) {
if (line.indexOf(string) > -1) {
return true;
}
line = lnr.readLine();
}
} catch (Exception exception) {
fileReadException = exception;
}
;
return false;
}
}