177391c2a01ce1fed085906743cc240a4d58edd92chrismair/* 277391c2a01ce1fed085906743cc240a4d58edd92chrismair * Copyright 2007 the original author or authors. 377391c2a01ce1fed085906743cc240a4d58edd92chrismair * 477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 577391c2a01ce1fed085906743cc240a4d58edd92chrismair * you may not use this file except in compliance with the License. 677391c2a01ce1fed085906743cc240a4d58edd92chrismair * You may obtain a copy of the License at 777391c2a01ce1fed085906743cc240a4d58edd92chrismair * 877391c2a01ce1fed085906743cc240a4d58edd92chrismair * http://www.apache.org/licenses/LICENSE-2.0 977391c2a01ce1fed085906743cc240a4d58edd92chrismair * 1077391c2a01ce1fed085906743cc240a4d58edd92chrismair * Unless required by applicable law or agreed to in writing, software 1177391c2a01ce1fed085906743cc240a4d58edd92chrismair * distributed under the License is distributed on an "AS IS" BASIS, 1277391c2a01ce1fed085906743cc240a4d58edd92chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1377391c2a01ce1fed085906743cc240a4d58edd92chrismair * See the License for the specific language governing permissions and 1477391c2a01ce1fed085906743cc240a4d58edd92chrismair * limitations under the License. 1577391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 1677391c2a01ce1fed085906743cc240a4d58edd92chrismairpackage org.mockftpserver.test; 1777391c2a01ce1fed085906743cc240a4d58edd92chrismair 1877391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.io.File; 1977391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.net.InetAddress; 2077391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.net.UnknownHostException; 2177391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.ArrayList; 2277391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.Arrays; 2377391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.Collections; 2477391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.HashMap; 2577391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.HashSet; 2677391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.Iterator; 2777391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.List; 2877391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.Map; 2977391c2a01ce1fed085906743cc240a4d58edd92chrismairimport java.util.Set; 3077391c2a01ce1fed085906743cc240a4d58edd92chrismair 3177391c2a01ce1fed085906743cc240a4d58edd92chrismairimport junit.framework.TestCase; 3277391c2a01ce1fed085906743cc240a4d58edd92chrismair 3377391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.apache.log4j.Logger; 3477391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.easymock.MockControl; 3577391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.mockftpserver.core.MockFtpServerException; 3677391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.mockftpserver.core.util.Assert; 3777391c2a01ce1fed085906743cc240a4d58edd92chrismairimport org.mockftpserver.core.util.AssertFailedException; 3877391c2a01ce1fed085906743cc240a4d58edd92chrismair 3977391c2a01ce1fed085906743cc240a4d58edd92chrismair/** 4077391c2a01ce1fed085906743cc240a4d58edd92chrismair * Abstract superclass for all project test classes 4177391c2a01ce1fed085906743cc240a4d58edd92chrismair * 4277391c2a01ce1fed085906743cc240a4d58edd92chrismair * @version $Revision$ - $Date$ 4377391c2a01ce1fed085906743cc240a4d58edd92chrismair * 4477391c2a01ce1fed085906743cc240a4d58edd92chrismair * @author Chris Mair 4577391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 4677391c2a01ce1fed085906743cc240a4d58edd92chrismairpublic abstract class AbstractTest extends TestCase { 4777391c2a01ce1fed085906743cc240a4d58edd92chrismair 4877391c2a01ce1fed085906743cc240a4d58edd92chrismair private static final Logger LOG = Logger.getLogger(AbstractTest.class); 4977391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static final List EMPTY_LIST = Collections.EMPTY_LIST; 5077391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static final String[] EMPTY = new String[0]; 5177391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static final InetAddress DEFAULT_HOST = inetAddress(null); 5277391c2a01ce1fed085906743cc240a4d58edd92chrismair 5377391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 5477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Constructor 5577391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 5677391c2a01ce1fed085906743cc240a4d58edd92chrismair public AbstractTest() { 5777391c2a01ce1fed085906743cc240a4d58edd92chrismair super(); 5877391c2a01ce1fed085906743cc240a4d58edd92chrismair } 5977391c2a01ce1fed085906743cc240a4d58edd92chrismair 6077391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 6177391c2a01ce1fed085906743cc240a4d58edd92chrismair // Manage EasyMock Control objects under the covers, and provide a syntax 6277391c2a01ce1fed085906743cc240a4d58edd92chrismair // somewhat similar to EasyMock 2.2 for createMock, verify and replay. 6377391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 6477391c2a01ce1fed085906743cc240a4d58edd92chrismair 6577391c2a01ce1fed085906743cc240a4d58edd92chrismair private Map mocks = new HashMap(); 6677391c2a01ce1fed085906743cc240a4d58edd92chrismair 6777391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 6877391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create a new mock for the specified interface. Keep track of the associated control object 6977391c2a01ce1fed085906743cc240a4d58edd92chrismair * under the covers to support the associated method. 7077391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param interfaceToMock - the Class of the interface to be mocked 7177391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the new mock 7277391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 7377391c2a01ce1fed085906743cc240a4d58edd92chrismair protected Object createMock(Class interfaceToMock) { 7477391c2a01ce1fed085906743cc240a4d58edd92chrismair MockControl control = MockControl.createControl(interfaceToMock); 7577391c2a01ce1fed085906743cc240a4d58edd92chrismair Object mock = control.getMock(); 7677391c2a01ce1fed085906743cc240a4d58edd92chrismair mocks.put(mock, control); 7777391c2a01ce1fed085906743cc240a4d58edd92chrismair return mock; 7877391c2a01ce1fed085906743cc240a4d58edd92chrismair } 7977391c2a01ce1fed085906743cc240a4d58edd92chrismair 8077391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 8177391c2a01ce1fed085906743cc240a4d58edd92chrismair * Put the mock object into replay mode 8277391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param mock - the mock to set in replay mode 8377391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws AssertFailedException - if mock is null 8477391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws AssertFailedException - if mock is not a mock object created using {@link #createMock(Class)} 8577391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 8677391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void replay(Object mock) { 8777391c2a01ce1fed085906743cc240a4d58edd92chrismair control(mock).replay(); 8877391c2a01ce1fed085906743cc240a4d58edd92chrismair } 8977391c2a01ce1fed085906743cc240a4d58edd92chrismair 9077391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 9177391c2a01ce1fed085906743cc240a4d58edd92chrismair * Put all mocks created with createMock() into replay mode. 9277391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 9377391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void replayAll() { 9477391c2a01ce1fed085906743cc240a4d58edd92chrismair for (Iterator iter = mocks.keySet().iterator(); iter.hasNext();) { 9577391c2a01ce1fed085906743cc240a4d58edd92chrismair Object mock = iter.next(); 9677391c2a01ce1fed085906743cc240a4d58edd92chrismair replay(mock); 9777391c2a01ce1fed085906743cc240a4d58edd92chrismair } 9877391c2a01ce1fed085906743cc240a4d58edd92chrismair } 9977391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 10077391c2a01ce1fed085906743cc240a4d58edd92chrismair * Verify the mock object 10177391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param mock - the mock to verify 10277391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws AssertFailedException - if mock is null 10377391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws AssertFailedException - if mock is not a mock object created using {@link #createMock(Class)} 10477391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 10577391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void verify(Object mock) { 10677391c2a01ce1fed085906743cc240a4d58edd92chrismair control(mock).verify(); 10777391c2a01ce1fed085906743cc240a4d58edd92chrismair } 10877391c2a01ce1fed085906743cc240a4d58edd92chrismair 10977391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 11077391c2a01ce1fed085906743cc240a4d58edd92chrismair * Verify all mocks created with createMock() into replay mode. 11177391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 11277391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void verifyAll() { 11377391c2a01ce1fed085906743cc240a4d58edd92chrismair for (Iterator iter = mocks.keySet().iterator(); iter.hasNext();) { 11477391c2a01ce1fed085906743cc240a4d58edd92chrismair Object mock = iter.next(); 11577391c2a01ce1fed085906743cc240a4d58edd92chrismair verify(mock); 11677391c2a01ce1fed085906743cc240a4d58edd92chrismair } 11777391c2a01ce1fed085906743cc240a4d58edd92chrismair } 11877391c2a01ce1fed085906743cc240a4d58edd92chrismair 11977391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 12077391c2a01ce1fed085906743cc240a4d58edd92chrismair * Return the mock control associated with the mock 12177391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param mock - the mock 12277391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the associated MockControl 12377391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws AssertFailedException - if mock is null 12477391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws AssertFailedException - if mock is not a mock object created using {@link #createMock(Class)} 12577391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 12677391c2a01ce1fed085906743cc240a4d58edd92chrismair protected MockControl control(Object mock) { 12777391c2a01ce1fed085906743cc240a4d58edd92chrismair Assert.notNull(mock, "mock"); 12877391c2a01ce1fed085906743cc240a4d58edd92chrismair MockControl control = (MockControl) mocks.get(mock); 12977391c2a01ce1fed085906743cc240a4d58edd92chrismair Assert.notNull(control, "control"); 13077391c2a01ce1fed085906743cc240a4d58edd92chrismair return control; 13177391c2a01ce1fed085906743cc240a4d58edd92chrismair } 13277391c2a01ce1fed085906743cc240a4d58edd92chrismair 13377391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 13477391c2a01ce1fed085906743cc240a4d58edd92chrismair // Other Helper Methods 13577391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 13677391c2a01ce1fed085906743cc240a4d58edd92chrismair 13777391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 13877391c2a01ce1fed085906743cc240a4d58edd92chrismair * Assert that the two objects are not equal 13977391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param object1 - the first object 14077391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param object2 - the second object 14177391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 14277391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void assertNotEquals(String message, Object object1, Object object2) { 14377391c2a01ce1fed085906743cc240a4d58edd92chrismair assertFalse(message, object1.equals(object2)); 14477391c2a01ce1fed085906743cc240a4d58edd92chrismair } 14577391c2a01ce1fed085906743cc240a4d58edd92chrismair 14677391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 14777391c2a01ce1fed085906743cc240a4d58edd92chrismair * Assert that the two byte arrays have the same length and content 14877391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param array1 - the first array 14977391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param array2 - the second array 15077391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 15177391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void assertEquals(String message, byte[] array1, byte[] array2) { 15277391c2a01ce1fed085906743cc240a4d58edd92chrismair assertTrue("Arrays not equal: " + message, Arrays.equals(array1, array2)); 15377391c2a01ce1fed085906743cc240a4d58edd92chrismair } 15477391c2a01ce1fed085906743cc240a4d58edd92chrismair 15577391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 15677391c2a01ce1fed085906743cc240a4d58edd92chrismair * Assert that the two Object arrays have the same length and content 15777391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param array1 - the first array 15877391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param array2 - the second array 15977391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 16077391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void assertEquals(String message, Object[] array1, Object[] array2) { 16177391c2a01ce1fed085906743cc240a4d58edd92chrismair assertTrue("Arrays not equal: " + message, Arrays.equals(array1, array2)); 16277391c2a01ce1fed085906743cc240a4d58edd92chrismair } 16377391c2a01ce1fed085906743cc240a4d58edd92chrismair 16477391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 16577391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create and return a one-element Object[] containing the specified Object 16677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param o - the object 16777391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the Object array, of length 1, containing o 16877391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 16977391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static Object[] objArray(Object o) { 17077391c2a01ce1fed085906743cc240a4d58edd92chrismair return new Object[] { o }; 17177391c2a01ce1fed085906743cc240a4d58edd92chrismair } 17277391c2a01ce1fed085906743cc240a4d58edd92chrismair 17377391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 17477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create and return a one-element String[] containing the specified String 17577391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param s - the String 17677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the String array, of length 1, containing s 17777391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 17877391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static String[] array(String s) { 17977391c2a01ce1fed085906743cc240a4d58edd92chrismair return new String[] { s }; 18077391c2a01ce1fed085906743cc240a4d58edd92chrismair } 18177391c2a01ce1fed085906743cc240a4d58edd92chrismair 18277391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 18377391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create and return a two-element String[] containing the specified Strings 18477391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param s1 - the first String 18577391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param s2 - the second String 18677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the String array, of length 2, containing s1 and s2 18777391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 18877391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static String[] array(String s1, String s2) { 18977391c2a01ce1fed085906743cc240a4d58edd92chrismair return new String[] { s1, s2 }; 19077391c2a01ce1fed085906743cc240a4d58edd92chrismair } 19177391c2a01ce1fed085906743cc240a4d58edd92chrismair 19277391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 19377391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create a new InetAddress from the specified host String, using the 19477391c2a01ce1fed085906743cc240a4d58edd92chrismair * {@link InetAddress#getByName(String)} method, wrapping any checked 19577391c2a01ce1fed085906743cc240a4d58edd92chrismair * exception within a unchecked MockFtpServerException. 19677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param host 19777391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return an InetAddress for the specified host 19877391c2a01ce1fed085906743cc240a4d58edd92chrismair * 19977391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws MockFtpServerException - if an UnknownHostException is thrown 20077391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 20177391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static InetAddress inetAddress(String host) { 20277391c2a01ce1fed085906743cc240a4d58edd92chrismair try { 20377391c2a01ce1fed085906743cc240a4d58edd92chrismair return InetAddress.getByName(host); 20477391c2a01ce1fed085906743cc240a4d58edd92chrismair } 20577391c2a01ce1fed085906743cc240a4d58edd92chrismair catch (UnknownHostException e) { 20677391c2a01ce1fed085906743cc240a4d58edd92chrismair throw new MockFtpServerException(e); 20777391c2a01ce1fed085906743cc240a4d58edd92chrismair } 20877391c2a01ce1fed085906743cc240a4d58edd92chrismair } 20977391c2a01ce1fed085906743cc240a4d58edd92chrismair 21077391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 21177391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create and return a List containing the Objects passed as arguments to this method 21277391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e1- the first element to add 21377391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e2- the second element to add 21477391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the List containing the specified elements 21577391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 21677391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static List list(Object e1, Object e2) { 21777391c2a01ce1fed085906743cc240a4d58edd92chrismair List list = new ArrayList(); 21877391c2a01ce1fed085906743cc240a4d58edd92chrismair list.add(e1); 21977391c2a01ce1fed085906743cc240a4d58edd92chrismair list.add(e2); 22077391c2a01ce1fed085906743cc240a4d58edd92chrismair return list; 22177391c2a01ce1fed085906743cc240a4d58edd92chrismair } 22277391c2a01ce1fed085906743cc240a4d58edd92chrismair 22377391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 22477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create and return a List containing the single Object passed as an argument to this method 22577391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param element- the element to add 22677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the List containing the specified element 22777391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 22877391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static List list(Object element) { 22977391c2a01ce1fed085906743cc240a4d58edd92chrismair return Collections.singletonList(element); 23077391c2a01ce1fed085906743cc240a4d58edd92chrismair } 23177391c2a01ce1fed085906743cc240a4d58edd92chrismair 23277391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 23377391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create and return a Set containing the Objects passed as arguments to this method 23477391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e1 - the first element to add 23577391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e2 - the second element to add 23677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the Set containing the specified elements 23777391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 23877391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static Set set(Object e1, Object e2) { 23977391c2a01ce1fed085906743cc240a4d58edd92chrismair Set set = new HashSet(); 24077391c2a01ce1fed085906743cc240a4d58edd92chrismair set.add(e1); 24177391c2a01ce1fed085906743cc240a4d58edd92chrismair set.add(e2); 24277391c2a01ce1fed085906743cc240a4d58edd92chrismair return set; 24377391c2a01ce1fed085906743cc240a4d58edd92chrismair } 24477391c2a01ce1fed085906743cc240a4d58edd92chrismair 24577391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 24677391c2a01ce1fed085906743cc240a4d58edd92chrismair * Create and return a Set containing the Objects passed as arguments to this method 24777391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e1 - the first element to add 24877391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e2 - the second element to add 24977391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e3 - the third element to add 25077391c2a01ce1fed085906743cc240a4d58edd92chrismair * @return the Set containing the specified elements 25177391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 25277391c2a01ce1fed085906743cc240a4d58edd92chrismair protected static Set set(Object e1, Object e2, Object e3) { 25377391c2a01ce1fed085906743cc240a4d58edd92chrismair Set set = set(e1, e2); 25477391c2a01ce1fed085906743cc240a4d58edd92chrismair set.add(e3); 25577391c2a01ce1fed085906743cc240a4d58edd92chrismair return set; 25677391c2a01ce1fed085906743cc240a4d58edd92chrismair } 25777391c2a01ce1fed085906743cc240a4d58edd92chrismair 25877391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 25977391c2a01ce1fed085906743cc240a4d58edd92chrismair * Override the default test run behavior to write out the current test name 26077391c2a01ce1fed085906743cc240a4d58edd92chrismair * and handle Errors and Exceptions in a standard way. 26177391c2a01ce1fed085906743cc240a4d58edd92chrismair * 26277391c2a01ce1fed085906743cc240a4d58edd92chrismair * @see junit.framework.TestCase#runBare() 26377391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 26477391c2a01ce1fed085906743cc240a4d58edd92chrismair public void runBare() throws Throwable { 26577391c2a01ce1fed085906743cc240a4d58edd92chrismair 26677391c2a01ce1fed085906743cc240a4d58edd92chrismair LoggingUtil loggingUtil = null; 26777391c2a01ce1fed085906743cc240a4d58edd92chrismair try { 26877391c2a01ce1fed085906743cc240a4d58edd92chrismair loggingUtil = LoggingUtil.getTestCaseLogger(this); 26977391c2a01ce1fed085906743cc240a4d58edd92chrismair loggingUtil.logStartOfTest(); 27077391c2a01ce1fed085906743cc240a4d58edd92chrismair super.runBare(); 27177391c2a01ce1fed085906743cc240a4d58edd92chrismair } 27277391c2a01ce1fed085906743cc240a4d58edd92chrismair catch (Exception e) { 27377391c2a01ce1fed085906743cc240a4d58edd92chrismair handleException(e); 27477391c2a01ce1fed085906743cc240a4d58edd92chrismair } 27577391c2a01ce1fed085906743cc240a4d58edd92chrismair catch (Error e) { 27677391c2a01ce1fed085906743cc240a4d58edd92chrismair handleError(e); 27777391c2a01ce1fed085906743cc240a4d58edd92chrismair } 27877391c2a01ce1fed085906743cc240a4d58edd92chrismair finally { 27977391c2a01ce1fed085906743cc240a4d58edd92chrismair if (loggingUtil != null) { 28077391c2a01ce1fed085906743cc240a4d58edd92chrismair loggingUtil.logEndOfTest(); 28177391c2a01ce1fed085906743cc240a4d58edd92chrismair } 28277391c2a01ce1fed085906743cc240a4d58edd92chrismair } 28377391c2a01ce1fed085906743cc240a4d58edd92chrismair } 28477391c2a01ce1fed085906743cc240a4d58edd92chrismair 28577391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 28677391c2a01ce1fed085906743cc240a4d58edd92chrismair * Setup before each test. 28777391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 28877391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void setUp() throws Exception { 28977391c2a01ce1fed085906743cc240a4d58edd92chrismair super.setUp(); 29077391c2a01ce1fed085906743cc240a4d58edd92chrismair } 29177391c2a01ce1fed085906743cc240a4d58edd92chrismair 29277391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 29377391c2a01ce1fed085906743cc240a4d58edd92chrismair * Cleanup after each test. 29477391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 29577391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void tearDown() throws Exception { 29677391c2a01ce1fed085906743cc240a4d58edd92chrismair super.tearDown(); 29777391c2a01ce1fed085906743cc240a4d58edd92chrismair } 29877391c2a01ce1fed085906743cc240a4d58edd92chrismair 29977391c2a01ce1fed085906743cc240a4d58edd92chrismair //----------------------------------------------------------- 30077391c2a01ce1fed085906743cc240a4d58edd92chrismair // Private Internal Methods 30177391c2a01ce1fed085906743cc240a4d58edd92chrismair //----------------------------------------------------------- 30277391c2a01ce1fed085906743cc240a4d58edd92chrismair 30377391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 30477391c2a01ce1fed085906743cc240a4d58edd92chrismair * Handle an exception 30577391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e the Exception 30677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws Exception 30777391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 30877391c2a01ce1fed085906743cc240a4d58edd92chrismair private void handleException(Exception e) throws Exception { 30977391c2a01ce1fed085906743cc240a4d58edd92chrismair 31077391c2a01ce1fed085906743cc240a4d58edd92chrismair LOG.error("EXCEPTION: ", e); 31177391c2a01ce1fed085906743cc240a4d58edd92chrismair throw e; 31277391c2a01ce1fed085906743cc240a4d58edd92chrismair } 31377391c2a01ce1fed085906743cc240a4d58edd92chrismair 31477391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 31577391c2a01ce1fed085906743cc240a4d58edd92chrismair * Handle an Error 31677391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param e the Error 31777391c2a01ce1fed085906743cc240a4d58edd92chrismair * @throws Exception 31877391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 31977391c2a01ce1fed085906743cc240a4d58edd92chrismair private void handleError(Error e) throws Exception { 32077391c2a01ce1fed085906743cc240a4d58edd92chrismair LOG.error("ERROR: ", e); 32177391c2a01ce1fed085906743cc240a4d58edd92chrismair throw e; 32277391c2a01ce1fed085906743cc240a4d58edd92chrismair } 32377391c2a01ce1fed085906743cc240a4d58edd92chrismair 32477391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 32577391c2a01ce1fed085906743cc240a4d58edd92chrismair // Helper methods 32677391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 32777391c2a01ce1fed085906743cc240a4d58edd92chrismair 32877391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 32977391c2a01ce1fed085906743cc240a4d58edd92chrismair * Delete the named file if it exists 33077391c2a01ce1fed085906743cc240a4d58edd92chrismair * 33177391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param filename - the full pathname of the file 33277391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 33377391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void deleteFile(String filename) { 33477391c2a01ce1fed085906743cc240a4d58edd92chrismair File keyFile = new File(filename); 33577391c2a01ce1fed085906743cc240a4d58edd92chrismair boolean deleted = keyFile.delete(); 33677391c2a01ce1fed085906743cc240a4d58edd92chrismair LOG.info("Deleted [" + filename + "]: " + deleted); 33777391c2a01ce1fed085906743cc240a4d58edd92chrismair } 33877391c2a01ce1fed085906743cc240a4d58edd92chrismair 33977391c2a01ce1fed085906743cc240a4d58edd92chrismair 34077391c2a01ce1fed085906743cc240a4d58edd92chrismair 34177391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 34277391c2a01ce1fed085906743cc240a4d58edd92chrismair // Common validation helper methods 34377391c2a01ce1fed085906743cc240a4d58edd92chrismair //------------------------------------------------------------------------- 34477391c2a01ce1fed085906743cc240a4d58edd92chrismair 34577391c2a01ce1fed085906743cc240a4d58edd92chrismair /** 34677391c2a01ce1fed085906743cc240a4d58edd92chrismair * Verify that the named file exists 34777391c2a01ce1fed085906743cc240a4d58edd92chrismair * 34877391c2a01ce1fed085906743cc240a4d58edd92chrismair * @param filename - the full pathname of the file 34977391c2a01ce1fed085906743cc240a4d58edd92chrismair */ 35077391c2a01ce1fed085906743cc240a4d58edd92chrismair protected void verifyFileExists(String filename) { 35177391c2a01ce1fed085906743cc240a4d58edd92chrismair File keyFile = new File(filename); 35277391c2a01ce1fed085906743cc240a4d58edd92chrismair assertTrue("File does not exist [" + filename + "]", keyFile.exists()); 35377391c2a01ce1fed085906743cc240a4d58edd92chrismair } 35477391c2a01ce1fed085906743cc240a4d58edd92chrismair 35577391c2a01ce1fed085906743cc240a4d58edd92chrismair} 356