1f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair/* 2f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Copyright 2007 the original author or authors. 3f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 4f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * you may not use this file except in compliance with the License. 6f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * You may obtain a copy of the License at 7f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 8f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * http://www.apache.org/licenses/LICENSE-2.0 9f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 10f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Unless required by applicable law or agreed to in writing, software 11f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * distributed under the License is distributed on an "AS IS" BASIS, 12f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * See the License for the specific language governing permissions and 14f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * limitations under the License. 15f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 16f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairpackage org.mockftpserver.test; 17f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 18f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.io.File; 19f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.net.InetAddress; 20f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.net.UnknownHostException; 21f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.ArrayList; 22f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.Arrays; 23f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.Collections; 24f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.HashMap; 25f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.HashSet; 26f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.Iterator; 27f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.List; 28f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.Map; 29f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport java.util.Set; 30f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 31f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport junit.framework.TestCase; 32f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 33f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport org.apache.log4j.Logger; 34f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport org.easymock.MockControl; 35f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport org.mockftpserver.core.MockFtpServerException; 36f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport org.mockftpserver.core.util.Assert; 37f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairimport org.mockftpserver.core.util.AssertFailedException; 38f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 39f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair/** 40f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Abstract superclass for all project test classes 41f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 42f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @version $Revision$ - $Date$ 43f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 44f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @author Chris Mair 45f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 46f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismairpublic abstract class AbstractTest extends TestCase { 47f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 48f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair private static final Logger LOG = Logger.getLogger(AbstractTest.class); 49f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static final List EMPTY_LIST = Collections.EMPTY_LIST; 50f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static final String[] EMPTY = new String[0]; 51f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static final InetAddress DEFAULT_HOST = inetAddress(null); 52f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 53f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 54f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Constructor 55f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 56f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair public AbstractTest() { 57f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair super(); 58f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 59f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 60f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 61f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair // Manage EasyMock Control objects under the covers, and provide a syntax 62f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair // somewhat similar to EasyMock 2.2 for createMock, verify and replay. 63f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 64f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 65f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair private Map mocks = new HashMap(); 66f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 67f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 68f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Create a new mock for the specified interface. Keep track of the associated control object 69f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * under the covers to support the associated method. 70f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param interfaceToMock - the Class of the interface to be mocked 71f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return the new mock 72f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 73f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected Object createMock(Class interfaceToMock) { 74f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair MockControl control = MockControl.createControl(interfaceToMock); 75f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair Object mock = control.getMock(); 76f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair mocks.put(mock, control); 77f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return mock; 78f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 79f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 80f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 81f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Put the mock object into replay mode 82f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param mock - the mock to set in replay mode 83f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws AssertFailedException - if mock is null 84f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws AssertFailedException - if mock is not a mock object created using {@link #createMock(Class)} 85f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 86f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void replay(Object mock) { 87f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair control(mock).replay(); 88f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 89f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 90f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 91f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Put all mocks created with createMock() into replay mode. 92f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 93f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void replayAll() { 94f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair for (Iterator iter = mocks.keySet().iterator(); iter.hasNext();) { 95f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair Object mock = iter.next(); 96f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair replay(mock); 97f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 98f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 99f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 100f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Verify the mock object 101f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param mock - the mock to verify 102f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws AssertFailedException - if mock is null 103f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws AssertFailedException - if mock is not a mock object created using {@link #createMock(Class)} 104f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 105f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void verify(Object mock) { 106f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair control(mock).verify(); 107f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 108f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 109f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 110f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Verify all mocks created with createMock() into replay mode. 111f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 112f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void verifyAll() { 113f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair for (Iterator iter = mocks.keySet().iterator(); iter.hasNext();) { 114f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair Object mock = iter.next(); 115f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair verify(mock); 116f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 117f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 118f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 119f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 120f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Return the mock control associated with the mock 121f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param mock - the mock 122f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return the associated MockControl 123f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws AssertFailedException - if mock is null 124f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws AssertFailedException - if mock is not a mock object created using {@link #createMock(Class)} 125f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 126f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected MockControl control(Object mock) { 127f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair Assert.notNull(mock, "mock"); 128f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair MockControl control = (MockControl) mocks.get(mock); 129f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair Assert.notNull(control, "control"); 130f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return control; 131f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 132f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 133f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 134f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair // Other Helper Methods 135f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 136f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 137f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 138f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Assert that the two byte arrays have the same length and content 139f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param array1 - the first array 140f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param array2 - the second array 141f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 142f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void assertEquals(String message, byte[] array1, byte[] array2) { 143f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair assertTrue("Arrays not equal: " + message, Arrays.equals(array1, array2)); 144f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 145f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 146f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 147f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Assert that the two Object arrays have the same length and content 148f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param array1 - the first array 149f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param array2 - the second array 150f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 151f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void assertEquals(String message, Object[] array1, Object[] array2) { 152f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair assertTrue("Arrays not equal: " + message, Arrays.equals(array1, array2)); 153f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 154f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 155f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 156f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Create and return a one-element Object[] containing the specified Object 157f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param o - the object 158f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return the Object array, of length 1, containing o 159f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 160f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static Object[] objArray(Object o) { 161f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return new Object[] { o }; 162f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 163f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 164f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 165f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Create and return a one-element String[] containing the specified String 166f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param s - the String 167f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return the String array, of length 1, containing s 168f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 169f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static String[] array(String s) { 170f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return new String[] { s }; 171f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 172f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 173f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 174f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Create and return a two-element String[] containing the specified Strings 175f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param s1 - the first String 176f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param s2 - the second String 177f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return the String array, of length 2, containing s1 and s2 178f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 179f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static String[] array(String s1, String s2) { 180f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return new String[] { s1, s2 }; 181f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 182f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 183f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 184f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Create a new InetAddress from the specified host String, using the 185f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * {@link InetAddress#getByName(String)} method, wrapping any checked 186f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * exception within a unchecked MockFtpServerException. 187f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param host 188f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return an InetAddress for the specified host 189f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 190f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws MockFtpServerException - if an UnknownHostException is thrown 191f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 192f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static InetAddress inetAddress(String host) { 193f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair try { 194f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return InetAddress.getByName(host); 195f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 196f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair catch (UnknownHostException e) { 197f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair throw new MockFtpServerException(e); 198f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 199f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 200f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 201f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 202f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Create and return a List containing the Objects passed as arguments to this method 203f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param e1- the first element to add 204f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param e1- the second element to add 205f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return the List containing the specified elements 206f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 207f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static List list(Object e1, Object e2) { 208f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair List list = new ArrayList(); 209f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair list.add(e1); 210f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair list.add(e2); 211f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return list; 212f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 213f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 214f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 215f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Create and return a Set containing the Objects passed as arguments to this method 216f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param e1- the first element to add 217f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param e1- the second element to add 218f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @return the Set containing the specified elements 219f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 220f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected static Set set(Object e1, Object e2) { 221f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair Set set = new HashSet(); 222f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair set.add(e1); 223f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair set.add(e2); 224f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair return set; 225f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 226f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 227f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 228f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Override the default test run behavior to write out the current test name 229f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * and handle Errors and Exceptions in a standard way. 230f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 231f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @see junit.framework.TestCase#runBare() 232f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 233f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair public void runBare() throws Throwable { 234f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 235f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair LoggingUtil loggingUtil = null; 236f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair try { 237f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair loggingUtil = LoggingUtil.getTestCaseLogger(this); 238f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair loggingUtil.logStartOfTest(); 239f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair super.runBare(); 240f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 241f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair catch (Exception e) { 242f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair handleException(e); 243f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 244f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair catch (Error e) { 245f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair handleError(e); 246f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 247f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair finally { 248f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair if (loggingUtil != null) { 249f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair loggingUtil.logEndOfTest(); 250f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 251f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 252f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 253f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 254f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 255f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Setup before each test. 256f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 257f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void setUp() throws Exception { 258f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair super.setUp(); 259f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 260f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 261f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 262f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Cleanup after each test. 263f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 264f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void tearDown() throws Exception { 265f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair super.tearDown(); 266f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 267f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 268f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //----------------------------------------------------------- 269f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair // Private Internal Methods 270f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //----------------------------------------------------------- 271f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 272f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 273f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Handle an exception 274f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param e the Exception 275f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws Exception 276f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 277f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair private void handleException(Exception e) throws Exception { 278f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 279f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair LOG.error("EXCEPTION: ", e); 280f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair throw e; 281f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 282f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 283f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 284f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Handle an Error 285f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param e the Error 286f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @throws Exception 287f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 288f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair private void handleError(Error e) throws Exception { 289f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair LOG.error("ERROR: ", e); 290f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair throw e; 291f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 292f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 293f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 294f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair // Helper methods 295f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 296f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 297f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 298f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Delete the named file if it exists 299f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 300f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param filename - the full pathname of the file 301f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 302f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void deleteFile(String filename) { 303f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair File keyFile = new File(filename); 304f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair boolean deleted = keyFile.delete(); 305f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair LOG.info("Deleted [" + filename + "]: " + deleted); 306f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 307f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 308f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 309f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 310f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 311f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair // Common validation helper methods 312f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair //------------------------------------------------------------------------- 313f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 314f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair /** 315f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * Verify that the named file exists 316f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * 317f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair * @param filename - the full pathname of the file 318f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair */ 319f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair protected void verifyFileExists(String filename) { 320f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair File keyFile = new File(filename); 321f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair assertTrue("File does not exist [" + filename + "]", keyFile.exists()); 322f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair } 323f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair 324f688bc4bc07500f1548006ebbc4a0bd95f46b106chrismair} 325