From dd13119f125138d5b5db18ac1da2d2273e9df1ec Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 27 Jul 2017 13:57:29 -0400 Subject: [PATCH] Add more instrumentation to CallService. // FREEBIE --- Signal/src/call/CallService.swift | 22 ++++---- .../src/Util/OWSAnalyticsEvents.h | 22 ++++++++ .../src/Util/OWSAnalyticsEvents.m | 55 +++++++++++++++++++ 3 files changed, 88 insertions(+), 11 deletions(-) diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index 30a800cac..4a28852a1 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -338,7 +338,7 @@ protocol CallServiceObserver: class { // Don't let the outgoing call ring forever. We don't support inbound ringing forever anyway. let timeout: Promise = after(interval: TimeInterval(connectingTimeoutSeconds)).then { () -> Void in // rejecting a promise by throwing is safely a no-op if the promise has already been fulfilled - OWSProdInfo("call_service_error_timeout_while_connecting_outgoing", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorTimeoutWhileConnectingOutgoing(), file:#file, function:#function, line:#line) throw CallError.timeout(description: "timed out waiting to receive call answer") } @@ -351,10 +351,10 @@ protocol CallServiceObserver: class { Logger.error("\(self.TAG) placing call \(call.identifiersForLogs) failed with error: \(error)") if let callError = error as? CallError { - OWSProdInfo("call_service_error_outgoing_connection_failed_internal", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorOutgoingConnectionFailedInternal(), file:#file, function:#function, line:#line) self.handleFailedCall(failedCall: call, error: callError) } else { - OWSProdInfo("call_service_error_outgoing_connection_failed_external", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorOutgoingConnectionFailedExternal(), file:#file, function:#function, line:#line) let externalError = CallError.externalError(underlyingError: error) self.handleFailedCall(failedCall: call, error: externalError) } @@ -425,10 +425,10 @@ protocol CallServiceObserver: class { Logger.debug("\(self.TAG) successfully set remote description") }.catch { error in if let callError = error as? CallError { - OWSProdInfo("call_service_error_handle_received_error_internal", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleReceivedErrorInternal(), file:#file, function:#function, line:#line) self.handleFailedCall(failedCall: call, error: callError) } else { - OWSProdInfo("call_service_error_handle_received_error_external", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleReceivedErrorExternal(), file:#file, function:#function, line:#line) let externalError = CallError.externalError(underlyingError: error) self.handleFailedCall(failedCall: call, error: externalError) } @@ -635,7 +635,7 @@ protocol CallServiceObserver: class { let timeout: Promise = after(interval: TimeInterval(connectingTimeoutSeconds)).then { () -> Void in // rejecting a promise by throwing is safely a no-op if the promise has already been fulfilled - OWSProdInfo("call_service_error_timeout_while_connecting_incoming", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorTimeoutWhileConnectingIncoming(), file:#file, function:#function, line:#line) throw CallError.timeout(description: "timed out waiting for call to connect") } @@ -654,10 +654,10 @@ protocol CallServiceObserver: class { return } if let callError = error as? CallError { - OWSProdInfo("call_service_error_incoming_connection_failed_internal", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorIncomingConnectionFailedInternal(), file:#file, function:#function, line:#line) self.handleFailedCall(failedCall: newCall, error: callError) } else { - OWSProdInfo("call_service_error_incoming_connection_failed_external", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorIncomingConnectionFailedExternal(), file:#file, function:#function, line:#line) let externalError = CallError.externalError(underlyingError: error) self.handleFailedCall(failedCall: newCall, error: externalError) } @@ -697,7 +697,7 @@ protocol CallServiceObserver: class { peerConnectionClient.addRemoteIceCandidate(RTCIceCandidate(sdp: sdp, sdpMLineIndex: lineIndex, sdpMid: mid)) }.catch { error in - OWSProdInfo("call_service_error_handle_remote_added_ice_candidate", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleRemoteAddedIceCandidate(), file:#file, function:#function, line:#line) Logger.error("\(self.TAG) in \(#function) waitForPeerConnectionClient failed with error: \(error)") }.retainUntilComplete() } @@ -747,7 +747,7 @@ protocol CallServiceObserver: class { return } }.catch { error in - OWSProdInfo("call_service_error_handle_local_added_ice_candidate", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalAddedIceCandidate(), file:#file, function:#function, line:#line) Logger.error("\(self.TAG) in \(#function) waitUntilReadyToSendIceUpdates failed with error: \(error)") }.retainUntilComplete() } @@ -1012,7 +1012,7 @@ protocol CallServiceObserver: class { let sendPromise = self.messageSender.sendCallMessage(callMessage).then { Logger.debug("\(self.TAG) successfully sent hangup call message to \(call.thread.contactIdentifier())") }.catch { error in - OWSProdInfo("call_service_error_handle_local_hungup_call", file:#file, function:#function, line:#line) + OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalHungupCall(), file:#file, function:#function, line:#line) Logger.error("\(self.TAG) failed to send hangup call message to \(call.thread.contactIdentifier()) with error: \(error)") } sendPromise.retainUntilComplete() diff --git a/SignalServiceKit/src/Util/OWSAnalyticsEvents.h b/SignalServiceKit/src/Util/OWSAnalyticsEvents.h index a62e83524..c456aa2fb 100755 --- a/SignalServiceKit/src/Util/OWSAnalyticsEvents.h +++ b/SignalServiceKit/src/Util/OWSAnalyticsEvents.h @@ -40,6 +40,28 @@ NS_ASSUME_NONNULL_BEGIN + (NSString *)callServiceCouldNotCreateReadyToSendIceUpdatesPromise; ++ (NSString *)callServiceErrorHandleLocalAddedIceCandidate; + ++ (NSString *)callServiceErrorHandleLocalHungupCall; + ++ (NSString *)callServiceErrorHandleReceivedErrorExternal; + ++ (NSString *)callServiceErrorHandleReceivedErrorInternal; + ++ (NSString *)callServiceErrorHandleRemoteAddedIceCandidate; + ++ (NSString *)callServiceErrorIncomingConnectionFailedExternal; + ++ (NSString *)callServiceErrorIncomingConnectionFailedInternal; + ++ (NSString *)callServiceErrorOutgoingConnectionFailedExternal; + ++ (NSString *)callServiceErrorOutgoingConnectionFailedInternal; + ++ (NSString *)callServiceErrorTimeoutWhileConnectingIncoming; + ++ (NSString *)callServiceErrorTimeoutWhileConnectingOutgoing; + + (NSString *)callServiceMissingFulfillReadyToSendIceUpdatesPromise; + (NSString *)callServicePeerConnectionAlreadySet; diff --git a/SignalServiceKit/src/Util/OWSAnalyticsEvents.m b/SignalServiceKit/src/Util/OWSAnalyticsEvents.m index 02800c76c..8b9e63f1e 100755 --- a/SignalServiceKit/src/Util/OWSAnalyticsEvents.m +++ b/SignalServiceKit/src/Util/OWSAnalyticsEvents.m @@ -82,6 +82,61 @@ NS_ASSUME_NONNULL_BEGIN return @"call_service_could_not_create_ready_to_send_ice_updates_promise"; } ++ (NSString *)callServiceErrorHandleLocalAddedIceCandidate +{ + return @"call_service_error_handle_local_added_ice_candidate"; +} + ++ (NSString *)callServiceErrorHandleLocalHungupCall +{ + return @"call_service_error_handle_local_hungup_call"; +} + ++ (NSString *)callServiceErrorHandleReceivedErrorExternal +{ + return @"call_service_error_handle_received_error_external"; +} + ++ (NSString *)callServiceErrorHandleReceivedErrorInternal +{ + return @"call_service_error_handle_received_error_internal"; +} + ++ (NSString *)callServiceErrorHandleRemoteAddedIceCandidate +{ + return @"call_service_error_handle_remote_added_ice_candidate"; +} + ++ (NSString *)callServiceErrorIncomingConnectionFailedExternal +{ + return @"call_service_error_incoming_connection_failed_external"; +} + ++ (NSString *)callServiceErrorIncomingConnectionFailedInternal +{ + return @"call_service_error_incoming_connection_failed_internal"; +} + ++ (NSString *)callServiceErrorOutgoingConnectionFailedExternal +{ + return @"call_service_error_outgoing_connection_failed_external"; +} + ++ (NSString *)callServiceErrorOutgoingConnectionFailedInternal +{ + return @"call_service_error_outgoing_connection_failed_internal"; +} + ++ (NSString *)callServiceErrorTimeoutWhileConnectingIncoming +{ + return @"call_service_error_timeout_while_connecting_incoming"; +} + ++ (NSString *)callServiceErrorTimeoutWhileConnectingOutgoing +{ + return @"call_service_error_timeout_while_connecting_outgoing"; +} + + (NSString *)callServiceMissingFulfillReadyToSendIceUpdatesPromise { return @"call_service_missing_fulfill_ready_to_send_ice_updates_promise";