mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-12 01:07:46 +00:00
Code review:
- apply exception-class fallback to connect() too - dedup message construction
This commit is contained in:
+5
-3
@@ -103,7 +103,7 @@ open class BasicRelayClient(
|
||||
socket?.connect()
|
||||
} catch (e: Exception) {
|
||||
if (e is CancellationException) throw e
|
||||
listener.onCannotConnect(this, "Error when trying to connect: ${e.message}")
|
||||
listener.onCannotConnect(this, "Error when trying to connect: ${e.message ?: e::class.simpleName}")
|
||||
listener.onDisconnected(this)
|
||||
dontTryAgainForALongTime()
|
||||
markConnectionAsClosed()
|
||||
@@ -154,7 +154,9 @@ open class BasicRelayClient(
|
||||
} else {
|
||||
socket?.disconnect()
|
||||
|
||||
// suppression rules below must match the raw message; displayMsg is for listener output only
|
||||
val msg = t.message
|
||||
val displayMsg = msg ?: t::class.simpleName
|
||||
|
||||
// checks if this is an actual failure. Closing the socket generates an onFailure as well.
|
||||
// ignore tor errors.
|
||||
@@ -167,9 +169,9 @@ open class BasicRelayClient(
|
||||
)
|
||||
) {
|
||||
if (code != null || response != null) {
|
||||
listener.onCannotConnect(this@BasicRelayClient, "Server Misconfigured. Response: $code $response. Exception: ${t.message ?: t::class.simpleName}")
|
||||
listener.onCannotConnect(this@BasicRelayClient, "Server Misconfigured. Response: $code $response. Exception: $displayMsg")
|
||||
} else {
|
||||
listener.onCannotConnect(this@BasicRelayClient, "WebSocket Failure: ${t.message ?: t::class.simpleName}")
|
||||
listener.onCannotConnect(this@BasicRelayClient, "WebSocket Failure: $displayMsg")
|
||||
}
|
||||
} else {
|
||||
// ignore local disconnect requests and tor errors
|
||||
|
||||
+15
-14
@@ -66,10 +66,14 @@ class BasicRelayClientTest {
|
||||
|
||||
private class MessagelessException : Exception()
|
||||
|
||||
private fun connectAndCapture(
|
||||
builder: FakeWebsocketBuilder,
|
||||
listener: RecordingConnectionListener,
|
||||
): WebSocketListener {
|
||||
private data class Harness(
|
||||
val socketListener: WebSocketListener,
|
||||
val connectionListener: RecordingConnectionListener,
|
||||
)
|
||||
|
||||
private fun connectAndCapture(): Harness {
|
||||
val builder = FakeWebsocketBuilder()
|
||||
val listener = RecordingConnectionListener()
|
||||
val client =
|
||||
BasicRelayClient(
|
||||
NormalizedRelayUrl("wss://relay.example.com/"),
|
||||
@@ -79,15 +83,14 @@ class BasicRelayClientTest {
|
||||
client.connect()
|
||||
val socketListener = builder.capturedListener
|
||||
assertNotNull(socketListener)
|
||||
return socketListener
|
||||
return Harness(socketListener, listener)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun onFailureWithNullMessageReportsExceptionClassName() {
|
||||
val builder = FakeWebsocketBuilder()
|
||||
val listener = RecordingConnectionListener()
|
||||
val (socket, listener) = connectAndCapture()
|
||||
|
||||
connectAndCapture(builder, listener).onFailure(MessagelessException(), null, null)
|
||||
socket.onFailure(MessagelessException(), null, null)
|
||||
|
||||
assertEquals(
|
||||
listOf("WebSocket Failure: MessagelessException"),
|
||||
@@ -97,10 +100,9 @@ class BasicRelayClientTest {
|
||||
|
||||
@Test
|
||||
fun onFailureWithMessageKeepsExistingFormat() {
|
||||
val builder = FakeWebsocketBuilder()
|
||||
val listener = RecordingConnectionListener()
|
||||
val (socket, listener) = connectAndCapture()
|
||||
|
||||
connectAndCapture(builder, listener).onFailure(Exception("Connection reset"), null, null)
|
||||
socket.onFailure(Exception("Connection reset"), null, null)
|
||||
|
||||
assertEquals(
|
||||
listOf("WebSocket Failure: Connection reset"),
|
||||
@@ -110,10 +112,9 @@ class BasicRelayClientTest {
|
||||
|
||||
@Test
|
||||
fun serverMisconfiguredWithNullMessageReportsExceptionClassName() {
|
||||
val builder = FakeWebsocketBuilder()
|
||||
val listener = RecordingConnectionListener()
|
||||
val (socket, listener) = connectAndCapture()
|
||||
|
||||
connectAndCapture(builder, listener).onFailure(MessagelessException(), 200, "OK")
|
||||
socket.onFailure(MessagelessException(), 200, "OK")
|
||||
|
||||
assertEquals(
|
||||
listOf("Server Misconfigured. Response: 200 OK. Exception: MessagelessException"),
|
||||
|
||||
Reference in New Issue
Block a user