@Test public void testPrettyPrintNullSafe3() { ModelFactory mf = ModelFactory.eINSTANCE; ErrorReport report = mf.createErrorReport(); report.setStatus(mf.createStatus()); Throwable t = mf.createThrowable(); t.setClassName("org.test"); report.getStatus().setException(t); Reports.prettyPrint(report); }
@Test public void testDeclaringClassToNull() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { java.lang.Throwable some = new java.lang.Throwable("contains null"); java.lang.StackTraceElement ste = new java.lang.StackTraceElement("class", "method", null, 1); Field field = java.lang.StackTraceElement.class.getDeclaredField("declaringClass"); field.setAccessible(true); field.set(ste, null); some.setStackTrace(new java.lang.StackTraceElement[] {ste}); Throwable sut = Reports.newThrowable(some); Assert.assertEquals("MISSING", sut.getStackTrace().get(0).getClassName()); }
@Test public void testThreadPoolLeakingThreadsWithTribeNode() { Settings settings = ImmutableSettings.builder() .put("node.name", "thread_pool_leaking_threads_tribe_node") .put("path.home", createTempDir()) .put("tribe.t1.cluster.name", "non_existing_cluster") // trigger initialization failure of one of the tribes (doesn't require starting the // node) .put("tribe.t1.plugin.mandatory", "non_existing") .build(); try { NodeBuilder.nodeBuilder().settings(settings).build(); fail("The node startup is supposed to fail"); } catch (Throwable t) { // all good assertThat(t.getMessage(), containsString("mandatory plugins [non_existing]")); } }
private void extractCauses(Throwable failure, List<Throwable> causes) { if (failure instanceof MultipleBuildFailures) { MultipleBuildFailures exception = (MultipleBuildFailures) failure; for (Throwable componentFailure : exception.getCauses()) { extractCauses(componentFailure, causes); } } else if (failure instanceof LocationAwareException) { causes.addAll(((LocationAwareException) failure).getReportableCauses()); } else { causes.add(failure.getCause()); } }
@Test public void testAnonymizeThrowableDtoClassname() { Throwable throwable = createThrowable(NOT_WHITELISTED_CLASSNAME); visit(throwable, new AnonymizeStacktraceVisitor(PREFIX_WHITELIST)); assertThat(throwable.getClassName(), is(ANONYMIZED_TAG)); }
@Test public void testDetachMultipleMultistatusFromCoreException() { // #input // st9 // -ex6 // --cex // ---st8 // ----cex // -----mst7 // ------ex1 // ------st4 // -------cex // --------mst3 // ---------ex2 // ---------st1 // ----------ex3 // ---------st2 // ----------ex4 // ------st6 // -------cex // --------st5 // ---------ex5 Status st = st(ex(cex(st(cex(mst(ex(), st(cex(mst(ex(), st(ex()), st(ex())))), st(cex(st(ex()))))))))); // #expected output // st9 // -st8 // --mst7 // ---ex1 // ---st4 // ----mst3 // -----ex2 // ----st1 // -----ex3 // ----st2 // -----ex4 // ---st6 // ----st5 // -----ex5 org.eclipse.epp.internal.logging.aeri.ui.model.Status st9 = Reports.newStatus(st, configuration); Throwable ex6 = st9.getException(); org.eclipse.epp.internal.logging.aeri.ui.model.Status st8 = st9.getChildren().get(0); org.eclipse.epp.internal.logging.aeri.ui.model.Status mst7 = st8.getChildren().get(0); org.eclipse.epp.internal.logging.aeri.ui.model.Status st4 = mst7.getChildren().get(0); org.eclipse.epp.internal.logging.aeri.ui.model.Status mst3 = st4.getChildren().get(0); org.eclipse.epp.internal.logging.aeri.ui.model.Status st2 = mst3.getChildren().get(1); Throwable ex4 = st2.getException(); org.eclipse.epp.internal.logging.aeri.ui.model.Status st6 = mst7.getChildren().get(1); org.eclipse.epp.internal.logging.aeri.ui.model.Status st5 = st6.getChildren().get(0); Throwable ex5 = st5.getException(); assertThat(st9.getMessage(), is("st9")); assertThat(ex6.getMessage(), is("ex6")); assertThat( st8.getMessage(), is("st8 [detached from CoreException of Status 'st9' by Error Reporting]")); assertThat( mst7.getMessage(), is("mst7 [detached from CoreException of Status 'st8' by Error Reporting]")); assertThat(st4.getMessage(), is("st4")); assertThat( mst3.getMessage(), is("mst3 [detached from CoreException of Status 'st4' by Error Reporting]")); assertThat(st2.getMessage(), is("st2")); assertThat(ex4.getMessage(), is("ex4")); assertThat(st6.getMessage(), is("st6")); assertThat( st5.getMessage(), is("st5 [detached from CoreException of Status 'st6' by Error Reporting]")); assertThat(ex5.getMessage(), is("ex5")); }
@Test public void testDetachMultistatusFromCoreException() { // #input // st4 // -ex4 // --cex // ---mst3 // ----ex1 // ----st1 // -----ex2 // ----st2 // -----ex3 Status st = st(ex(cex(mst(ex(), st(ex()), st(ex()))))); // #expected output // st4 // -ex4 // --cex(mst3) // ---ex1 // -mst3 (moved from cex to st4.children) // --ex1 // --st1 // ---ex2 // --st2 // ---ex3 org.eclipse.epp.internal.logging.aeri.ui.model.Status st4 = Reports.newStatus(st, configuration); Throwable ex4 = st4.getException(); Throwable cex = ex4.getCause(); Throwable ex1 = cex.getCause(); org.eclipse.epp.internal.logging.aeri.ui.model.Status mst3 = st4.getChildren().get(0); Throwable ex1b = mst3.getException(); org.eclipse.epp.internal.logging.aeri.ui.model.Status st1 = mst3.getChildren().get(0); Throwable ex2 = st1.getException(); org.eclipse.epp.internal.logging.aeri.ui.model.Status st2 = mst3.getChildren().get(1); Throwable ex3 = st2.getException(); assertThat(st4.getMessage(), is("st4")); assertThat(ex4.getMessage(), is("ex4")); assertThat(cex.getMessage(), is("mst3")); assertThat(ex1.getMessage(), is("ex1")); assertThat( mst3.getMessage(), is("mst3 [detached from CoreException of Status 'st4' by Error Reporting]")); assertThat(ex1b.getMessage(), is("ex1")); assertThat(st1.getMessage(), is("st1")); assertThat(ex2.getMessage(), is("ex2")); assertThat(st2.getMessage(), is("st2")); assertThat(ex3.getMessage(), is("ex3")); }
@Test public void testAnonymizeThrowableDtoWhitelistedClassname() { Throwable throwable = createThrowable(WHITELISTED_CLASSNAME); visit(throwable, new AnonymizeStacktraceVisitor(PREFIX_WHITELIST)); assertThat(throwable.getClassName(), is(WHITELISTED_CLASSNAME)); }
@Override public void onError(final Throwable t) { t.printStackTrace(); asyncContext.complete(); }