package com.getsentry.raven.connection; import com.getsentry.raven.DefaultRavenFactory; import com.getsentry.raven.Raven; import com.getsentry.raven.dsn.Dsn; import com.getsentry.raven.event.Event; import org.testng.annotations.Test; import java.util.concurrent.atomic.AtomicBoolean; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class EventSendFailureCallbackTest { @Test public void testSimpleCallback() { final AtomicBoolean flag = new AtomicBoolean(false); DefaultRavenFactory factory = new DefaultRavenFactory() { @Override protected Connection createConnection(Dsn dsn) { Connection connection = super.createConnection(dsn); connection.addEventSendFailureCallback(new EventSendFailureCallback() { @Override public void onFailure(Event event, Exception exception) { flag.set(true); } }); return connection; } }; String dsn = "https://foo:bar@localhost:1234/1?raven.async=false"; Raven raven = factory.createRavenInstance(new Dsn(dsn)); raven.sendMessage("Message that will fail because DSN points to garbage."); assertThat(flag.get(), is(true)); } @Test public void testExceptionInsideCallback() { DefaultRavenFactory factory = new DefaultRavenFactory() { @Override protected Connection createConnection(Dsn dsn) { Connection connection = super.createConnection(dsn); connection.addEventSendFailureCallback(new EventSendFailureCallback() { @Override public void onFailure(Event event, Exception exception) { throw new RuntimeException("Error inside of EventSendFailureCallback"); } }); return connection; } }; String dsn = "https://foo:bar@localhost:1234/1?raven.async=false"; Raven raven = factory.createRavenInstance(new Dsn(dsn)); raven.sendMessage("Message that will fail because DSN points to garbage."); } }