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