| /* |
| * 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.manual; |
| |
| import java.io.*; |
| import org.eclipse.persistence.testing.models.employee.domain.*; |
| import org.eclipse.persistence.sessions.*; |
| import org.eclipse.persistence.testing.framework.*; |
| |
| public class SQLLogToFileTest extends ManualVerifyTestCase { |
| String logFileName; |
| Writer oldLog; |
| |
| /** |
| * SQLLoggingTest constructor comment. |
| */ |
| public SQLLogToFileTest() { |
| setDescription("This test verifies that SQL can be logged to a file, the sql output should logged."); |
| } |
| |
| private String getLogFileName() { |
| return logFileName; |
| } |
| |
| @Override |
| public void reset() { |
| rollbackTransaction(); |
| // Set SQL logging to previous values |
| getSession().setLog(oldLog); |
| } |
| |
| private void setLogFileName(String newFileName) { |
| logFileName = newFileName; |
| } |
| |
| protected void setLogging() { |
| oldLog = getSession().getLog(); |
| setLogFileName("SQL.LOG"); |
| |
| // Create a PrintStream on the given log file. Tell the session to log |
| // SQL output to this file. |
| try { |
| FileWriter fileWriter = new FileWriter(getLogFileName()); |
| getSession().setLog(fileWriter); |
| } catch (IOException exception) { |
| TestException testException = new TestException("Error opening stream on file " + getLogFileName()); |
| testException.setInternalException(exception); |
| throw testException; |
| } |
| } |
| |
| @Override |
| public void setup() { |
| setLogging(); |
| beginTransaction(); |
| } |
| |
| @Override |
| public void test() { |
| DatabaseSession session = getDatabaseSession(); |
| Employee anEmployee = (org.eclipse.persistence.testing.models.employee.domain.Employee)new org.eclipse.persistence.testing.models.employee.domain.EmployeePopulator().basicEmployeeExample1(); |
| |
| // Insert an employee into the database |
| session.insertObject(anEmployee); |
| |
| // Write an employee into the database |
| session.writeObject(new org.eclipse.persistence.testing.models.employee.domain.EmployeePopulator().basicEmployeeExample2()); |
| |
| // Read all employees from the database |
| session.readAllObjects(Employee.class); |
| |
| // Delete objects from the database |
| session.deleteObject(anEmployee); |
| |
| try { |
| session.getLog().close(); |
| } catch (IOException e) { |
| } |
| |
| // Set SQL logging to previous values |
| session.setLog(oldLog); |
| |
| // Dump the contents of the log file to the screen. |
| getSession().logMessage("================================================================"); |
| getSession().logMessage("Dumping contents of log file (" + getLogFileName() + ") to screen."); |
| |
| try { |
| BufferedReader input = new BufferedReader(new FileReader(getLogFileName())); |
| |
| for (String nextLine = ""; nextLine != null; nextLine = input.readLine()) { |
| getSession().logMessage(nextLine); |
| } |
| } catch (FileNotFoundException exception) { |
| TestException testException = new TestException("The log file was not found :" + getLogFileName()); |
| testException.setInternalException(exception); |
| throw testException; |
| } catch (IOException exception) { |
| TestException testException = new TestException("Could not read from log file :" + getLogFileName()); |
| testException.setInternalException(exception); |
| throw testException; |
| } |
| |
| getSession().logMessage("================== DONE (Dumping contents of log file.) ===================="); |
| } |
| } |