1 /* 2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package test.sql; 24 25 import java.sql.SQLException; 26 import java.sql.SQLTransientException; 27 import static org.testng.Assert.*; 28 import org.testng.annotations.Test; 29 import util.BaseTest; 30 31 public class SQLTransientExceptionTests extends BaseTest { 32 33 /** 34 * Create SQLTransientException and setting all objects to null 35 */ 36 @Test 37 public void test() { 38 SQLTransientException e = new SQLTransientException(null, 39 null, errorCode, null); 40 assertTrue(e.getMessage() == null && e.getSQLState() == null 41 && e.getCause() == null && e.getErrorCode() == errorCode); 42 } 43 44 /** 45 * Create SQLTransientException with no-arg constructor 46 */ 47 @Test 48 public void test1() { 49 SQLTransientException ex = new SQLTransientException(); 50 assertTrue(ex.getMessage() == null 51 && ex.getSQLState() == null 52 && ex.getCause() == null 53 && ex.getErrorCode() == 0); 54 } 55 56 /** 57 * Create SQLTransientException with message 58 */ 59 @Test 60 public void test2() { 61 SQLTransientException ex = new SQLTransientException(reason); 62 assertTrue(ex.getMessage().equals(reason) 63 && ex.getSQLState() == null 64 && ex.getCause() == null 65 && ex.getErrorCode() == 0); 66 } 67 68 /** 69 * Create SQLTransientException with message, and SQLState 70 */ 71 @Test 72 public void test3() { 73 SQLTransientException ex = new SQLTransientException(reason, state); 74 assertTrue(ex.getMessage().equals(reason) 75 && ex.getSQLState().equals(state) 76 && ex.getCause() == null 77 && ex.getErrorCode() == 0); 78 } 79 80 /** 81 * Create SQLTransientException with message, SQLState, and error code 82 */ 83 @Test 84 public void test4() { 85 SQLTransientException ex = new SQLTransientException(reason, state, errorCode); 86 assertTrue(ex.getMessage().equals(reason) 87 && ex.getSQLState().equals(state) 88 && ex.getCause() == null 89 && ex.getErrorCode() == errorCode); 90 } 91 92 /** 93 * Create SQLTransientException with message, SQLState, errorCode, and Throwable 94 */ 95 @Test 96 public void test5() { 97 SQLTransientException ex = 98 new SQLTransientException(reason, state, errorCode, t); 99 assertTrue(ex.getMessage().equals(reason) 100 && ex.getSQLState().equals(state) 101 && cause.equals(ex.getCause().toString()) 102 && ex.getErrorCode() == errorCode); 103 } 104 105 /** 106 * Create SQLTransientException with message, SQLState, and Throwable 107 */ 108 @Test 109 public void test6() { 110 SQLTransientException ex = new SQLTransientException(reason, state, t); 111 assertTrue(ex.getMessage().equals(reason) 112 && ex.getSQLState().equals(state) 113 && cause.equals(ex.getCause().toString()) 114 && ex.getErrorCode() == 0); 115 } 116 117 /** 118 * Create SQLTransientException with message, and Throwable 119 */ 120 @Test 121 public void test7() { 122 SQLTransientException ex = new SQLTransientException(reason, t); 123 assertTrue(ex.getMessage().equals(reason) 124 && ex.getSQLState() == null 125 && cause.equals(ex.getCause().toString()) 126 && ex.getErrorCode() == 0); 127 } 128 129 /** 130 * Create SQLTransientException with null Throwable 131 */ 132 @Test 133 public void test8() { 134 SQLTransientException ex = new SQLTransientException((Throwable)null); 135 assertTrue(ex.getMessage() == null 136 && ex.getSQLState() == null 137 && ex.getCause() == null 138 && ex.getErrorCode() == 0); 139 } 140 141 /** 142 * Create SQLTransientException with Throwable 143 */ 144 @Test 145 public void test9() { 146 SQLTransientException ex = new SQLTransientException(t); 147 assertTrue(ex.getMessage().equals(cause) 148 && ex.getSQLState() == null 149 && cause.equals(ex.getCause().toString()) 150 && ex.getErrorCode() == 0); 151 } 152 153 /** 154 * Serialize a SQLTransientException and make sure you can read it back properly 155 */ 156 @Test 157 public void test10() throws Exception { 158 SQLTransientException e = 159 new SQLTransientException(reason, state, errorCode, t); 160 SQLTransientException ex1 = createSerializedException(e); 161 assertTrue(reason.equals(ex1.getMessage()) 162 && ex1.getSQLState().equals(state) 163 && cause.equals(ex1.getCause().toString()) 164 && ex1.getErrorCode() == errorCode); 165 } 166 167 /** 168 * Validate that the ordering of the returned Exceptions is correct 169 * using for-each loop 170 */ 171 @Test 172 public void test11() { 173 SQLTransientException ex = new SQLTransientException("Exception 1", t1); 174 SQLTransientException ex1 = new SQLTransientException("Exception 2"); 175 SQLTransientException ex2 = new SQLTransientException("Exception 3", t2); 176 ex.setNextException(ex1); 177 ex.setNextException(ex2); 178 int num = 0; 179 for (Throwable e : ex) { 180 assertTrue(msgs[num++].equals(e.getMessage())); 181 } 182 } 183 184 /** 185 * Validate that the ordering of the returned Exceptions is correct 186 * using traditional while loop 187 */ 188 @Test 189 public void test12() { 190 SQLTransientException ex = new SQLTransientException("Exception 1", t1); 191 SQLTransientException ex1 = new SQLTransientException("Exception 2"); 192 SQLTransientException ex2 = new SQLTransientException("Exception 3", t2); 193 ex.setNextException(ex1); 194 ex.setNextException(ex2); 195 int num = 0; 196 SQLException sqe = ex; 197 while (sqe != null) { 198 assertTrue(msgs[num++].equals(sqe.getMessage())); 199 Throwable c = sqe.getCause(); 200 while (c != null) { 201 assertTrue(msgs[num++].equals(c.getMessage())); 202 c = c.getCause(); 203 } 204 sqe = sqe.getNextException(); 205 } 206 } 207 }