|
5 | 5 | import static org.hamcrest.core.IsNot.not;
|
6 | 6 | import static org.junit.Assert.assertThat;
|
7 | 7 |
|
| 8 | +import java.io.BufferedReader; |
| 9 | +import java.io.InputStream; |
| 10 | +import java.io.InputStreamReader; |
| 11 | +import java.io.PrintWriter; |
| 12 | +import java.io.Reader; |
| 13 | + |
8 | 14 | import org.junit.Assert;
|
| 15 | +import org.junit.Ignore; |
9 | 16 | import org.junit.Test;
|
| 17 | +import org.mockito.Matchers; |
| 18 | +import org.mockito.Mockito; |
| 19 | +import org.mockito.invocation.InvocationOnMock; |
| 20 | +import org.mockito.stubbing.Answer; |
10 | 21 |
|
11 | 22 | import com.sap.hcp.cf.logging.common.helper.StacktraceGenerator;
|
12 | 23 |
|
@@ -128,4 +139,35 @@ private String getThreadClassName() {
|
128 | 139 | return stackTraceElement.subSequence(0, i) + Thread.class.getSimpleName();
|
129 | 140 | }
|
130 | 141 |
|
| 142 | + /** |
| 143 | + * This test case can be used for failure analysis. Paste a custom stacktrace |
| 144 | + * into src/test/resources/com/sap/hcp/cf/logging/converter/stacktrace.txt and |
| 145 | + * unignore this test. It will print the formatted stacktrace to the console. |
| 146 | + * |
| 147 | + * @throws Exception |
| 148 | + */ |
| 149 | + @Test |
| 150 | + @Ignore("Use this test for failure analysis of custom stacktraces.") |
| 151 | + public void customStacktrace() throws Exception { |
| 152 | + try (InputStream input = getClass().getResourceAsStream("stacktrace.txt"); |
| 153 | + Reader reader = new InputStreamReader(input); |
| 154 | + BufferedReader stacktrace = new BufferedReader(reader)) { |
| 155 | + Throwable exception = Mockito.mock(Throwable.class); |
| 156 | + Mockito.when(exception.getMessage()).thenReturn("Test-Message"); |
| 157 | + Mockito.doAnswer(new Answer<Void>() { |
| 158 | + |
| 159 | + @Override |
| 160 | + public Void answer(InvocationOnMock invocation) throws Throwable { |
| 161 | + PrintWriter writer = (PrintWriter) invocation.getArguments()[0]; |
| 162 | + stacktrace.lines().forEach(l -> writer.println(l)); |
| 163 | + return null; |
| 164 | + } |
| 165 | + }).when(exception).printStackTrace(Matchers.any(PrintWriter.class)); |
| 166 | + DefaultStacktraceConverter converter = new DefaultStacktraceConverter(); |
| 167 | + StringBuilder sb = new StringBuilder(); |
| 168 | + converter.convert(exception, sb); |
| 169 | + System.out.print(sb.toString()); |
| 170 | + } |
| 171 | + } |
| 172 | + |
131 | 173 | }
|
0 commit comments