<testsuites tests="906" failures="3">
    <testsuite name="Ably-iOS-Tests" tests="906" failures="3" skipped="0" time="2009.4440524578094">
        <testcase classname="ARTArchiveTests" name="test_art_unarchivedObjectOfClass_for_state_machine_states" time="0.015303969383239746">
        </testcase>
        <testcase classname="ARTDefaultTests" name="testVersions()" time="0.0036519765853881836">
        </testcase>
        <testcase classname="AuthTests" name="test__001__should_not_force_token_auth_when_clientId_is_set()" time="1.4901130199432373">
        </testcase>
        <testcase classname="AuthTests" name="test__002__should_accept_authURL_response_with_timestamp_argument_as_string()" time="15.041491985321045">
        </testcase>
        <testcase classname="AuthTests" name="test__003__Basic__should_work_over_HTTPS_only()" time="0.0015680789947509766">
        </testcase>
        <testcase classname="AuthTests" name="test__004__Basic__should_send_the_API_key_in_the_Authorization_header()" time="0.16197407245635986">
        </testcase>
        <testcase classname="AuthTests" name="test__005__Basic__should_be_default_when_an_API_key_is_set()" time="0.0009729862213134766">
        </testcase>
        <testcase classname="AuthTests" name="test__006__Token__TTL_should_default_to_be_omitted()" time="0.0005060434341430664">
        </testcase>
        <testcase classname="AuthTests" name="test__007__Token__should_URL_query_be_correctly_encoded()" time="0.0034199953079223633">
        </testcase>
        <testcase classname="AuthTests" name="test__008__Token__should_omit_capability_field_if_it_is_not_specified()" time="0.4619699716567993">
        </testcase>
        <testcase classname="AuthTests" name="test__009__Token__should_add_capability_field_if_the_user_specifies_it()" time="0.20454704761505127">
        </testcase>
        <testcase classname="AuthTests" name="test__010__Token__token_auth__should_work_over_HTTP()" time="0.3855760097503662">
        </testcase>
        <testcase classname="AuthTests" name="test__011__Token__token_auth__should_work_over_HTTPS()" time="0.5218600034713745">
        </testcase>
        <testcase classname="AuthTests" name="test__012__Token__token_auth__for_REST_requests__should_send_the_token_in_the_Authorization_header()" time="0.297321081161499">
        </testcase>
        <testcase classname="AuthTests" name="test__013__Token__token_auth__for_Realtime_connections__should_send_the_token_in_the_querystring_as_a_param_named_accessToken()" time="0.1216360330581665">
        </testcase>
        <testcase classname="AuthTests" name="test__014__Token__authentication_method__should_be_default_auth_method_when_options__useTokenAuth_is_set()" time="0.0006829500198364258">
        </testcase>
        <testcase classname="AuthTests" name="test__015__Token__authentication_method__should_be_default_auth_method_when_options__authUrl_is_set()" time="0.0006769895553588867">
        </testcase>
        <testcase classname="AuthTests" name="test__016__Token__authentication_method__should_be_default_auth_method_when_options__authCallback_is_set()" time="0.004706978797912598">
        </testcase>
        <testcase classname="AuthTests" name="test__017__Token__authentication_method__should_be_default_auth_method_when_options__tokenDetails_is_set()" time="0.0006150007247924805">
        </testcase>
        <testcase classname="AuthTests" name="test__018__Token__authentication_method__should_be_default_auth_method_when_options__token_is_set()" time="0.0007709264755249023">
        </testcase>
        <testcase classname="AuthTests" name="test__019__Token__authentication_method__should_be_default_auth_method_when_options__key_is_set()" time="0.0006049871444702148">
        </testcase>
        <testcase classname="AuthTests" name="test__020__Token__authentication_method__should_indicate_an_error_and_not_retry_the_request_when_the_server_responds_with_a_token_error_and_there_is_no_way_to_renew_the_token()" time="0.32582294940948486">
        </testcase>
        <testcase classname="AuthTests" name="test__021__Token__authentication_method__should_transition_the_connection_to_the_FAILED_state_when_the_server_responds_with_a_token_error_and_there_is_no_way_to_renew_the_token()" time="0.8921369314193726">
        </testcase>
        <testcase classname="AuthTests" name="test__022__Token__authentication_method__on_token_error__reissues_token_and_retries_REST_requests()" time="0.32811594009399414">
        </testcase>
        <testcase classname="AuthTests" name="test__023__Token__authentication_method__in_REST__if_the_token_creation_failed_or_the_subsequent_request_with_the_new_token_failed_due_to_a_token_error__then_the_request_should_result_in_an_error()" time="0.002249002456665039">
        </testcase>
        <testcase classname="AuthTests" name="test__024__Token__authentication_method__in_Realtime__if_the_token_creation_failed_then_the_connection_should_move_to_the_DISCONNECTED_state_and_reports_the_error()" time="0.024106979370117188">
        </testcase>
        <testcase classname="AuthTests" name="test__025__Token__authentication_method__in_Realtime__if_the_connection_fails_due_to_a_terminal_token_error__then_the_connection_should_move_to_the_FAILED_state_and_reports_the_error()" time="0.4945939779281616">
        </testcase>
        <testcase classname="AuthTests" name="test__026__Token__authentication_method__if_a_request_by_a_realtime_client_to_an_authUrl_results_in_an_HTTP_403_the_client_library_should_transition_to_the_FAILED_state()" time="0.4705859422683716">
        </testcase>
        <testcase classname="AuthTests" name="test__027__Token__authentication_method__if_an_authCallback_results_in_an_HTTP_403_the_client_library_should_transition_to_the_FAILED_state()" time="0.0031549930572509766">
        </testcase>
        <testcase classname="AuthTests" name="test__028__Token__authentication_method__local_token_validity_check__should_be_done_if_queryTime_is_true_and_local_time_is_in_sync_with_server()" time="5.924712896347046">
        </testcase>
        <testcase classname="AuthTests" name="test__029__Token__authentication_method__local_token_validity_check__should_NOT_be_done_if_queryTime_is_false_and_local_time_is_NOT_in_sync_with_server()" time="5.9592519998550415">
        </testcase>
        <testcase classname="AuthTests" name="test__030__Token__options__should_stop_client_when_useTokenAuth_and_no_key_occurs()" time="0.0007810592651367188">
        </testcase>
        <testcase classname="AuthTests" name="test__031__Token__options__should_stop_client_when_authCallback_and_authUrl_occurs()" time="0.0007079839706420898">
        </testcase>
        <testcase classname="AuthTests" name="test__032__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authUrl_fails__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful()" time="0.28529608249664307">
        </testcase>
        <testcase classname="AuthTests" name="test__033__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authUrl_fails__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED()" time="0.8699949979782104">
        </testcase>
        <testcase classname="AuthTests" name="test__034__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authCallback_fails__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful()" time="0.0022829771041870117">
        </testcase>
        <testcase classname="AuthTests" name="test__035__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_request_to_authCallback_fails__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED()" time="0.6033990383148193">
        </testcase>
        <testcase classname="AuthTests" name="test__036__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_provided_token_is_in_an_invalid_format__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful()" time="0.3006860017776489">
        </testcase>
        <testcase classname="AuthTests" name="test__037__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_provided_token_is_in_an_invalid_format__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED()" time="0.8703850507736206">
        </testcase>
        <testcase classname="AuthTests" name="test__038__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_attempt_times_out_after_realtimeRequestTimeout__if_the_connection_is_CONNECTING__then_the_connection_attempt_should_be_treated_as_unsuccessful()" time="0.5452460050582886">
        </testcase>
        <testcase classname="AuthTests" name="test__039__Token__options__if_an_attempt_by_the_realtime_client_library_to_authenticate_is_made_using_the_authUrl_or_authCallback__the_attempt_times_out_after_realtimeRequestTimeout__if_the_connection_is_CONNECTED__then_the_connection_should_remain_CONNECTED()" time="0.9298989772796631">
        </testcase>
        <testcase classname="AuthTests" name="test__040__Token__token_auth_and_clientId__should_permit_to_be_unauthenticated()" time="0.19373202323913574">
        </testcase>
        <testcase classname="AuthTests" name="test__041__Token__token_auth_and_clientId__should_check_clientId_consistency__on_rest()" time="0.09945201873779297">
        </testcase>
        <testcase classname="AuthTests" name="test__042__Token__token_auth_and_clientId__should_check_clientId_consistency__on_realtime()" time="0.4095410108566284">
        </testcase>
        <testcase classname="AuthTests" name="test__043__Token__token_auth_and_clientId__should_check_clientId_consistency__with_wildcard()" time="0.0011219978332519531">
        </testcase>
        <testcase classname="AuthTests" name="test__044__Token__token_auth_and_clientId__Incompatible_client__with_Realtime__it_should_change_the_connection_state_to_FAILED_and_emit_an_error()" time="0.3982980251312256">
        </testcase>
        <testcase classname="AuthTests" name="test__045__Token__token_auth_and_clientId__Incompatible_client__with_Rest__it_should_result_in_an_appropriate_error_response()" time="0.11248600482940674">
        </testcase>
        <testcase classname="AuthTests" name="test__046__Token__clientId_and_authenticated_clients__should_not_pass_clientId_with_published_message()" time="0.12005198001861572">
        </testcase>
        <testcase classname="AuthTests" name="test__047__Token__clientId_and_authenticated_clients__should_obtain_a_token_if_clientId_is_assigned()" time="0.12913000583648682">
        </testcase>
        <testcase classname="AuthTests" name="test__048__Token__clientId_and_authenticated_clients__should_convenience_clientId_return_a_string()" time="0.0007380247116088867">
        </testcase>
        <testcase classname="AuthTests" name="test__049__Token__clientId_and_authenticated_clients__ClientOptions_clientId_takes_precendence_when_a_clientId_value_is_provided_in_both_ClientOptions_clientId_and_ClientOptions_defaultTokenParams()" time="0.30670201778411865">
        </testcase>
        <testcase classname="AuthTests" name="test__050__Token__clientId_and_authenticated_clients__should_clientId_be_null_or_string()" time="0.0011219978332519531">
        </testcase>
        <testcase classname="AuthTests" name="test__051__Token__clientId_and_authenticated_clients__Auth_clientId_attribute_is_null__identity_should_be_anonymous_for_all_operations()" time="0.30953800678253174">
        </testcase>
        <testcase classname="AuthTests" name="test__052__Token__clientId_and_authenticated_clients__Auth_clientId_attribute_is_null__identity_may_change_and_become_identified()" time="0.5221719741821289">
        </testcase>
        <testcase classname="AuthTests" name="test__053__Token__clientId_and_authenticated_clients__auth_clientId_not_null__when_clientId_attribute_is_assigned_on_client_options()" time="0.0017879009246826172">
        </testcase>
        <testcase classname="AuthTests" name="test__054__Token__clientId_and_authenticated_clients__auth_clientId_not_null__when_tokenRequest_or_tokenDetails_has_clientId_not_null_or_wildcard_string()" time="0.10177600383758545">
        </testcase>
        <testcase classname="AuthTests" name="test__055__Token__clientId_and_authenticated_clients__auth_clientId_not_null__should_CONNECTED_ProtocolMessages_contain_a_clientId()" time="0.40364301204681396">
        </testcase>
        <testcase classname="AuthTests" name="test__056__Token__clientId_and_authenticated_clients__auth_clientId_not_null__client_does_not_have_an_identity_when_a_wildcard_string_____is_present()" time="0.4132009744644165">
        </testcase>
        <testcase classname="AuthTests" name="test__057__requestToken__implicitly_creates_a_TokenRequest_and_requests_a_token()" time="0.10284304618835449">
        </testcase>
        <testcase classname="AuthTests" name="test__058__requestToken__ensure_the_message_published_does_not_have_a_clientId()" time="0.31526803970336914">
        </testcase>
        <testcase classname="AuthTests" name="test__059__requestToken__ensure_that_the_message_is_rejected()" time="0.2003469467163086">
        </testcase>
        <testcase classname="AuthTests" name="test__060__requestToken__ensure_the_message_published_with_a_wildcard_____does_not_have_a_clientId()" time="0.28770291805267334">
        </testcase>
        <testcase classname="AuthTests" name="test__061__requestToken__ensure_the_message_published_with_a_wildcard_____has_the_provided_clientId()" time="0.3083000183105469">
        </testcase>
        <testcase classname="AuthTests" name="test__062__requestToken__arguments__should_not_merge_with_the_configured_params_and_options_but_instead_replace_all_corresponding_values__even_when__null_()" time="0.20667695999145508">
        </testcase>
        <testcase classname="AuthTests" name="test__063__requestToken__arguments__should_use_configured_defaults_if_the_object_arguments_are_omitted()" time="0.31191301345825195">
        </testcase>
        <testcase classname="AuthTests" name="test__064__requestToken__authUrl__query_will_provide_a_token_string()" time="0.38689398765563965">
        </testcase>
        <testcase classname="AuthTests" name="test__065__requestToken__authUrl__query_will_provide_a_TokenDetails()" time="0.3903290033340454">
        </testcase>
        <testcase classname="AuthTests" name="test__066__requestToken__authUrl__query_will_provide_a_TokenRequest()" time="0.37946105003356934">
        </testcase>
        <testcase classname="AuthTests" name="test__067__requestToken__authUrl__TokenParams_should_take_precedence_over_any_configured_authParams_when_a_name_conflict_occurs()" time="0.10745608806610107">
        </testcase>
        <testcase classname="AuthTests" name="test__068__requestToken__authUrl__should_override_previously_configured_parameters()" time="0.000782012939453125">
        </testcase>
        <testcase classname="AuthTests" name="test__069__requestToken__authUrl__parameters__should_be_added_to_the_URL_when_auth_method_is_GET()" time="0.001569986343383789">
        </testcase>
        <testcase classname="AuthTests" name="test__070__requestToken__authUrl__parameters__should_added_on_the_body_request_when_auth_method_is_POST()" time="0.0010379552841186523">
        </testcase>
        <testcase classname="AuthTests" name="test__071__requestToken__should_support_all_TokenParams__using_defaults()" time="0.09607899188995361">
        </testcase>
        <testcase classname="AuthTests" name="test__072__requestToken__should_support_all_TokenParams__overriding_defaults()" time="0.07494997978210449">
        </testcase>
        <testcase classname="AuthTests" name="test__073__requestToken__When_authCallback_option_is_set__it_will_invoke_the_callback__with_a_token_string()" time="0.000986933708190918">
        </testcase>
        <testcase classname="AuthTests" name="test__074__requestToken__When_authCallback_option_is_set__it_will_invoke_the_callback__with_a_TokenDetails()" time="0.0009859800338745117">
        </testcase>
        <testcase classname="AuthTests" name="test__075__requestToken__When_authCallback_option_is_set__it_will_invoke_the_callback__with_a_TokenRequest()" time="0.0975029468536377">
        </testcase>
        <testcase classname="AuthTests" name="test__076__createTokenRequest__should_not_merge_with_the_configured_params_and_options_but_instead_replace_all_corresponding_values__even_when__null_()" time="0.25101494789123535">
        </testcase>
        <testcase classname="AuthTests" name="test__077__createTokenRequest__should_override_defaults_if_AuthOptions_provided()" time="0.11065006256103516">
        </testcase>
        <testcase classname="AuthTests" name="test__078__createTokenRequest__should_use_defaults_if_no_AuthOptions_is_provided()" time="0.11188292503356934">
        </testcase>
        <testcase classname="AuthTests" name="test__079__createTokenRequest__should_replace_defaults_if__nil__option_s_field_passed()" time="0.0012769699096679688">
        </testcase>
        <testcase classname="AuthTests" name="test__080__createTokenRequest__should_use_configured_defaults_if_the_object_arguments_are_omitted()" time="0.10012900829315186">
        </testcase>
        <testcase classname="AuthTests" name="test__081__createTokenRequest__should_create_and_sign_a_TokenRequest()" time="0.0012159347534179688">
        </testcase>
        <testcase classname="AuthTests" name="test__082__createTokenRequest__should_support_AuthOptions()" time="0.0008810758590698242">
        </testcase>
        <testcase classname="AuthTests" name="test__083__createTokenRequest__should_generate_a_unique_16_plus_character_nonce_if_none_is_provided()" time="0.0012819766998291016">
        </testcase>
        <testcase classname="AuthTests" name="test__084__createTokenRequest__should_provide_capability_has_json_text()" time="0.0010939836502075195">
        </testcase>
        <testcase classname="AuthTests" name="test__085__createTokenRequest__should_generate_a_valid_HMAC()" time="0.0011240243911743164">
        </testcase>
        <testcase classname="AuthTests" name="test__086__createTokenRequest__should_respect_all_requirements()" time="0.16704201698303223">
        </testcase>
        <testcase classname="AuthTests" name="test__087__createTokenRequest__should_generate_a_timestamp__from_current_time_if_not_provided()" time="0.0016111135482788086">
        </testcase>
        <testcase classname="AuthTests" name="test__088__createTokenRequest__should_generate_a_timestamp__will_retrieve_the_server_time_if_queryTime_is_true()" time="0.09381389617919922">
        </testcase>
        <testcase classname="AuthTests" name="test__089__createTokenRequest__TTL__should_be_optional()" time="0.001965045928955078">
        </testcase>
        <testcase classname="AuthTests" name="test__090__createTokenRequest__TTL__should_be_specified_in_milliseconds()" time="0.0012199878692626953">
        </testcase>
        <testcase classname="AuthTests" name="test__091__createTokenRequest__TTL__should_be_valid_to_request_a_token_for_24_hours()" time="0.09870803356170654">
        </testcase>
        <testcase classname="AuthTests" name="test__092__authorize__should_always_create_a_token()" time="0.4083259105682373">
        </testcase>
        <testcase classname="AuthTests" name="test__093__authorize__should_create_a_new_token_if_one_already_exist_and_ensure_Token_Auth_is_used_for_all_future_requests()" time="0.29111695289611816">
        </testcase>
        <testcase classname="AuthTests" name="test__094__authorize__should_create_a_token_immediately_and_ensures_Token_Auth_is_used_for_all_future_requests()" time="0.21007800102233887">
        </testcase>
        <testcase classname="AuthTests" name="test__095__authorize__should_supports_all_TokenParams_and_AuthOptions()" time="0.0011049509048461914">
        </testcase>
        <testcase classname="AuthTests" name="test__096__authorize__should_use_the_requestToken_implementation()" time="0.10816001892089844">
        </testcase>
        <testcase classname="AuthTests" name="test__097__authorize__should_return_TokenDetails_with_valid_token_metadata()" time="0.10270392894744873">
        </testcase>
        <testcase classname="AuthTests" name="test__098__authorize__should_use_the_configured_Auth_clientId__if_not_null__by_default()" time="0.21140694618225098">
        </testcase>
        <testcase classname="AuthTests" name="test__099__authorize__on_subsequent_authorisations__should_store_the_AuthOptions_with_authUrl()" time="0.5173410177230835">
        </testcase>
        <testcase classname="AuthTests" name="test__100__authorize__on_subsequent_authorisations__should_store_the_AuthOptions_with_authCallback()" time="0.001238107681274414">
        </testcase>
        <testcase classname="AuthTests" name="test__101__authorize__on_subsequent_authorisations__should_not_store_queryTime()" time="0.23645007610321045">
        </testcase>
        <testcase classname="AuthTests" name="test__102__authorize__on_subsequent_authorisations__should_store_the_TokenParams()" time="2.2313010692596436">
        </testcase>
        <testcase classname="AuthTests" name="test__103__authorize__on_subsequent_authorisations__should_use_configured_defaults_if_the_object_arguments_are_omitted()" time="0.20152592658996582">
        </testcase>
        <testcase classname="AuthTests" name="test__104__authorize__should_adhere_to_all_requirements_relating_to__TokenParams()" time="0.0999380350112915">
        </testcase>
        <testcase classname="AuthTests" name="test__105__authorize__should_adhere_to_all_requirements_relating_to__authCallback()" time="0.11223101615905762">
        </testcase>
        <testcase classname="AuthTests" name="test__106__authorize__should_adhere_to_all_requirements_relating_to__authUrl()" time="0.2869669198989868">
        </testcase>
        <testcase classname="AuthTests" name="test__107__authorize__should_adhere_to_all_requirements_relating_to__authUrl_with_json()" time="0.6677310466766357">
        </testcase>
        <testcase classname="AuthTests" name="test__108__authorize__should_adhere_to_all_requirements_relating_to__authUrl_returning_TokenRequest_decodes_TTL_as_expected()" time="0.38574695587158203">
        </testcase>
        <testcase classname="AuthTests" name="test__109__authorize__should_adhere_to_all_requirements_relating_to__authUrl_with_plain_text()" time="0.6665030717849731">
        </testcase>
        <testcase classname="AuthTests" name="test__110__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_AuthOptions__using_key__even_if_arguments_objects_are_empty()" time="1.221356987953186">
        </testcase>
        <testcase classname="AuthTests" name="test__111__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_AuthOptions__using_authUrl__even_if_arguments_objects_are_empty()" time="0.7675560712814331">
        </testcase>
        <testcase classname="AuthTests" name="test__112__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_AuthOptions__using_authCallback__even_if_arguments_objects_are_empty()" time="0.0032900571823120117">
        </testcase>
        <testcase classname="AuthTests" name="test__113__authorize__when_TokenParams_and_AuthOptions_are_provided__should_supersede_configured_params_and_options_even_if_arguments_objects_are_empty()" time="0.6661090850830078">
        </testcase>
        <testcase classname="AuthTests" name="test__114__authorize__when_TokenParams_and_AuthOptions_are_provided__example__if_a_client_is_initialised_with_TokenParams_ttl_configured_with_a_custom_value__and_a_TokenParams_object_is_passed_in_as_an_argument_to__authorize_with_a_null_value_for_ttl__then_the_ttl_used_for_every_subsequent_authorization_will_be_null()" time="0.1702589988708496">
        </testcase>
        <testcase classname="AuthTests" name="test__116__authorize__server_time_offset__should_be_consistent_the_timestamp_request_with_the_server_time()" time="0.0975189208984375">
        </testcase>
        <testcase classname="AuthTests" name="test__117__authorize__server_time_offset__should_be_possible_by_lib_Client_to_discard_the_cached_local_clock_offset()" time="0.24328696727752686">
        </testcase>
        <testcase classname="AuthTests" name="test__118__authorize__server_time_offset__should_use_the_local_clock_offset_to_calculate_the_server_time()" time="0.0013179779052734375">
        </testcase>
        <testcase classname="AuthTests" name="test__119__authorize__server_time_offset__should_request_server_time_when_queryTime_is_true_even_if_the_time_offset_is_assigned()" time="0.169327974319458">
        </testcase>
        <testcase classname="AuthTests" name="test__120__authorize__server_time_offset__should_discard_the_time_offset_in_situations_in_which_it_may_have_been_invalidated()" time="0.001716017723083496">
        </testcase>
        <testcase classname="AuthTests" name="test__121__authorize__two_consecutive_authorizations__using_REST__should_call_each_authorize_callback()" time="0.1056739091873169">
        </testcase>
        <testcase classname="AuthTests" name="test__122__authorize__two_consecutive_authorizations__using_Realtime_and_connection_is_CONNECTING__should_call_each_Realtime_authorize_callback()" time="0.7214629650115967">
        </testcase>
        <testcase classname="AuthTests" name="test__123__authorize__two_consecutive_authorizations__using_Realtime_and_connection_is_CONNECTED__should_call_each_Realtime_authorize_callback()" time="0.7503410577774048">
        </testcase>
        <testcase classname="AuthTests" name="test__124__TokenParams__timestamp__if_explicitly_set__should_be_returned_by_the_getter()" time="0.0004900693893432617">
        </testcase>
        <testcase classname="AuthTests" name="test__125__TokenParams__timestamp__if_explicitly_set__the_value_should_stick()" time="0.2728790044784546">
        </testcase>
        <testcase classname="AuthTests" name="test__126__TokenParams__timestamp__object_has_no_timestamp_value_unless_explicitly_set()" time="0.000431060791015625">
        </testcase>
        <testcase classname="AuthTests" name="test__127__Reauth__should_use_authorize__force__true___to_reauth_with_a_token_with_a_different_set_of_capabilities()" time="2.082895040512085">
        </testcase>
        <testcase classname="AuthTests" name="test__128__Reauth__for_a_token_change_that_fails_due_to_an_incompatible_token__which_should_result_in_the_connection_entering_the_FAILED_state()" time="0.5215270519256592">
        </testcase>
        <testcase classname="AuthTests" name="test__129__TokenParams__timestamp_should_not_be_a_member_of_any_default_token_params()" time="0.10991501808166504">
        </testcase>
        <testcase classname="AuthTests" name="test__130__TokenRequest__fromJson__rejects_invalid_JSON()" time="0.0005910396575927734">
        </testcase>
        <testcase classname="AuthTests" name="test__131__TokenRequest__fromJson__rejects_non_object_JSON()" time="0.0006879568099975586">
        </testcase>
        <testcase classname="AuthTests" name="test__132__TokenRequest__fromJson__with_TTL__accepts_a_string__which_should_be_interpreted_as_JSON()" time="0.0007339715957641602">
        </testcase>
        <testcase classname="AuthTests" name="test__133__TokenRequest__fromJson__with_TTL__accepts_a_NSDictionary()" time="0.0007529258728027344">
        </testcase>
        <testcase classname="AuthTests" name="test__134__TokenRequest__fromJson__without_TTL__accepts_a_string__which_should_be_interpreted_as_JSON()" time="0.0006229877471923828">
        </testcase>
        <testcase classname="AuthTests" name="test__135__TokenRequest__fromJson__without_TTL__accepts_a_NSDictionary()" time="0.0006260871887207031">
        </testcase>
        <testcase classname="AuthTests" name="test__136__TokenDetails__fromJson__accepts_a_string__which_should_be_interpreted_as_JSON()" time="0.0028319358825683594">
        </testcase>
        <testcase classname="AuthTests" name="test__137__TokenDetails__fromJson__accepts_a_NSDictionary()" time="0.0005650520324707031">
        </testcase>
        <testcase classname="AuthTests" name="test__138__TokenDetails__fromJson__rejects_invalid_JSON()" time="0.00045609474182128906">
        </testcase>
        <testcase classname="AuthTests" name="test__139__TokenDetails__fromJson__rejects_non_object_JSON()" time="0.0005519390106201172">
        </testcase>
        <testcase classname="AuthTests" name="test__141__JWT_and_realtime__client_initialized_with_a_JWT_token_in_ClientOptions__with_invalid_credentials__fails_to_connect_with_reason__invalid_signature_()" time="0.8329359292984009">
        </testcase>
        <testcase classname="AuthTests" name="test__142__JWT_and_realtime__when_using_authUrl__with_valid_credentials__fetches_a_channels_and_posts_a_message()" time="0.8268560171127319">
        </testcase>
        <testcase classname="AuthTests" name="test__143__JWT_and_realtime__when_using_authUrl__with_wrong_credentials__fails_to_connect_with_reason__invalid_signature_()" time="1.1874279975891113">
        </testcase>
        <testcase classname="AuthTests" name="test__144__JWT_and_realtime__when_using_authUrl__when_token_expires__receives_a_40142_error_from_the_server()" time="5.2662400007247925">
        </testcase>
        <testcase classname="AuthTests" name="test__145__JWT_and_realtime__when_using_authUrl__when_the_server_sends_and_AUTH_protocol_message__client_reauths_correctly_without_going_through_a_disconnection()" time="5.208136081695557">
        </testcase>
        <testcase classname="AuthTests" name="test__147__JWT_and_realtime__when_using_authCallback__with_invalid_credentials__fails_to_connect()" time="1.6712900400161743">
        </testcase>
        <testcase classname="AuthTests" name="test__148__JWT_and_realtime__when_token_expires_and_has_a_means_to_renew__reconnects_using_authCallback_and_obtains_a_new_token()" time="3.9573938846588135">
        </testcase>
        <testcase classname="AuthTests" name="test__149__JWT_and_realtime__when_the_token_request_includes_a_clientId__the_clientId_is_the_same_specified_in_the_JWT_token_request()" time="0.8808139562606812">
        </testcase>
        <testcase classname="AuthTests" name="test__150__JWT_and_realtime__when_the_token_request_includes_subscribe_only_capabilities__fails_to_publish_to_a_channel_with_subscribe_only_capability()" time="0.900177001953125">
        </testcase>
        <testcase classname="AuthTests" name="test__151__currentTokenDetails__should_hold_a__TokenDetails__instance_in_which_only_the__token__attribute_is_populated_with_that_token_string()" time="0.09590601921081543">
        </testcase>
        <testcase classname="AuthTests" name="test__152__currentTokenDetails__should_be_set_with_the_current_token__if_applicable__on_instantiation_and_each_time_it_is_replaced()" time="0.0994330644607544">
        </testcase>
        <testcase classname="AuthTests" name="test__153__currentTokenDetails__should_be_empty_if_there_is_no_current_token()" time="0.0010110139846801758">
        </testcase>
        <testcase classname="AuthTests" name="test__154__JWT_and_rest__when_the_JWT_token_embeds_an_Ably_token__pulls_stats_successfully()" time="0.7146259546279907">
        </testcase>
        <testcase classname="AuthTests" name="test__155__JWT_and_rest__when_the_JWT_token_embeds_an_Ably_token_and_it_is_requested_as_encrypted__pulls_stats_successfully()" time="0.7311609983444214">
        </testcase>
        <testcase classname="AuthTests" name="test__156__JWT_and_rest__when_the_JWT_token_is_returned_with_application_jwt_content_type__the_client_successfully_connects_and_pulls_stats()" time="0.5356929302215576">
        </testcase>
        <testcase classname="AuthTests" name="test__157__JWT_and_rest__when_the_JWT_token_is_returned_with_application_jwt_content_type__the_client_can_request_a_new_token_to_initilize_another_client_that_connects_and_pulls_stats()" time="0.2496039867401123">
        </testcase>
        <testcase classname="ClientOptionsTests" name="testAddAgent()" time="0.0005069971084594727">
        </testcase>
        <testcase classname="CryptoTest" name="testEncryptAndDecrypt" time="0.0011839866638183594">
        </testcase>
        <testcase classname="CryptoTests" name="test__001__Crypto__getDefaultParams__returns_a_complete_CipherParams_instance__using_the_default_values_for_any_field_not_supplied()" time="0.0015870332717895508">
        </testcase>
        <testcase classname="CryptoTests" name="test__002__Crypto__getDefaultParams__calculates_a_keyLength_from_the_key__its_size_in_bits_()" time="0.0006340742111206055">
        </testcase>
        <testcase classname="CryptoTests" name="test__003__Crypto__getDefaultParams__should_check_that_keyLength_is_valid_for_algorithm()" time="0.0006279945373535156">
        </testcase>
        <testcase classname="CryptoTests" name="test__004__Crypto__getDefaultParams__key_parameter__can_be_a_binary()" time="0.00048601627349853516">
        </testcase>
        <testcase classname="CryptoTests" name="test__005__Crypto__getDefaultParams__key_parameter__can_be_a_base64_encoded_string_with_standard_encoding()" time="0.0004900693893432617">
        </testcase>
        <testcase classname="CryptoTests" name="test__006__Crypto__getDefaultParams__key_parameter__can_be_a_base64_encoded_string_with_URL_encoding()" time="0.0006209611892700195">
        </testcase>
        <testcase classname="CryptoTests" name="test__007__Crypto__generateRandomKey__takes_a_single_length_argument_and_returns_a_binary()" time="0.0004870891571044922">
        </testcase>
        <testcase classname="CryptoTests" name="test__008__Crypto__generateRandomKey__takes_no_arguments_and_returns_the_default_algorithm_s_default_length()" time="0.000576019287109375">
        </testcase>
        <testcase classname="CryptoTests" name="test__009__Crypto__generateHashSHA256__takes_data_and_returns_a_SHA256_digest()" time="0.0008939504623413086">
        </testcase>
        <testcase classname="CryptoTests" name="test__010__Crypto__encrypt__should_generate_a_new_IV_every_time_it_s_called__and_should_be_the_first_block_encrypted()" time="0.0009500980377197266">
        </testcase>
        <testcase classname="CryptoTests" name="test__011__Crypto__with_fixtures_from_crypto_data_128_json__should_encrypt_messages_as_expected_in_the_fixtures()" time="0.0027829408645629883">
        </testcase>
        <testcase classname="CryptoTests" name="test__012__Crypto__with_fixtures_from_crypto_data_128_json__should_decrypt_messages_as_expected_in_the_fixtures()" time="0.0022159814834594727">
        </testcase>
        <testcase classname="CryptoTests" name="test__013__Crypto__with_fixtures_from_crypto_data_256_json__should_encrypt_messages_as_expected_in_the_fixtures()" time="0.0270460844039917">
        </testcase>
        <testcase classname="CryptoTests" name="test__014__Crypto__with_fixtures_from_crypto_data_256_json__should_decrypt_messages_as_expected_in_the_fixtures()" time="0.025701045989990234">
        </testcase>
        <testcase classname="CryptoTests" name="test__015__Crypto__with_fixtures_from_crypto_data_128_json__manual_decrypt_messages_as_expected_in_the_fixtures()" time="0.004124999046325684">
        </testcase>
        <testcase classname="CryptoTests" name="test__016__Crypto__with_fixtures_from_crypto_data_256_json__manual_decrypt_messages_as_expected_in_the_fixtures()" time="0.04505801200866699">
        </testcase>
        <testcase classname="DeltaCodecTests" name="test__001__DeltaCodec__decoding__should_decode_vcdiff_encoded_messages()" time="0.5256029367446899">
        </testcase>
        <testcase classname="DeltaCodecTests" name="test__002__DeltaCodec__decoding__should_fail_and_recover_when_the_vcdiff_messages_are_out_of_order()" time="0.5699459314346313">
        </testcase>
        <testcase classname="DeltaCodecTests" name="test__003__DeltaCodec__decoding__should_recover_when_the_vcdiff_message_decoding_fails()" time="0.597817063331604">
        </testcase>
        <testcase classname="ObjcppTest" name="testPrintVersionInfo" time="0.0005240440368652344">
        </testcase>
        <testcase classname="ObjectLifetimesTests" name="test__001__ObjectLifetimes__user_code_releases_public_object__the_object_s_internal_child_s_back_reference_is_released_too()" time="0.0014460086822509766">
        </testcase>
        <testcase classname="ObjectLifetimesTests" name="test__002__ObjectLifetimes__user_code_holds_only_reference_to_public_object_s_public_child__still_can_access_parent_s_internal_object()" time="0.0008130073547363281">
        </testcase>
        <testcase classname="ObjectLifetimesTests" name="test__003__ObjectLifetimes__user_code_holds_only_reference_to_public_object_s_public_child__when_it_s_released__schedules_async_release_of_parent_s_internal_object_in_internal_queue()" time="0.0009570121765136719">
        </testcase>
        <testcase classname="ObjectLifetimesTests" name="test__004__ObjectLifetimes__when_user_leaves_Realtime_open__still_works()" time="0.4794989824295044">
        </testcase>
        <testcase classname="ObjectLifetimesTests" name="test__005__ObjectLifetimes__when_Realtime_is_closed_and_user_loses_its_reference__channels_don_t_leak()" time="0.473209023475647">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__001__should_remove_identityTokenDetails_from_cache_and_storage()" time="0.0018620491027832031">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__002__Activation_state_machine__should_set_NotActivated_state_as_current_state_when_disk_is_empty()" time="0.0011730194091796875">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__003__Activation_state_machine__should_read_the_current_state_from_disk()" time="0.005988955497741699">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__004__Activation_state_machine__AfterRegistrationUpdateFailed_state_from_persistence_gets_migrated_to_AfterRegistrationSyncFailed()" time="0.005127072334289551">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__005__Activation_state_machine__should_queue_event_that_has_no_transition_defined_for_it()" time="0.0051490068435668945">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__006__Activation_state_machine__event_handling_sould_be_atomic_and_sequential()" time="0.0023130178451538086">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__007__Activation_state_machine__State_NotActivated__on_Event_CalledDeactivate__should_transition_to_NotActivated()" time="0.0039969682693481445">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__008__Activation_state_machine__State_NotActivated__on_Event_GotPushDeviceDetails()" time="0.0017479658126831055">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__009__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__if_the_local_device_has_the_necessary_push_details_should_send_event_GotPushDeviceDetails()" time="0.0063059329986572266">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__010__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__none_of_them_then_should_transition_to_WaitingForPushDeviceDetails()" time="0.005414009094238281">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__011__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__the_local_device_has_id_and_deviceIdentityToken__emits_a_SyncRegistrationFailed_event_with_code_61002_if_client_IDs_don_t_match()" time="0.0034019947052001953">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__012__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__the_local_device_has_id_and_deviceIdentityToken__the_local_DeviceDetails_matches_the_instance_s_client_ID__calls_registerCallback__transitions_to_WaitingForRegistrationSync()" time="0.004786968231201172">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__013__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__the_local_device_has_id_and_deviceIdentityToken__the_local_DeviceDetails_matches_the_instance_s_client_ID__PUTs_device_registration__transitions_to_WaitingForRegistrationSync()" time="0.005056977272033691">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__014__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__local_device__should_have_a_generated_id()" time="0.0021240711212158203">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__015__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__local_device__should_have_a_generated_secret()" time="0.004082918167114258">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__016__Activation_state_machine__State_NotActivated__on_Event_CalledActivate__local_device__should_have_a_clientID_if_the_client_is_identified()" time="0.0054749250411987305">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__017__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_CalledActivate()" time="0.003648042678833008">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__018__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_CalledDeactivate()" time="0.0037020444869995117">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__019__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_GettingPushDeviceDetailsFailed()" time="0.002375960350036621">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__020__Activation_state_machine__State_WaitingForPushDeviceDetails__when_initializing_from_persistent_state_with_a_deviceToken__GotPushDeviceDetails_should_be_re_emitted()" time="0.002434968948364258">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__022__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_GotPushDeviceDetails__should_use_custom_registerCallback_and_fire_GotDeviceRegistration_event()" time="0.0027579069137573242">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__023__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_GotPushDeviceDetails__should_use_custom_registerCallback_and_fire_GettingDeviceRegistrationFailed_event()" time="0.009368062019348145">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__024__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_GotPushDeviceDetails__should_fire_GotDeviceRegistration_event()" time="0.005358099937438965">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__025__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_GotPushDeviceDetails__should_fire_GettingDeviceRegistrationFailed_event()" time="0.005200982093811035">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__026__Activation_state_machine__State_WaitingForPushDeviceDetails__on_Event_GotPushDeviceDetails__should_transition_to_WaitingForDeviceRegistration()" time="0.003780961036682129">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__027__Activation_state_machine__State_WaitingForDeviceRegistration__on_Event_CalledActivate()" time="0.0018260478973388672">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__028__Activation_state_machine__State_WaitingForDeviceRegistration__on_Event_GotDeviceRegistration()" time="0.002758026123046875">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__029__Activation_state_machine__State_WaitingForDeviceRegistration__on_Event_GettingDeviceRegistrationFailed()" time="0.006134986877441406">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__030__Activation_state_machine__State_WaitingForNewPushDeviceDetails__on_Event_CalledActivate()" time="0.004012942314147949">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__031__Activation_state_machine__State_WaitingForNewPushDeviceDetails__on_Event_CalledDeactivate__should_use_custom_deregisterCallback_and_fire_Deregistered_event()" time="0.005059957504272461">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__032__Activation_state_machine__State_WaitingForNewPushDeviceDetails__on_Event_CalledDeactivate__should_use_custom_deregisterCallback_and_fire_DeregistrationFailed_event()" time="0.00460207462310791">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__033__Activation_state_machine__State_WaitingForNewPushDeviceDetails__on_Event_CalledDeactivate__should_fire_Deregistered_event_and_include_DeviceSecret_HTTP_header()" time="0.003384113311767578">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__034__Activation_state_machine__State_WaitingForNewPushDeviceDetails__on_Event_CalledDeactivate__should_fire_Deregistered_event_and_include_DeviceIdentityToken_HTTP_header()" time="0.00451207160949707">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__035__Activation_state_machine__State_WaitingForNewPushDeviceDetails__on_Event_CalledDeactivate__should_fire_DeregistrationFailed_event()" time="0.004429936408996582">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__036__Activation_state_machine__State_WaitingForRegistrationSync_through_ARTPushActivationEventCalledActivate__on_Event_CalledActivate()" time="0.0024110078811645508">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__037__Activation_state_machine__State_WaitingForRegistrationSync_through_ARTPushActivationEventCalledActivate__on_Event_RegistrationSynced()" time="0.003885984420776367">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__038__Activation_state_machine__State_WaitingForRegistrationSync_through_ARTPushActivationEventCalledActivate__on_Event_SyncRegistrationFailed()" time="0.0030400753021240234">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__039__Activation_state_machine__State_WaitingForRegistrationSync_through_ARTPushActivationEventGotPushDeviceDetails__on_Event_CalledActivate()" time="0.003314971923828125">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__040__Activation_state_machine__State_WaitingForRegistrationSync_through_ARTPushActivationEventGotPushDeviceDetails__on_Event_RegistrationSynced()" time="0.004832029342651367">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__041__Activation_state_machine__State_WaitingForRegistrationSync_through_ARTPushActivationEventGotPushDeviceDetails__on_Event_SyncRegistrationFailed()" time="0.003090977668762207">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__042__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledActivate__the_local_device_has_id_and_deviceIdentityToken__emits_a_SyncRegistrationFailed_event_with_code_61002_if_client_IDs_don_t_match()" time="0.00515902042388916">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__043__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledActivate__the_local_device_has_id_and_deviceIdentityToken__the_local_DeviceDetails_matches_the_instance_s_client_ID__calls_registerCallback__transitions_to_WaitingForRegistrationSync()" time="0.003940939903259277">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__044__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledActivate__the_local_device_has_id_and_deviceIdentityToken__the_local_DeviceDetails_matches_the_instance_s_client_ID__PUTs_device_registration__transitions_to_WaitingForRegistrationSync()" time="0.004325985908508301">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__045__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_GotPushDeviceDetails__the_local_device_has_id_and_deviceIdentityToken__emits_a_SyncRegistrationFailed_event_with_code_61002_if_client_IDs_don_t_match()" time="0.0045130252838134766">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__046__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_GotPushDeviceDetails__the_local_device_has_id_and_deviceIdentityToken__the_local_DeviceDetails_matches_the_instance_s_client_ID__calls_registerCallback__transitions_to_WaitingForRegistrationSync()" time="0.002933979034423828">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__047__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_GotPushDeviceDetails__the_local_device_has_id_and_deviceIdentityToken__the_local_DeviceDetails_matches_the_instance_s_client_ID__PUTs_device_registration__transitions_to_WaitingForRegistrationSync()" time="0.0034530162811279297">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__048__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledDeactivate__should_use_custom_deregisterCallback_and_fire_Deregistered_event()" time="0.00409698486328125">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__049__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledDeactivate__should_use_custom_deregisterCallback_and_fire_DeregistrationFailed_event()" time="0.004106044769287109">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__050__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledDeactivate__should_fire_Deregistered_event_and_include_DeviceSecret_HTTP_header()" time="0.0032690763473510742">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__051__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledDeactivate__should_fire_Deregistered_event_and_include_DeviceIdentityToken_HTTP_header()" time="0.004273056983947754">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__052__Activation_state_machine__State_AfterRegistrationSyncFailed__on_Event_CalledDeactivate__should_fire_DeregistrationFailed_event()" time="0.0057419538497924805">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__053__Activation_state_machine__State_WaitingForDeregistration__on_Event_CalledDeactivate()" time="0.005380988121032715">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__054__Activation_state_machine__State_WaitingForDeregistration__on_Event_Deregistered()" time="0.004616975784301758">
        </testcase>
        <testcase classname="PushActivationStateMachineTests" name="test__055__Activation_state_machine__State_WaitingForDeregistration__on_Event_DeregistrationFailed()" time="0.006335020065307617">
        </testcase>
        <testcase classname="PushAdminTests" name="test__001__publish__should_perform_an_HTTP_request_to__push_publish()" time="0.0029610395431518555">
        </testcase>
        <testcase classname="PushAdminTests" name="test__005__publish__should_fail_with_an_empty_payload()" time="0.3910709619522095">
        </testcase>
        <testcase classname="PushAdminTests" name="test__006__Device_Registrations__get__should_return_a_device()" time="0.15956497192382812">
        </testcase>
        <testcase classname="PushAdminTests" name="test__007__Device_Registrations__get__should_not_return_a_device_if_it_doesnt_exist()" time="0.11880302429199219">
        </testcase>
        <testcase classname="PushAdminTests" name="test__008__Device_Registrations__get__push_device_authentication__should_include_DeviceIdentityToken_HTTP_header()" time="0.004678964614868164">
        </testcase>
        <testcase classname="PushAdminTests" name="test__009__Device_Registrations__get__push_device_authentication__should_include_DeviceSecret_HTTP_header()" time="0.0052950382232666016">
        </testcase>
        <testcase classname="PushAdminTests" name="test__010__Device_Registrations__list__should_list_devices_by_id()" time="0.11015701293945312">
        </testcase>
        <testcase classname="PushAdminTests" name="test__011__Device_Registrations__list__should_list_devices_by_client_id()" time="0.11616098880767822">
        </testcase>
        <testcase classname="PushAdminTests" name="test__012__Device_Registrations__list__should_list_devices_sorted()" time="0.11671292781829834">
        </testcase>
        <testcase classname="PushAdminTests" name="test__013__Device_Registrations__list__should_return_an_empty_list_when_id_does_not_exist()" time="0.10782599449157715">
        </testcase>
        <testcase classname="PushAdminTests" name="test__014__Device_Registrations__remove__should_unregister_a_device()" time="0.0026268959045410156">
        </testcase>
        <testcase classname="PushAdminTests" name="test__015__Device_Registrations__save__should_register_a_device()" time="0.004068970680236816">
        </testcase>
        <testcase classname="PushAdminTests" name="test__016__Device_Registrations__save__push_device_authentication__should_include_DeviceIdentityToken_HTTP_header()" time="0.0045059919357299805">
        </testcase>
        <testcase classname="PushAdminTests" name="test__017__Device_Registrations__save__push_device_authentication__should_include_DeviceSecret_HTTP_header()" time="0.004987955093383789">
        </testcase>
        <testcase classname="PushAdminTests" name="test__018__Device_Registrations__removeWhere__should_unregister_a_device()" time="0.12735700607299805">
        </testcase>
        <testcase classname="PushAdminTests" name="test__019__Channel_Subscriptions__save__should_add_a_subscription()" time="0.1171799898147583">
        </testcase>
        <testcase classname="PushAdminTests" name="test__020__Channel_Subscriptions__save__should_update_a_subscription()" time="0.11845099925994873">
        </testcase>
        <testcase classname="PushAdminTests" name="test__021__Channel_Subscriptions__save__should_fail_with_a_bad_recipient()" time="0.1267470121383667">
        </testcase>
        <testcase classname="PushAdminTests" name="test__022__Channel_Subscriptions__save__push_device_authentication__should_include_DeviceIdentityToken_HTTP_header()" time="0.0029000043869018555">
        </testcase>
        <testcase classname="PushAdminTests" name="test__023__Channel_Subscriptions__save__push_device_authentication__should_include_DeviceSecret_HTTP_header()" time="0.003944993019104004">
        </testcase>
        <testcase classname="PushAdminTests" name="test__024__Channel_Subscriptions__list__should_receive_a_list_of_subscriptions()" time="0.1914600133895874">
        </testcase>
        <testcase classname="PushAdminTests" name="test__025__Channel_Subscriptions__listChannels__should_receive_a_list_of_subscriptions()" time="0.14068400859832764">
        </testcase>
        <testcase classname="PushAdminTests" name="test__026__Channel_Subscriptions__remove__should_remove_a_subscription()" time="0.19130897521972656">
        </testcase>
        <testcase classname="PushAdminTests" name="test__027__Channel_Subscriptions__remove__push_device_authentication__should_include_DeviceIdentityToken_HTTP_header()" time="0.0030699968338012695">
        </testcase>
        <testcase classname="PushAdminTests" name="test__028__Channel_Subscriptions__remove__push_device_authentication__should_include_DeviceSecret_HTTP_header()" time="0.005134940147399902">
        </testcase>
        <testcase classname="PushAdminTests" name="test__029__Channel_Subscriptions__removeWhere__should_remove_by_cliendId()" time="0.3756239414215088">
        </testcase>
        <testcase classname="PushAdminTests" name="test__030__Channel_Subscriptions__removeWhere__should_remove_by_cliendId_and_channel()" time="0.2658880949020386">
        </testcase>
        <testcase classname="PushAdminTests" name="test__031__Channel_Subscriptions__removeWhere__should_remove_by_deviceId()" time="0.3066920042037964">
        </testcase>
        <testcase classname="PushAdminTests" name="test__032__Channel_Subscriptions__removeWhere__should_not_remove_by_inexistent_deviceId()" time="0.1818019151687622">
        </testcase>
        <testcase classname="PushAdminTests" name="test__033__local_device__should_include_an_id_and_a_secret()" time="0.0006960630416870117">
        </testcase>
        <testcase classname="PushChannelTests" name="test__001__Push_Channel__subscribeDevice__should_fail_if_the_LocalDevice_doesn_t_have_an_deviceIdentityToken()" time="0.010877013206481934">
        </testcase>
        <testcase classname="PushChannelTests" name="test__002__Push_Channel__subscribeDevice__should_do_a_POST_request_to__push_channelSubscriptions_and_include_device_authentication()" time="0.010300040245056152">
        </testcase>
        <testcase classname="PushChannelTests" name="test__003__Push_Channel__subscribeClient__should_fail_if_the_LocalDevice_doesn_t_have_a_clientId()" time="0.009740948677062988">
        </testcase>
        <testcase classname="PushChannelTests" name="test__004__Push_Channel__subscribeClient__should_do_a_POST_request_to__push_channelSubscriptions()" time="0.005837917327880859">
        </testcase>
        <testcase classname="PushChannelTests" name="test__005__Push_Channel__unsubscribeDevice__should_fail_if_the_LocalDevice_doesn_t_have_a_deviceIdentityToken()" time="0.005727052688598633">
        </testcase>
        <testcase classname="PushChannelTests" name="test__006__Push_Channel__unsubscribeDevice__should_do_a_DELETE_request_to__push_channelSubscriptions_and_include_device_authentication()" time="0.006395936012268066">
        </testcase>
        <testcase classname="PushChannelTests" name="test__007__Push_Channel__unsubscribeClient__should_fail_if_the_LocalDevice_doesn_t_have_a_clientId()" time="0.005435943603515625">
        </testcase>
        <testcase classname="PushChannelTests" name="test__008__Push_Channel__unsubscribeClient__should_do_a_DELETE_request_to__push_channelSubscriptions()" time="0.006247043609619141">
        </testcase>
        <testcase classname="PushChannelTests" name="test__009__Push_Channel__listSubscriptions__should_return_a_paginated_result_with_PushChannelSubscription_filtered_by_channel_and_device()" time="0.004395008087158203">
        </testcase>
        <testcase classname="PushChannelTests" name="test__010__Push_Channel__listSubscriptions__should_return_a_paginated_result_with_PushChannelSubscription_filtered_by_channel_and_client()" time="0.004385948181152344">
        </testcase>
        <testcase classname="PushChannelTests" name="test__011__Push_Channel__listSubscriptions__should_not_accept_null_deviceId_and_null_clientId()" time="0.001078963279724121">
        </testcase>
        <testcase classname="PushChannelTests" name="test__012__Push_Channel__listSubscriptions__should_not_accept_both_deviceId_and_clientId_params_at_the_same_time()" time="0.0008829832077026367">
        </testcase>
        <testcase classname="PushChannelTests" name="test__013__Push_Channel__listSubscriptions__should_return_a_paginated_result_with_PushChannelSubscription()" time="0.2080678939819336">
        </testcase>
        <testcase classname="PushTests" name="test__001__activation__activate_method_should_send_a_CalledActivate_event_to_the_state_machine()" time="0.024371981620788574">
        </testcase>
        <testcase classname="PushTests" name="test__002__activation__deactivate_method_should_send_a_CalledDeactivate_event_to_the_state_machine()" time="0.08879804611206055">
        </testcase>
        <testcase classname="PushTests" name="test__003__activation__should_handle_GotPushDeviceDetails_event_when_platform_s_APIs_sends_the_details_for_push_notifications()" time="0.003654956817626953">
        </testcase>
        <testcase classname="PushTests" name="test__004__activation__sends_GettingPushDeviceDetailsFailed_when_push_registration_fails()" time="0.0043659210205078125">
        </testcase>
        <testcase classname="PushTests" name="test__005__activation__should_update_LocalDevice_clientId_when_it_s_null_with_auth_clientId()" time="0.10637998580932617">
        </testcase>
        <testcase classname="PushTests" name="test__006__activation__should_store_the_device_token_data_as_string()" time="0.0031130313873291016">
        </testcase>
        <testcase classname="PushTests" name="test__007__activation__should_not_sync_the_local_device_dispatched_in_internal_queue()" time="0.0018619298934936523">
        </testcase>
        <testcase classname="PushTests" name="test__008__LocalDevice__has_a_device_method_that_returns_a_LocalDevice()" time="0.0">
            <failure message="Crash: xctest (74569): Namespace SIGNAL, Code 0x4 (#CharacterRangeLen=0)">
            </failure>
        </testcase>
        <testcase classname="PushTests" name="test__009__LocalDevice__the_device_is_lazily_populated_from_the_persisted_state()" time="0.04460597038269043">
        </testcase>
        <testcase classname="PushTests" name="test__010__LocalDevice__authentication_on_registered_device_sends_a_GotPushDeviceDetails_with_new_clientID()" time="3.146438956260681">
        </testcase>
        <testcase classname="PushTests" name="test__011__LocalDevice__sets_device_s_client_ID_from_registration_response()" time="0.003332972526550293">
        </testcase>
        <testcase classname="PushTests" name="test__012__LocalDevice__when_using_token_authentication__new_clientID_is_set()" time="0.2330629825592041">
        </testcase>
        <testcase classname="PushTests" name="test__013__LocalDevice__when_getting_a_client_ID_from_CONNECTED_message__new_clientID_is_set()" time="0.011928915977478027">
        </testcase>
        <testcase classname="PushTests" name="test__014__Registerer_Delegate_option__a_successful_activation_should_call_the_correct_registerer_delegate_method()" time="1.597681999206543">
        </testcase>
        <testcase classname="PushTests" name="test__015__Registerer_Delegate_option__registerer_delegate_should_not_hold_a_strong_instance_reference()" time="0.0017839670181274414">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__001__testMakeKeyInstance()" time="0.0017739534378051758">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__002__testMakeTokenInstance()" time="0.0054770708084106445">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__003__testListenToConnectionStateChanges()" time="0.12146008014678955">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__004__testNoAutoConnect()" time="0.00562596321105957">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__005__testSubscribeAndPublishingToChannel()" time="0.1132739782333374">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__006__testQueryingTheHistory()" time="0.1193990707397461">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__007__testPresenceOnAChannel()" time="0.1101999282836914">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__008__testQueryingThePresenceHistory()" time="0.11873495578765869">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__009__testMakeRestClientAndChannel()" time="0.0007530450820922852">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__010__testRestPublishMessage()" time="0.11409199237823486">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__011__testRestQueryingTheHistory()" time="0.12541794776916504">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__012__testRestPresenceOnAChannel()" time="0.11305499076843262">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__013__testRestQueryingThePresenceHistory()" time="0.11260497570037842">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__014__testGenerateToken()" time="0.0006489753723144531">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__015__testFetchingStats()" time="0.000702977180480957">
        </testcase>
        <testcase classname="ReadmeExamplesTests" name="test__016__testFetchingTime()" time="0.0006989240646362305">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__002__Channel__should_not_crash_when_an_ATTACH_request_is_responded_with_a_DETACHED()" time="0.43581199645996094">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__003__Channel__EventEmitter__channel_states_and_events__should_implement_the_EventEmitter_and_emit_events_for_state_changes()" time="0.6254749298095703">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__004__Channel__EventEmitter__channel_states_and_events__should_implement_the_EventEmitter_and_emit_events_for_FAILED_state_changes()" time="0.4882650375366211">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__005__Channel__EventEmitter__channel_states_and_events__should_implement_the_EventEmitter_and_emit_events_for_SUSPENDED_state_changes()" time="0.5512670278549194">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__006__Channel__EventEmitter__channel_states_and_events__can_emit_an_UPDATE_event()" time="0.3834259510040283">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__007__Channel__EventEmitter__channel_states_and_events__should_not_emit_detached_event_on_an_already_detached_channel()" time="0.5611441135406494">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__008__Channel__EventEmitter__channel_states_and_events__state_attribute_should_be_the_current_state_of_the_channel()" time="0.5530509948730469">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__009__Channel__EventEmitter__channel_states_and_events__should_contain_an_ErrorInfo_object_with_details_when_an_error_occurs()" time="0.005137920379638672">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__010__Channel__EventEmitter__channel_states_and_events__a_ChannelStateChange_is_emitted_as_the_first_argument_for_every_channel_state_change()" time="0.5730850696563721">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__011__Channel__EventEmitter__channel_states_and_events__ChannelStateChange_will_contain_a_resumed_boolean_attribute_with_value__true__if_the_bit_flag_RESUMED_was_included()" time="5.507272005081177">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__012__Channel__EventEmitter__channel_states_and_events__bit_flag_RESUMED_was_included()" time="0.37966299057006836">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__013__Channel__connection_state__if_the_connection_state_enters_the_CONNECTED_state__then_a_SUSPENDED_channel_will_initiate_an_attach_operation()" time="1.8503199815750122">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__014__Channel__connection_state__if_the_attach_operation_for_the_channel_times_out_and_the_channel_returns_to_the_SUSPENDED_state()" time="0.5432009696960449">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__015__Channel__connection_state__should_attach_successfully_and_remain_attached_when_the_connection_state_without_a_successful_recovery_gets_CONNECTED()" time="8.62286102771759">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__016__Channel__connection_state__if_the_connection_state_enters_the_DISCONNECTED_state__it_will_have_no_effect_on_the_channel_states()" time="5.102903962135315">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__017__Channel__connection_state__changes_to_FAILED__ATTACHING_channel_should_transition_to_FAILED()" time="0.014227986335754395">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__018__Channel__connection_state__changes_to_FAILED__ATTACHED_channel_should_transition_to_FAILED()" time="0.395920991897583">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__019__Channel__connection_state__changes_to_FAILED__channel_being_released_waiting_for_DETACH_shouldn_t_crash__issue__918_()" time="0.03702807426452637">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__020__Channel__connection_state__changes_to_FAILED__should_immediately_fail_if_not_in_the_connected_state()" time="0.37431800365448">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__021__Channel__connection_state__changes_to_FAILED__should_keep_the_channels_attached_when_client_reconnected_successfully_and_queue_messages_is_disabled()" time="0.7083539962768555">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__022__Channel__connection_state__changes_to_CLOSED__ATTACHING_channel_should_transition_to_DETACHED()" time="0.3933960199356079">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__023__Channel__connection_state__changes_to_CLOSED__ATTACHED_channel_should_transition_to_DETACHED()" time="0.4639749526977539">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__024__Channel__connection_state__changes_to_SUSPENDED__ATTACHING_channel_should_transition_to_SUSPENDED()" time="0.3128420114517212">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__025__Channel__connection_state__changes_to_SUSPENDED__ATTACHED_channel_should_transition_to_SUSPENDED()" time="0.3936150074005127">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__026__Channel__connection_state__changes_to_SUSPENDED__channel_being_released_waiting_for_DETACH_shouldn_t_crash__issue__918_()" time="0.039189934730529785">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__027__Channel__attach__if_already_ATTACHED_or_ATTACHING_nothing_is_done()" time="0.5438759326934814">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__028__Channel__attach__if_the_user_does_not_have_sufficient_permissions_to_attach__then_the_channel_will_transition_to_FAILED_and_set_the_errorReason()" time="0.48279595375061035">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__029__Channel__attach__if_the_channel_is_in_the_FAILED_state__the_attach_request_sets_its_errorReason_to_null__and_proceeds_with_a_channel_attach()" time="0.4528709650039673">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__030__Channel__attach__should_send_an_ATTACH_ProtocolMessage__change_state_to_ATTACHING_and_change_state_to_ATTACHED_after_confirmation()" time="0.40479302406311035">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__031__Channel__attach__should_transition_the_channel_state_to_FAILED_if_the_user_does_not_have_sufficient_permissions()" time="0.4701650142669678">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__032__Channel__attach__should_transition_the_channel_state_to_SUSPENDED_if_ATTACHED_ProtocolMessage_is_not_received()" time="2.5402300357818604">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__033__Channel__attach__if_called_with_a_callback_should_call_it_once_attached()" time="0.38195598125457764">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__034__Channel__attach__if_called_with_a_callback_and_already_attaching_should_call_the_callback_once_attached()" time="0.5587340593338013">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__035__Channel__attach__if_called_with_a_callback_and_already_attached_should_call_the_callback_with_nil_error()" time="0.8155219554901123">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__036__Channel__attach__if_the_channel_is_in_a_pending_state_ATTACHING__do_the_attach_operation_after_the_completion_of_the_pending_request()" time="0.3815730810165405">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__037__Channel__attach__if_the_channel_is_in_a_pending_state_DETACHING__do_the_attach_operation_after_the_completion_of_the_pending_request()" time="0.5298329591751099">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__038__Channel__attach__a_channel_in_DETACHING_can_actually_move_back_to_ATTACHED_if_it_fails_to_detach()" time="1.39096999168396">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__039__Channel__attach__results_in_an_error_if_the_connection_state_is__CLOSING()" time="0.304036021232605">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__040__Channel__attach__results_in_an_error_if_the_connection_state_is__CLOSED()" time="0.39572298526763916">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__041__Channel__attach__results_in_an_error_if_the_connection_state_is__SUSPENDED()" time="0.0028829574584960938">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__042__Channel__attach__results_in_an_error_if_the_connection_state_is__FAILED()" time="0.0034269094467163086">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__043__Channel__attach__happens_when_connection_is_CONNECTED_if_it_s_currently__INITIALIZED()" time="0.3991180658340454">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__044__Channel__attach__happens_when_connection_is_CONNECTED_if_it_s_currently__CONNECTING()" time="0.3704829216003418">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__046__Channel__attach__attach_resume__should_pass_attach_resume_flag_in_attach_message()" time="0.44950199127197266">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__047__Channel__attach__attach_resume__should_have_correct_AttachResume_value()" time="0.38161206245422363">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__048__Channel__attach__attach_resume__should_encode_correctly_the_AttachResume_flag()" time="2.7858699560165405">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__049__Channel__detach__if_state_is_INITIALIZED_or_DETACHED_nothing_is_done()" time="0.46438801288604736">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__050__Channel__detach__if_the_channel_is_in_a_pending_state_DETACHING__do_the_detach_operation_after_the_completion_of_the_pending_request()" time="1.5215789079666138">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__051__Channel__detach__if_the_channel_is_in_a_pending_state_ATTACHING__do_the_detach_operation_after_the_completion_of_the_pending_request()" time="0.38742196559906006">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__052__Channel__detach__results_in_an_error_if_the_connection_state_is_FAILED()" time="0.002442002296447754">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__053__Channel__detach__should_send_a_DETACH_ProtocolMessage__change_state_to_DETACHING_and_change_state_to_DETACHED_after_confirmation()" time="0.4782700538635254">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__054__Channel__detach__if_called_with_a_callback_should_call_it_once_detached()" time="0.6016199588775635">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__055__Channel__detach__if_called_with_a_callback_and_already_detaching_should_call_the_callback_once_detached()" time="0.45428693294525146">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__056__Channel__detach__if_called_with_a_callback_and_already_detached_should_should_call_the_callback_with_nil_error()" time="0.5158059597015381">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__057__Channel__detach__if_a_DETACHED_is_not_received_within_the_default_realtime_request_timeout__the_detach_request_should_be_treated_as_though_it_has_failed_and_the_channel_will_return_to_its_previous_state()" time="1.3879629373550415">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__058__Channel__detach__if_the_channel_state_is_SUSPENDED__the__detach__request_transitions_the_channel_immediately_to_the_DETACHED_state()" time="0.3876349925994873">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__059__Channel__detach__results_in_an_error_if_the_connection_state_is__CLOSING()" time="0.4056190252304077">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__060__Channel__detach__results_in_an_error_if_the_connection_state_is__FAILED()" time="0.3942919969558716">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__061__Channel__detach__happens_when_channel_is_ATTACHED_if_connection_is_currently__INITIALIZED()" time="0.4621649980545044">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__062__Channel__detach__happens_when_channel_is_ATTACHED_if_connection_is_currently__CONNECTING()" time="0.4533998966217041">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__063__Channel__detach__happens_when_channel_is_ATTACHED_if_connection_is_currently__DISCONNECTED()" time="0.8014689683914185">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__064__Channel__publish__should_encode_messages_in_the_same_way_as_the_RestChannel()" time="0.5645129680633545">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__065__Channel__publish__Message_connectionId_should_match_the_current_Connection_id_for_all_published_messages()" time="0.3984489440917969">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__066__Channel__publish__should_provide_an_optional_argument_that_allows_the_clientId_value_to_be_specified()" time="0.38253307342529297">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__067__Channel__publish__should_invoke_callback__when_the_message_is_successfully_delivered()" time="0.45692896842956543">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__068__Channel__publish__should_invoke_callback__upon_failure()" time="0.554663896560669">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__069__Channel__publish__should_invoke_callback__for_all_messages_published()" time="1.2777040004730225">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__070__Channel__publish__Connection_state_conditions__publish_should_not_trigger_an_implicit_attach()" time="0.40669500827789307">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__071__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__ATTACHED_then_the_messages_should_be_published_immediately()" time="0.4690459966659546">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__072__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__INITIALIZED_then_the_messages_should_be_published_immediately()" time="0.5510449409484863">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__073__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__DETACHED_then_the_messages_should_be_published_immediately()" time="0.5256470441818237">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__074__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__ATTACHING_then_the_messages_should_be_published_immediately()" time="0.38091492652893066">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__075__Channel__publish__Connection_state_conditions__if_the_connection_is_CONNECTED_and_the_channel_is__DETACHING_then_the_messages_should_be_published_immediately()" time="0.4567340612411499">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__076__Channel__publish__Connection_state_conditions__the_message__should_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED_if_the_connection_is__INITIALIZED()" time="0.4878300428390503">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__077__Channel__publish__Connection_state_conditions__the_message__should_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED_if_the_connection_is__CONNECTING()" time="0.7018890380859375">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__078__Channel__publish__Connection_state_conditions__the_message__should_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED_if_the_connection_is__DISCONNECTED()" time="0.9146900177001953">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__079__Channel__publish__Connection_state_conditions__the_message__should_NOT_be_queued_instead_it_should_be_published_if_the_channel_is__INITIALIZED()" time="0.498075008392334">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__080__Channel__publish__Connection_state_conditions__the_message__should_NOT_be_queued_instead_it_should_be_published_if_the_channel_is__ATTACHING()" time="0.675137996673584">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__081__Channel__publish__Connection_state_conditions__the_message__should_NOT_be_queued_instead_it_should_be_published_if_the_channel_is__ATTACHED()" time="6.4248141050338745">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__082__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_SUSPENDED()" time="0.3338339328765869">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__083__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_CLOSING()" time="0.3028329610824585">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__084__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_CLOSED()" time="0.3945080041885376">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__085__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__connection_is_FAILED()" time="0.30351901054382324">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__086__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__channel_is_SUSPENDED()" time="0.3936680555343628">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__087__Channel__publish__Connection_state_conditions__will_result_in_an_error_if_the__channel_is_FAILED()" time="0.39372503757476807">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__088__Channel__publish__message_bundling__Messages_are_delivered_using_a_single_ProtocolMessage_where_possible_by_bundling_in_all_messages_for_that_channel()" time="0.8813780546188354">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__089__Channel__publish__message_bundling__The_resulting_ProtocolMessage_must_not_exceed_the_maxMessageSize()" time="2.1485739946365356">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__091__Channel__publish__message_bundling__should_publish_only_once_on_multiple_explicit_publish_requests_for_a_given_message_with_client_supplied_ids()" time="0.47420501708984375">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__092__Channel__publish__message_bundling__Messages_with_differing_clientId_values_must_not_be_bundled_together__messages_with_different__non_empty__clientIds_are_posted_via_different_protocol_messages()" time="0.3868919610977173">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__093__Channel__publish__message_bundling__Messages_with_differing_clientId_values_must_not_be_bundled_together__messages_with_mixed_empty_non_empty_clientIds_are_posted_via_different_protocol_messages()" time="0.39432990550994873">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__094__Channel__publish__message_bundling__Messages_with_differing_clientId_values_must_not_be_bundled_together__messages_bundled_by_the_user_are_posted_in_a_single_protocol_message_even_if_they_have_mixed_clientIds()" time="0.550163984298706">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__095__Channel__publish__Unidentified_clients_using_Basic_Auth__should_have_the_provided_clientId_on_received_message_when_it_was_published_with_clientId()" time="0.3794490098953247">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__096__Channel__publish__expect_either__an_array_of_Message_objects()" time="0.4149470329284668">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__097__Channel__publish__expect_either__a_name_string_and_data_payload()" time="0.383944034576416">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__098__Channel__publish__expect_either__allows_name_to_be_null()" time="0.38488900661468506">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__099__Channel__publish__expect_either__allows_data_to_be_null()" time="0.3825620412826538">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__100__Channel__publish__expect_either__allows_name_and_data_to_be_assigned()" time="0.37425899505615234">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__101__Channel__publish__Identified_clients_with_clientId__when_publishing_a_Message_with_the_clientId_attribute_value_set_to_the_identified_client_s_clientId()" time="0.3909350633621216">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__102__Channel__publish__Identified_clients_with_clientId__when_publishing_a_Message_with_a_different_clientId_attribute_value_from_the_identified_client_s_clientId__it_should_reject_that_publish_operation_immediately()" time="0.38896405696868896">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__103__Channel__publish__Identified_clients_with_clientId__message_should_be_published_following_authentication_and_received_back_with_the_clientId_intact()" time="0.49380600452423096">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__104__Channel__publish__Identified_clients_with_clientId__message_should_be_rejected_by_the_Ably_service_and_the_message_error_should_contain_the_server_error()" time="0.5378040075302124">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__105__Channel__publish__Identified_clients_with_clientId__When_publishing_a_Message_with_clientId_set_to_null__should_be_unnecessary_to_set_clientId_of_the_Message_before_publishing_and_have_clientId_value_set_for_the_Message_when_received()" time="0.37494993209838867">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__106__Channel__subscribe__with_no_arguments_subscribes_a_listener_to_all_messages()" time="0.3733919858932495">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__107__Channel__subscribe__with_a_single_name_argument_subscribes_a_listener_to_only_messages_whose_name_member_matches_the_string_name()" time="0.3929969072341919">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__108__Channel__subscribe__with_a_attach_callback_should_subscribe_and_call_the_callback_when_attached()" time="0.4523799419403076">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__109__Channel__subscribe__should_implicitly_attach_the_channel()" time="0.39381909370422363">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__110__Channel__subscribe__should_result_in_an_error_if_channel_is_in_the_FAILED_state()" time="0.007646918296813965">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__111__Channel__subscribe__should_exist_ensuring_published_messages_are_not_echoed_back_to_the_subscriber_when_echoMessages_is_false()" time="1.4810879230499268">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__112__Channel__subscribe__should_deliver_the_message_even_if_there_is_an_error_while_decoding__using_crypto_data_128()" time="0.3833339214324951">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__113__Channel__subscribe__should_deliver_the_message_even_if_there_is_an_error_while_decoding__using_crypto_data_256()" time="0.392238974571228">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__114__Channel__subscribe__message_cannot_be_decoded_or_decrypted__should_deliver_with_encoding_attribute_set_indicating_the_residual_encoding_and_error_should_be_emitted()" time="0.39589905738830566">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__115__Channel__unsubscribe__with_no_arguments_unsubscribes_the_provided_listener_to_all_messages_if_subscribed()" time="0.3931339979171753">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__116__Channel__unsubscribe__with_a_single_name_argument_unsubscribes_the_provided_listener_if_previously_subscribed_with_a_name_specific_subscription()" time="0.39096295833587646">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__117__Channel__history__should_support_all_the_same_params_as_Rest()" time="0.3752729892730713">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__118__Channel__history__should_return_a_PaginatedResult_page()" time="0.5144870281219482">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__119__Channel__history__should_retrieve_all_available_messages()" time="0.9266290664672852">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__120__Channel__history__attached_channel_may_receive_an_additional_ATTACHED_ProtocolMessage()" time="0.36441290378570557">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__121__Channel__history__If_an_ERROR_ProtocolMessage_is_received_for_this_channel_then_the_channel_should_immediately_transition_to_the_FAILED_state__the_errorReason_should_be_set_and_an_error_should_be_emitted_on_the_channel()" time="0.38961005210876465">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__122__Channel__history__should_not_emit_messages_to_subscribers_if_the_channel_is_in_any_state_other_than_ATTACHED()" time="3.603281021118164">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__123__Channel__history__supports_the_param_untilAttach__should_be_false_as_default()" time="0.0004659891128540039">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__124__Channel__history__supports_the_param_untilAttach__should_invoke_an_error_when_the_untilAttach_is_specified_and_the_channel_is_not_attached()" time="0.0019550323486328125">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__125__Channel__history__supports_the_param_untilAttach__where_value_is_true__should_pass_the_querystring_param_fromSerial_with_the_serial_number_assigned_to_the_channel()" time="0.4992150068283081">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__126__Channel__history__supports_the_param_untilAttach__where_value_is_false__should_pass_the_querystring_param_fromSerial_with_the_serial_number_assigned_to_the_channel()" time="0.49256694316864014">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__127__Channel__history__supports_the_param_untilAttach__should_retrieve_messages_prior_to_the_moment_that_the_channel_was_attached()" time="1.079380989074707">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__128__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__the_channel_is_in_the_ATTACHED_states__an_attempt_to_reattach_the_channel_should_be_made_immediately_by_sending_a_new_ATTACH_message_and_the_channel_should_transition_to_the_ATTACHING_state_with_the_error_emitted_in_the_ChannelStateChange_event()" time="0.37428104877471924">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__129__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__the_channel_is_in_the_SUSPENDED_state__an_attempt_to_reattach_the_channel_should_be_made_immediately_by_sending_a_new_ATTACH_message_and_the_channel_should_transition_to_the_ATTACHING_state_with_the_error_emitted_in_the_ChannelStateChange_event()" time="1.3291970491409302">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__130__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__if_the_attempt_to_re_attach_fails_the_channel_will_transition_to_the_SUSPENDED_state_and_the_error_will_be_emitted_in_the_ChannelStateChange_event()" time="2.4155060052871704">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__131__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__if_the_channel_was_already_in_the_ATTACHING_state__the_channel_will_transition_to_the_SUSPENDED_state_and_the_error_will_be_emitted_in_the_ChannelStateChange_event()" time="0.39271795749664307">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__132__Channel__history__if_the_channel_receives_a_server_initiated_DETACHED_message_when__if_the_connection_is_no_longer_CONNECTED__then_the_automatic_attempts_to_re_attach_the_channel_must_be_cancelled()" time="1.4071309566497803">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__133__Channel__history__Channel_options__setOptions__should_send_an_ATTACH_message_with_params___modes_if_the_channel_is_attached()" time="0.47029900550842285">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__134__Channel__history__Channel_options__setOptions__should_send_an_ATTACH_message_with_params___modes_if_the_channel_is_attaching()" time="0.382161021232605">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__135__Channel__history__Channel_options__setOptions__should_success_immediately_if_channel_is_not_attaching_or_attached()" time="0.0010590553283691406">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__136__Channel__history__Channel_options__setOptions__should_fail_if_the_attach_moves_to_FAILED()" time="0.507767915725708">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__137__Channel__history__Channel_options__setOptions__should_fail_if_the_attach_moves_to_DETACHED()" time="0.3876950740814209">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__138__Channel__crypto__if_configured_for_encryption__channels_encrypt_and_decrypt_messages__data()" time="1.12015700340271">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__139__message_attributes__if_the_message_does_not_contain_an_id__it_should_be_set_to_protocolMsgId_index()" time="0.3888760805130005">
        </testcase>
        <testcase classname="RealtimeClientChannelTests" name="test__Channel_options__setOptions__shouldUpdateOptionsOfRestChannel()" time="0.33501601219177246">
        </testcase>
        <testcase classname="RealtimeClientChannelsTests" name="test__001__Channels__should_exist_methods_to_check_if_a_channel_exists_or_iterate_through_the_existing_channels()" time="0.002514958381652832">
        </testcase>
        <testcase classname="RealtimeClientChannelsTests" name="test__002__Channels__get__should_create_a_new_Channel_if_none_exists_or_return_the_existing_one()" time="0.004217028617858887">
        </testcase>
        <testcase classname="RealtimeClientChannelsTests" name="test__003__Channels__get__should_be_possible_to_specify_a_ChannelOptions()" time="0.002562999725341797">
        </testcase>
        <testcase classname="RealtimeClientChannelsTests" name="test__004__Channels__get__accessing_an_existing_Channel_with_options_should_update_the_options_and_then_return_the_object()" time="0.0039789676666259766">
        </testcase>
        <testcase classname="RealtimeClientChannelsTests" name="test__005__Channels__release__should_release_a_channel()" time="1.035994052886963">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__001__Connection__should_connect_automatically()" time="0.32329797744750977">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__002__Connection__should_connect_manually()" time="2.3167589902877808">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__003__Connection__API_version_param_must_be_included_in_all_connections()" time="0.0024830102920532227">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__004__Connection__Library_and_version_param__agent__should_include_the__Ably_Agent__header_value()" time="0.3154970407485962">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__005__Connection__basic_operations_should_work_simultaneously()" time="1.2130059003829956">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__006__Connection__should_have_an_opened_websocket_connection_and_received_a_CONNECTED_ProtocolMessage()" time="0.3064439296722412">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__007__Connection__should_make_a_new_connection_with_a_new_transport_instance_if_the_state_is_CLOSING()" time="0.5961469411849976">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__008__Connection__it_should_make_sure_that__when_the_CLOSED_ProtocolMessage_arrives_for_the_old_connection__it_doesn_t_affect_the_new_one()" time="0.604619026184082">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__009__Connection__should_enter_FAILED_state_when_API_key_is_invalid()" time="0.31559300422668457">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__010__Connection__attributes_within_ConnectionDetails_should_be_used_as_defaults()" time="0.29308509826660156">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__011__Connection__should_disconnect_the_transport_when_no_activity_exist()" time="4.049731016159058">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__012__Connection__the_client_may_receive_a_CONNECTED_ProtocolMessage_from_Ably_at_any_point_and_should_emit_an_UPDATE_event()" time="0.8511999845504761">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__013__Connection__should_set_the_Connection_reason_attribute_based_on_the_Error_member_of_the_CONNECTED_ProtocolMessage()" time="0.3886380195617676">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__014__Connection__should_not_move_to_FAILED_if_received_DISCONNECT_with_an_error()" time="0.30416107177734375">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__015__Connection__should_abort_reconnection_with_new_token_if_the_server_has_requested_it_to_authorize_and_after_it_the_connection_has_been_closed()" time="0.3889230489730835">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__016__Connection__ConnectionDetails__maxMessageSize_overrides_the_default_maxMessageSize()" time="0.32560300827026367">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__017__Connection__url__should_connect_to_the_default_host()" time="0.0017590522766113281">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__018__Connection__url__should_connect_with_query_string_params()" time="0.3148859739303589">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__019__Connection__url__should_connect_with_query_string_params_including_clientId()" time="0.41085803508758545">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__020__Connection__event_emitter__should_emit_events_for_state_changes()" time="1.0674909353256226">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__021__Connection__event_emitter__should_never_emit_a_ConnectionState_event_for_a_state_equal_to_the_previous_state()" time="0.6032660007476807">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__022__Connection__event_emitter__should_emit_states_on_a_new_connection()" time="0.3025599718093872">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__023__Connection__event_emitter__should_emit_states_when_connection_is_closed()" time="0.37308406829833984">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__024__Connection__event_emitter__should_have_the_current_state()" time="0.3082219362258911">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__025__Connection__event_emitter__should_have_a_ConnectionStateChange_as_first_argument_for_every_connection_state_change()" time="0.3038100004196167">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__026__Connection__event_emitter__should_have_the_reason_which_contains_an_ErrorInfo()" time="0.29996204376220703">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__027__Connection__event_emitter__any_state_change_triggered_by_a_ProtocolMessage_that_contains_an_Error_member_should_populate_the_Reason_property()" time="0.4151298999786377">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__028__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__successful_receipt_and_acceptance_of_message()" time="0.4628540277481079">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__029__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__successful_receipt_and_acceptance_of_presence()" time="0.44489002227783203">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__030__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__message_failure()" time="0.6933540105819702">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__031__Connection__ACK_and_NACK__should_expect_either_an_ACK_or_NACK_to_confirm__presence_failure()" time="0.4590829610824585">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__032__Connection__ACK_and_NACK__ProtocolMessage__should_contain_unique_serially_incrementing_msgSerial_along_with_the_count()" time="0.9590020179748535">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__033__Connection__ACK_and_NACK__ProtocolMessage__should_continue_incrementing_msgSerial_serially_if_the_connection_resumes_successfully()" time="5.593246936798096">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__034__Connection__ACK_and_NACK__ProtocolMessage__should_reset_msgSerial_serially_if_the_connection_does_not_resume()" time="1.4647120237350464">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__035__Connection__ACK_and_NACK__should_trigger_the_failure_callback_for_the_remaining_pending_messages_if__connection_is_closed()" time="2.466994047164917">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__036__Connection__ACK_and_NACK__should_trigger_the_failure_callback_for_the_remaining_pending_messages_if__connection_state_enters_FAILED()" time="1.452091932296753">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__037__Connection__ACK_and_NACK__should_trigger_the_failure_callback_for_the_remaining_pending_messages_if__lost_connection_state()" time="1.8042020797729492">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__038__Connection__connection_id__should_be_null_until_connected()" time="0.3062700033187866">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__039__Connection__connection_id__should_have_unique_IDs()" time="0.6357020139694214">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__040__Connection__connection_key__should_be_null_until_connected()" time="0.31631195545196533">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__041__Connection__connection_key__should_have_unique_connection_keys()" time="0.8841860294342041">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__042__Connection__serial__should_be_minus_1_once_connected()" time="0.30984604358673096">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__043__Connection__serial__should_not_update_when_a_message_is_sent_but_increments_by_one_when_ACK_is_received()" time="1.473006010055542">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__044__Connection__serial__should_have_last_known_connection_serial_from_restored_connection()" time="2.0128690004348755">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__045__Connection__close__if_CONNECTING__do_the_operation_once_CONNECTED()" time="0.384052038192749">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__046__Connection__close__if_CONNECTED__should_send_a_CLOSE_action__change_state_to_CLOSING_and_receive_a_CLOSED_action()" time="0.388064980506897">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__047__Connection__close__should_transition_to_CLOSED_action_when_the_close_process_timeouts()" time="0.37498903274536133">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__048__Connection__close__transitions_to_the_CLOSING_state_and_then_to_the_CLOSED_state_if_the_transport_is_abruptly_closed()" time="0.3744610548019409">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__049__Connection__close__if_DISCONNECTED__aborts_the_retry_and_moves_immediately_to_CLOSED()" time="1.896710991859436">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__050__Connection__close__if_SUSPENDED__aborts_the_retry_and_moves_immediately_to_CLOSED()" time="1.866366982460022">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__051__Connection__ping__fails_if_in_the_INITIALIZED__SUSPENDED__CLOSING__CLOSED_or_FAILED_state()" time="0.7872689962387085">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__052__Connection__ping__should_send_a_ProtocolMessage_with_action_HEARTBEAT_and_expects_a_HEARTBEAT_message_in_response()" time="0.42656004428863525">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__053__Connection__ping__should_fail_if_a_HEARTBEAT_ProtocolMessage_is_not_received_within_the_default_realtime_request_timeout()" time="3.584929943084717">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__054__Connection__connection_request_fails__on_DISCONNECTED_after_CONNECTED__should_not_emit_error_with_a_renewable_token()" time="3.529772996902466">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__055__Connection__connection_request_fails__on_token_error_while_CONNECTING__reissues_token_and_reconnects()" time="4.9341089725494385">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__056__Connection__connection_request_fails__should_transition_to_disconnected_when_the_token_renewal_fails()" time="3.109568953514099">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__057__Connection__connection_request_fails__should_transition_to_Failed_state_because_the_token_is_invalid_and_not_renewable()" time="1.4799859523773193">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__058__Connection__connection_request_fails__connection_attempt_should_fail_if_not_connected_within_the_default_realtime_request_timeout()" time="0.5103800296783447">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__059__Connection__connection_request_fails__connection_attempt_fails_for_any_recoverable_reason()" time="3.534888982772827">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__060__Connection__connection_request_fails__connection_state_has_been_in_the_DISCONNECTED_state_for_more_than_the_default_connectionStateTtl_should_change_the_state_to_SUSPENDED()" time="1.0304460525512695">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__061__Connection__connection_request_fails__should_change_the_state_to_SUSPENDED_when_the_connection_state_has_been_in_the_DISCONNECTED_state_for_more_than_the_connectionStateTtl()" time="13.04400098323822">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__062__Connection__connection_request_fails__on_CLOSE_the_connection_should_stop_connection_retries()" time="3.8223119974136353">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__063__Connection__connection_failures_once_CONNECTED__should_not_receive_published_messages_until_the_connection_reconnects_successfully()" time="0.952860951423645">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__064__Connection__connection_failures_once_CONNECTED__if_a_Connection_transport_is_disconnected_unexpectedly_or_if_a_token_expires__then_the_Connection_manager_will_immediately_attempt_to_reconnect()" time="3.528488039970398">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__066__Connection__connection_failures_once_CONNECTED__ACK_and_NACK_responses_for_published_messages_can_only_ever_be_received_on_the_transport_connection_on_which_those_messages_were_sent()" time="0.7893129587173462">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__067__Connection__connection_failures_once_CONNECTED__reconnects_to_the_websocket_endpoint_with_additional_querystring_params__resume_is_the_private_connection_key_and_connection_serial_is_the_most_recent_ProtocolMessage_connectionSerial_received()" time="0.6920099258422852">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__068__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__CONNECTED_ProtocolMessage_with_the_same_connectionId_as_the_current_client__and_no_error()" time="0.7222269773483276">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__069__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__CONNECTED_ProtocolMessage_with_the_same_connectionId_as_the_current_client_and_an_non_fatal_error()" time="0.7319380044937134">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__070__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__CONNECTED_ProtocolMessage_with_a_new_connectionId_and_an_error()" time="0.8879640102386475">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__071__Connection__connection_failures_once_CONNECTED__System_s_response_to_a_resume_request__ERROR_ProtocolMessage_indicating_a_fatal_error_in_the_connection()" time="0.4115610122680664">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__073__Connection__connection_failures_once_CONNECTED__when_a_connection_is_resumed__the_connection_key_may_change_and_will_be_provided_in_the_first_CONNECTED_ProtocolMessage_connectionDetails()" time="0.8275870084762573">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__075__Connection__connection_failures_once_CONNECTED__when_connection__ttl_plus_idle_interval__period_has_passed_since_last_activity__reattaches_to_the_same_channels_after_a_new_connection_has_been_established()" time="5.851318001747131">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__076__Connection__connection_failures_once_CONNECTED__when_connection__ttl_plus_idle_interval__period_has_NOT_passed_since_last_activity__uses_the_same_connection()" time="0.7211629152297974">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__078__Connection__connection_failures_once_CONNECTED__DISCONNECTED_message_contains_a_token_error__and_the_library_does_not_have_a_means_to_renew_the_token__the_connection_will_transition_to_the_FAILED_state()" time="3.11605703830719">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__080__Connection__Connection_recovery__connection_state_should_recover_explicitly_with_a_recover_key()" time="1.3482470512390137">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__082__Connection__Connection_recovery__when_a_connection_is_successfully_recovered__Connection_id_will_be_identical_to_the_id_of_the_connection_that_was_recovered_and_Connection_key_will_always_be_updated_to_the_ConnectionDetails_connectionKey_provided_in_the_first_CONNECTED_ProtocolMessage()" time="0.6277600526809692">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__084__Connection__Connection_recovery__should_connect_anyway_if_the_recoverKey_is_no_longer_valid()" time="0.31340503692626953">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__085__Connection__Connection_recovery__should_use_msgSerial_from_recoveryKey_to_set_the_client_internal_msgSerial_but_is_not_sent_to_Ably()" time="0.33577799797058105">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__086__Connection__Host_Fallback__failing_connections_with_custom_endpoint_should_result_in_an_error_immediately()" time="0.10248792171478271">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__087__Connection__Host_Fallback__failing_connections_with_custom_endpoint_should_result_in_time_outs()" time="0.10632896423339844">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__088__Connection__Host_Fallback__applies_when_the_default_realtime_ably_io_endpoint_is_being_used()" time="1.0269089937210083">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__089__Connection__Host_Fallback__applies_when_an_array_of_ClientOptions_fallbackHosts_is_provided()" time="0.25366294384002686">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__090__Connection__Host_Fallback__should_not_use_an_alternative_host_when_the_client_receives_a_bad_request()" time="0.11185097694396973">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__091__Connection__Host_Fallback__every_connection_is_first_attempted_to_the_primary_host_realtime_ably_io()" time="1.2217509746551514">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__092__Connection__Host_Fallback__should_retry_hosts_in_random_order_after_checkin_if_an_internet_connection_is_available()" time="0.8447760343551636">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__093__Connection__Host_Fallback__doesn_t_try_fallback_host_if_Internet_connection_check_fails()" time="0.11403405666351318">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__095__Connection__Host_Fallback__won_t_use_fallback_hosts_feature_if_an_empty_array_is_provided()" time="0.11229395866394043">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__096__Connection__Host_Fallback__client_is_connected_to_a_fallback_host_endpoint_should_do_HTTP_requests_to_the_same_data_centre()" time="0.9487439393997192">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__100__Connection__Host_Fallback__should_move_to_disconnected_when_there_s_no_internet__with_NSPOSIXErrorDomain_with_code_57()" time="0.29953300952911377">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__101__Connection__Host_Fallback__should_move_to_disconnected_when_there_s_no_internet__with_NSPOSIXErrorDomain_with_code_50()" time="0.30980801582336426">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__102__Connection__Host_Fallback__should_move_to_disconnected_when_there_s_no_internet__with_any_kCFErrorDomainCFNetwork()" time="0.3115830421447754">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__106__Connection__Operating_System_events_for_network_internet_connectivity_changes__should_immediately_attempt_to_connect_if_the_operating_system-indicates_that_the_underlying_internet_connection_is_now_available_when_DISCONNECTED_or_SUSPENDED()" time="0.46364009380340576">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__107__Connection__Operating_System_events_for_network_internet_connectivity_changes__Ably_can_request_that_a_connected_client_re_authenticates_by_sending_the_client_an_AUTH_ProtocolMessage()" time="1.0578019618988037">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__108__Connection__Operating_System_events_for_network_internet_connectivity_changes__re_authenticate_and_resume_the_connection_when_the_client_is_forcibly_disconnected_following_a_DISCONNECTED_message_containing_an_error_code_greater_than_or_equal_to_40140_and_less_than_40150()" time="5.653691053390503">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__109__Connection__Operating_System_events_for_network_internet_connectivity_changes__should_immediately_change_the_state_to_DISCONNECTED_if_the_operating_system-indicates_that_the_underlying_internet_connection_is_no_longer_available__when_CONNECTING()" time="0.004202008247375488">
        </testcase>
        <testcase classname="RealtimeClientConnectionTests" name="test__110__Connection__Operating_System_events_for_network_internet_connectivity_changes__should_immediately_change_the_state_to_DISCONNECTED_if_the_operating_system-indicates_that_the_underlying_internet_connection_is_no_longer_available__when_CONNECTED()" time="0.2976769208908081">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__004__Presence__callback_can_be_provided_that_will_be_called_upon_success()" time="0.46957898139953613">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__005__Presence__callback_can_be_provided_that_will_be_called_upon_failure()" time="0.49191391468048096">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__006__Presence__should_also_ensure_that_using_updateClient_has_no_side_effects_on_a_client_that_has_entered_normally_using_Presence_enter()" time="0.9733139276504517">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__007__Presence__should_indicate_an_error_if_the_client_is_identified_and_has_a_valid_clientId_and_the_clientId_argument_does_not_match_the_client_s_clientId()" time="0.5436139106750488">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__015__Presence__subscribe__with_no_arguments_should_subscribe_a_listener_to_all_presence_messages()" time="1.0861248970031738">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__016__Presence__unsubscribe__with_no_arguments_unsubscribes_the_listener_if_previously_subscribed_with_an_action_specific_subscription()" time="0.004266977310180664">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__018__Presence__Channel_state_change_side_effects__if_the_channel_enters_the_FAILED_state__all_queued_presence_messages_should_fail_immediately()" time="0.008092999458312988">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__020__Presence__Channel_state_change_side_effects__if_the_channel_enters_the_DETACHED_state__all_queued_presence_messages_should_fail_immediately()" time="0.48896098136901855">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__021__Presence__Channel_state_change_side_effects__if_the_channel_enters_the_DETACHED_state__should_clear_the_PresenceMap_including_local_members_and_does_not_emit_any_presence_events()" time="0.520393967628479">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__022__Presence__Channel_state_change_side_effects__channel_enters_the_SUSPENDED_state__all_queued_presence_messages_should_fail_immediately()" time="0.003226041793823242">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__023__Presence__Channel_state_change_side_effects__channel_enters_the_SUSPENDED_state__should_maintain_the_PresenceMap_and_any_members_present_before_and_after_the_sync_should_not_emit_presence_events()" time="6.631612062454224">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__025__Presence__unsubscribe__with_a_single_action_argument_unsubscribes_the_provided_listener_to_all_presence_messages_for_that_action()" time="0.002272963523864746">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__026__Presence__subscribe__should_implicitly_attach_the_channel()" time="0.5260430574417114">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__027__Presence__subscribe__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state()" time="0.0023440122604370117">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__028__Presence__subscribe__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state()" time="0.007025957107543945">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__029__Presence__subscribe__with_a_single_action_argument()" time="1.0612810850143433">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__032__Presence__enter__entering_without_an_explicit_PresenceMessage_clientId_should_implicitly_use_the_clientId_of_the_current_connection()" time="0.47346997261047363">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__033__Presence__enter__should_result_in_an_error_immediately_if_the_client_is_anonymous()" time="0.004585981369018555">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__034__Presence__enter__should_result_in_an_error_immediately_if_the_channel_is_DETACHED()" time="0.44691002368927">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__035__Presence__enter__should_result_in_an_error_immediately_if_the_channel_is_FAILED()" time="0.004875063896179199">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__036__Presence__enter__should_result_in_an_error_if_Ably_service_determines_that_the_client_is_unidentified()" time="0.005908012390136719">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__037__Presence__update__should_update_the_data_for_the_present_member_with_a_value()" time="0.7160990238189697">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__040__Presence__update__optionally_a_callback_can_be_provided_that_is_called_for_success()" time="0.4531010389328003">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__041__Presence__update__optionally_a_callback_can_be_provided_that_is_called_for_failure()" time="0.0031059980392456055">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__042__Presence__update__update_without_an_explicit_PresenceMessage_clientId_should_implicitly_use_the_clientId_of_the_current_connection()" time="0.9686999320983887">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__048__Presence__PresenceMap__if_action_of_PRESENT_arrives__it_should_be_added_to_the_presence_map_with_the_action_set_to_PRESENT()" time="0.8196181058883667">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__052__Presence__PresenceMap__compare_for_newness__split_the_id_of_both_presence_messages()" time="29.68519902229309">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__053__Presence__PresenceMap__compare_for_newness__presence_message_has_a_connectionId_which_is_not_an_initial_substring_of_its_id__compares_them_by_timestamp_numerically()" time="29.834241032600403">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__056__Presence__enter__should_result_in_an_error_if_the_client_does_not_have_required_presence_permission()" time="0.4747300148010254">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__057__Presence__update__should_result_in_an_error_immediately_if_the_client_is_anonymous()" time="0.00531005859375">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__058__Presence__update__should_result_in_an_error_immediately_if_the_channel_is_DETACHED()" time="0.47449302673339844">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__059__Presence__update__should_result_in_an_error_immediately_if_the_channel_is_FAILED()" time="0.004661083221435547">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__060__Presence__update__should_result_in_an_error_if_the_client_does_not_have_required_presence_permission()" time="0.4987809658050537">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__061__Presence__update__should_result_in_an_error_if_Ably_service_determines_that_the_client_is_unidentified()" time="0.00740206241607666">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__062__Presence__leave__optionally_a_callback_can_be_provided_that_is_called_for_success()" time="0.9737319946289062">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__063__Presence__leave__optionally_a_callback_can_be_provided_that_is_called_for_failure()" time="0.5290160179138184">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__064__Presence__leave__should_raise_an_error_if_client_is_not_present()" time="0.0028409957885742188">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__065__Presence__leave__entering_without_an_explicit_PresenceMessage_clientId_should_implicitly_use_the_clientId_of_the_current_connection()" time="0.9777089357376099">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__066__Presence__leave__if_the_client_is_not_currently_ENTERED__Ably_will_respond_with_an_ACK_and_the_request_will_succeed()" time="1.5609760284423828">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__067__Presence__enter__implicitly_attaches_the_Channel()" time="0.4633690118789673">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__068__Presence__enter__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state()" time="0.005584001541137695">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__069__Presence__enter__should_result_in_an_error_if_the_channel_is_in_the_DETACHED_state()" time="0.4498850107192993">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__070__Presence__leave__should_result_in_an_error_immediately_if_the_client_is_anonymous()" time="0.0021609067916870117">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__071__Presence__leave__should_result_in_an_error_immediately_if_the_channel_is_DETACHED()" time="0.4747960567474365">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__072__Presence__leave__should_result_in_an_error_immediately_if_the_channel_is_FAILED()" time="0.44562196731567383">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__073__Presence__leave__should_result_in_an_error_if_the_client_does_not_have_required_presence_permission()" time="0.5392110347747803">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__074__Presence__leave__should_result_in_an_error_if_Ably_service_determines_that_the_client_is_unidentified()" time="0.0044890642166137695">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__075__Presence__subscribe__should_implicitly_attach_the_channel()" time="0.5577529668807983">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__076__Presence__subscribe__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state()" time="0.0024570226669311523">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__077__Presence__subscribe__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state()" time="0.005006909370422363">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__078__Presence__enter__optional_data_can_be_included_when_entering_a_channel()" time="0.4926619529724121">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__079__Presence__enter__should_emit_the_data_attribute_in_the_LEAVE_event_when_data_is_provided_when_entering_but_no_data_is_provided_when_leaving()" time="0.9835339784622192">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__084__Presence__enterClient__should_implicitly_attach_the_Channel()" time="0.45652198791503906">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__085__Presence__enterClient__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state()" time="0.0034520626068115234">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__086__Presence__enterClient__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state()" time="0.004806995391845703">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__087__Presence__updateClient__should_implicitly_attach_the_Channel()" time="0.49191606044769287">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__088__Presence__updateClient__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state()" time="0.002279043197631836">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__089__Presence__updateClient__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state()" time="0.004678010940551758">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__090__Presence__leaveClient__should_implicitly_attach_the_Channel()" time="0.4590640068054199">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__091__Presence__leaveClient__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state()" time="0.0028870105743408203">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__092__Presence__leaveClient__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state()" time="0.004189014434814453">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__093__Presence__Connection_state_conditions__all_presence_messages_are_published_immediately_if_the_connection_is_CONNECTED()" time="0.7352960109710693">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__094__Presence__Connection_state_conditions__all_presence_messages_will_be_queued_and_delivered_as_soon_as_the_connection_state_returns_to_CONNECTED()" time="0.8579069375991821">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__095__Presence__Connection_state_conditions__all_presence_messages_will_be_lost_if_queueMessages_has_been_explicitly_set_to_false()" time="0.3849790096282959">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__096__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is_INITIALIZED_and_queueMessages_has_been_explicitly_set_to_false()" time="0.0013660192489624023">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__097__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is__suspended()" time="0.37471306324005127">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__098__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is__closed()" time="0.46946799755096436">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__099__Presence__Connection_state_conditions__should_result_in_an_error_if_the_connection_state_is__failed()" time="0.3758280277252197">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__101__Presence__get__should_implicitly_attach_the_channel()" time="0.6250230073928833">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__102__Presence__get__should_result_in_an_error_if_the_channel_is_in_the_FAILED_state()" time="0.005496978759765625">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__103__Presence__get__should_result_in_an_error_if_the_channel_moves_to_the_FAILED_state()" time="0.0026750564575195312">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__104__Presence__get__should_result_in_an_error_if_the_channel_is_in_the_DETACHED_state()" time="0.45996594429016113">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__105__Presence__get__should_result_in_an_error_if_the_channel_moves_to_the_DETACHED_state()" time="34.999130964279175">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__106__Presence__get__query__waitForSync_should_be_true_by_default()" time="0.0005060434341430664">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__107__Presence__get__If_the_Channel_is_in_the_SUSPENDED_state_then__by_default__results_in_an_error()" time="0.003076910972595215">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__108__Presence__get__If_the_Channel_is_in_the_SUSPENDED_state_then__if_waitForSync_is_true__results_in_an_error()" time="0.0033529996871948242">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__109__Presence__get__If_the_Channel_is_in_the_SUSPENDED_state_then__if_waitForSync_is_false__returns_the_members_in_the_current_PresenceMap()" time="0.004826903343200684">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__111__Presence__get__Query__set_of_params___waitForSync_is_false__should_return_immediately_the_known_set_of_presence_members()" time="44.787432074546814">
            <failure message="expected to have Array&lt;ARTPresenceMessage&gt; with count 100, got 150
Actual Value: [&lt;ARTPresenceMessage: 0x7f80ef112ce0&gt; {id: 0XrfMd09dq:83:0,clientId: user84,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:11 +0000 (1651487171.933),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed1c880&gt; {id: 0XrfMd09dq:3:0,clientId: user4,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:48 +0000 (1651487148.843),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee87c860&gt; {id: 0XrfMd09dq:88:0,clientId: user89,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:13 +0000 (1651487173.584),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee839260&gt; {id: 0XrfMd09dq:92:0,clientId: user93,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:14 +0000 (1651487174.735),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef11e2a0&gt; {id: 0XrfMd09dq:97:0,clientId: user98,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:15 +0000 (1651487175.963),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed241e0&gt; {id: 0XrfMd09dq:11:0,clientId: user12,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:51 +0000 (1651487151.151),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed533b0&gt; {id: 0XrfMd09dq:20:0,clientId: user21,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:53 +0000 (1651487153.959),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed4dc20&gt; {id: 0XrfMd09dq:16:0,clientId: user17,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:52 +0000 (1651487152.802),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed4f3d0&gt; {id: 0XrfMd09dq:29:0,clientId: user30,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:56 +0000 (1651487156.340),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed25fa0&gt; {id: 0XrfMd09dq:25:0,clientId: user26,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:55 +0000 (1651487155.188),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef43bd60&gt; {id: 0XrfMd09dq:34:0,clientId: user35,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:57 +0000 (1651487157.990),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed3bf30&gt; {id: 0XrfMd09dq:4:0,clientId: user5,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:49 +0000 (1651487149.343),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed60cc0&gt; {id: 0XrfMd09dq:103:0,clientId: user104,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:17 +0000 (1651487177.691),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed47c40&gt; {id: 0XrfMd09dq:43:0,clientId: user44,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:00 +0000 (1651487160.370),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedacaf0&gt; {id: 0XrfMd09dq:108:0,clientId: user109,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:19 +0000 (1651487179.352),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef445430&gt; {id: 0XrfMd09dq:112:0,clientId: user113,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:20 +0000 (1651487180.504),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedc07e0&gt; {id: 0XrfMd09dq:52:0,clientId: user53,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:03 +0000 (1651487163.171),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eeda4f50&gt; {id: 0XrfMd09dq:117:0,clientId: user118,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:21 +0000 (1651487181.748),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed27d20&gt; {id: 0XrfMd09dq:121:0,clientId: user122,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:22 +0000 (1651487182.886),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedb0f60&gt; {id: 0XrfMd09dq:48:0,clientId: user49,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:02 +0000 (1651487162.021),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee846540&gt; {id: 0XrfMd09dq:61:0,clientId: user62,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:05 +0000 (1651487165.560),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef111700&gt; {id: 0XrfMd09dq:57:0,clientId: user58,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:04 +0000 (1651487164.407),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedb5670&gt; {id: 0XrfMd09dq:126:0,clientId: user127,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:24 +0000 (1651487184.540),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef420840&gt; {id: 0XrfMd09dq:135:0,clientId: user136,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:26 +0000 (1651487186.917),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef1ccaa0&gt; {id: 0XrfMd09dq:66:0,clientId: user67,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:07 +0000 (1651487167.215),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed73f10&gt; {id: 0XrfMd09dq:139:0,clientId: user140,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:28 +0000 (1651487188.074),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef43c240&gt; {id: 0XrfMd09dq:144:0,clientId: user145,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:29 +0000 (1651487189.723),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed16b10&gt; {id: 0XrfMd09dq:130:0,clientId: user131,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:25 +0000 (1651487185.691),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee8b36f0&gt; {id: 0XrfMd09dq:70:0,clientId: user71,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:08 +0000 (1651487168.366),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee87ea40&gt; {id: 0XrfMd09dq:75:0,clientId: user76,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:09 +0000 (1651487169.593),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee88c830&gt; {id: 0XrfMd09dq:79:0,clientId: user80,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:10 +0000 (1651487170.783),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef1c5800&gt; {id: 0XrfMd09dq:84:0,clientId: user85,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:12 +0000 (1651487172.434),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef11c140&gt; {id: 0XrfMd09dq:5:0,clientId: user6,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:49 +0000 (1651487149.419),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee86df40&gt; {id: 0XrfMd09dq:93:0,clientId: user94,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:14 +0000 (1651487174.811),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee85ba80&gt; {id: 0XrfMd09dq:98:0,clientId: user99,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:16 +0000 (1651487176.464),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eede4f90&gt; {id: 0XrfMd09dq:12:0,clientId: user13,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:51 +0000 (1651487151.651),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef45f6a0&gt; {id: 0XrfMd09dq:21:0,clientId: user22,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:54 +0000 (1651487154.034),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef42c360&gt; {id: 0XrfMd09dq:17:0,clientId: user18,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:52 +0000 (1651487152.882),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed0dbe0&gt; {id: 0XrfMd09dq:30:0,clientId: user31,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:56 +0000 (1651487156.840),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed46060&gt; {id: 0XrfMd09dq:26:0,clientId: user27,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:55 +0000 (1651487155.688),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed0e8e0&gt; {id: 0XrfMd09dq:39:0,clientId: user40,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:59 +0000 (1651487159.218),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eeddb280&gt; {id: 0XrfMd09dq:101:0,clientId: user102,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:17 +0000 (1651487177.116),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee5ec620&gt; {id: 0XrfMd09dq:35:0,clientId: user36,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:58 +0000 (1651487158.066),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee885f50&gt; {id: 0XrfMd09dq:6:0,clientId: user7,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:49 +0000 (1651487149.918),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedbdb30&gt; {id: 0XrfMd09dq:44:0,clientId: user45,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:00 +0000 (1651487160.871),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedff260&gt; {id: 0XrfMd09dq:106:0,clientId: user107,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:18 +0000 (1651487178.766),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed1f550&gt; {id: 0XrfMd09dq:110:0,clientId: user111,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:19 +0000 (1651487179.928),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed492a0&gt; {id: 0XrfMd09dq:115:0,clientId: user116,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:21 +0000 (1651487181.157),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed544a0&gt; {id: 0XrfMd09dq:119:0,clientId: user120,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:22 +0000 (1651487182.312),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef1abcc0&gt; {id: 0XrfMd09dq:53:0,clientId: user54,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:03 +0000 (1651487163.246),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedfff10&gt; {id: 0XrfMd09dq:124:0,clientId: user125,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:23 +0000 (1651487183.962),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee892c00&gt; {id: 0XrfMd09dq:62:0,clientId: user63,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:06 +0000 (1651487166.063),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef405540&gt; {id: 0XrfMd09dq:133:0,clientId: user134,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:26 +0000 (1651487186.342),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef127a40&gt; {id: 0XrfMd09dq:58:0,clientId: user59,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:04 +0000 (1651487164.908),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef43c2f0&gt; {id: 0XrfMd09dq:142:0,clientId: user143,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:29 +0000 (1651487189.148),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef12d2d0&gt; {id: 0XrfMd09dq:67:0,clientId: user68,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:07 +0000 (1651487167.290),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed21130&gt; {id: 0XrfMd09dq:138:0,clientId: user139,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:27 +0000 (1651487187.999),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed63f60&gt; {id: 0XrfMd09dq:147:0,clientId: user148,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:30 +0000 (1651487190.374),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee8aef80&gt; {id: 0XrfMd09dq:71:0,clientId: user72,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:08 +0000 (1651487168.441),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee895bb0&gt; {id: 0XrfMd09dq:76:0,clientId: user77,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:10 +0000 (1651487170.093),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee8eec40&gt; {id: 0XrfMd09dq:80:0,clientId: user81,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:11 +0000 (1651487171.283),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee86ae00&gt; {id: 0XrfMd09dq:85:0,clientId: user86,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:12 +0000 (1651487172.510),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee83e7e0&gt; {id: 0XrfMd09dq:89:0,clientId: user90,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:13 +0000 (1651487173.659),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee8b0f90&gt; {id: 0XrfMd09dq:7:0,clientId: user8,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:49 +0000 (1651487149.994),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee881820&gt; {id: 0XrfMd09dq:94:0,clientId: user95,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:15 +0000 (1651487175.310),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed9fa70&gt; {id: 0XrfMd09dq:13:0,clientId: user14,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:51 +0000 (1651487151.727),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed4d600&gt; {id: 0XrfMd09dq:22:0,clientId: user23,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:54 +0000 (1651487154.536),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed1e0d0&gt; {id: 0XrfMd09dq:18:0,clientId: user19,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:53 +0000 (1651487153.380),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedb54b0&gt; {id: 0XrfMd09dq:31:0,clientId: user32,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:56 +0000 (1651487156.915),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef43add0&gt; {id: 0XrfMd09dq:27:0,clientId: user28,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:55 +0000 (1651487155.764),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedac8b0&gt; {id: 0XrfMd09dq:99:0,clientId: user100,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:16 +0000 (1651487176.539),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed0e960&gt; {id: 0XrfMd09dq:40:0,clientId: user41,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:59 +0000 (1651487159.718),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed15eb0&gt; {id: 0XrfMd09dq:36:0,clientId: user37,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:58 +0000 (1651487158.567),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef4ebbf0&gt; {id: 0XrfMd09dq:104:0,clientId: user105,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:18 +0000 (1651487178.190),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee888420&gt; {id: 0XrfMd09dq:8:0,clientId: user9,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:50 +0000 (1651487150.501),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eeda2e10&gt; {id: 0XrfMd09dq:49:0,clientId: user50,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:02 +0000 (1651487162.096),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef448fc0&gt; {id: 0XrfMd09dq:113:0,clientId: user114,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:20 +0000 (1651487180.579),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedbdc70&gt; {id: 0XrfMd09dq:45:0,clientId: user46,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:00 +0000 (1651487160.953),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed05700&gt; {id: 0XrfMd09dq:118:0,clientId: user119,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:22 +0000 (1651487182.236),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef1bd080&gt; {id: 0XrfMd09dq:54:0,clientId: user55,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:03 +0000 (1651487163.755),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef404480&gt; {id: 0XrfMd09dq:122:0,clientId: user123,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:23 +0000 (1651487183.385),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedb98d0&gt; {id: 0XrfMd09dq:127:0,clientId: user128,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:24 +0000 (1651487184.625),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed3b410&gt; {id: 0XrfMd09dq:131:0,clientId: user132,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:25 +0000 (1651487185.770),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee88eee0&gt; {id: 0XrfMd09dq:63:0,clientId: user64,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:06 +0000 (1651487166.139),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed478f0&gt; {id: 0XrfMd09dq:140:0,clientId: user141,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:28 +0000 (1651487188.574),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eede3310&gt; {id: 0XrfMd09dq:136:0,clientId: user137,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:27 +0000 (1651487187.423),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef18d860&gt; {id: 0XrfMd09dq:68:0,clientId: user69,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:07 +0000 (1651487167.791),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed73b60&gt; {id: 0XrfMd09dq:145:0,clientId: user146,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:29 +0000 (1651487189.799),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed678b0&gt; {id: 0XrfMd09dq:149:0,clientId: user150,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:30 +0000 (1651487190.950),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee865d30&gt; {id: 0XrfMd09dq:72:0,clientId: user73,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:08 +0000 (1651487168.942),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee816960&gt; {id: 0XrfMd09dq:77:0,clientId: user78,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:10 +0000 (1651487170.169),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef1e1290&gt; {id: 0XrfMd09dq:81:0,clientId: user82,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:11 +0000 (1651487171.359),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee87f740&gt; {id: 0XrfMd09dq:86:0,clientId: user87,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:13 +0000 (1651487173.009),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee8dbb50&gt; {id: 0XrfMd09dq:90:0,clientId: user91,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:14 +0000 (1651487174.159),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee873430&gt; {id: 0XrfMd09dq:95:0,clientId: user96,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:15 +0000 (1651487175.418),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed12010&gt; {id: 0XrfMd09dq:9:0,clientId: user10,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:50 +0000 (1651487150.576),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed563c0&gt; {id: 0XrfMd09dq:14:0,clientId: user15,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:52 +0000 (1651487152.227),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed7a190&gt; {id: 0XrfMd09dq:23:0,clientId: user24,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:54 +0000 (1651487154.612),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedfac60&gt; {id: 0XrfMd09dq:0:0,clientId: user1,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:48 +0000 (1651487148.192),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed208c0&gt; {id: 0XrfMd09dq:32:0,clientId: user33,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:57 +0000 (1651487157.415),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed15a20&gt; {id: 0XrfMd09dq:28:0,clientId: user29,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:56 +0000 (1651487156.264),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed23220&gt; {id: 0XrfMd09dq:102:0,clientId: user103,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:17 +0000 (1651487177.616),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed4c720&gt; {id: 0XrfMd09dq:41:0,clientId: user42,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:59 +0000 (1651487159.793),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eede3270&gt; {id: 0XrfMd09dq:37:0,clientId: user38,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:58 +0000 (1651487158.643),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedfaf50&gt; {id: 0XrfMd09dq:107:0,clientId: user108,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:18 +0000 (1651487178.842),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed3df30&gt; {id: 0XrfMd09dq:111:0,clientId: user112,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:20 +0000 (1651487180.004),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eede01f0&gt; {id: 0XrfMd09dq:50:0,clientId: user51,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:02 +0000 (1651487162.596),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed972f0&gt; {id: 0XrfMd09dq:116:0,clientId: user117,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:21 +0000 (1651487181.660),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed2f350&gt; {id: 0XrfMd09dq:120:0,clientId: user121,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:22 +0000 (1651487182.811),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef192280&gt; {id: 0XrfMd09dq:59:0,clientId: user60,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:04 +0000 (1651487164.983),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed38c40&gt; {id: 0XrfMd09dq:125:0,clientId: user126,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:24 +0000 (1651487184.038),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed7a4b0&gt; {id: 0XrfMd09dq:129:0,clientId: user130,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:25 +0000 (1651487185.191),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef12cfd0&gt; {id: 0XrfMd09dq:55:0,clientId: user56,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:03 +0000 (1651487163.831),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed4f240&gt; {id: 0XrfMd09dq:134:0,clientId: user135,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:26 +0000 (1651487186.842),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee846dd0&gt; {id: 0XrfMd09dq:64:0,clientId: user65,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:06 +0000 (1651487166.639),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed2d1c0&gt; {id: 0XrfMd09dq:46:0,clientId: user47,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:01 +0000 (1651487161.445),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed19140&gt; {id: 0XrfMd09dq:143:0,clientId: user144,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:29 +0000 (1651487189.224),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef1bf3e0&gt; {id: 0XrfMd09dq:73:0,clientId: user74,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:09 +0000 (1651487169.018),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedabaa0&gt; {id: 0XrfMd09dq:148:0,clientId: user149,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:30 +0000 (1651487190.875),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee84d2d0&gt; {id: 0XrfMd09dq:78:0,clientId: user79,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:10 +0000 (1651487170.707),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed1e120&gt; {id: 0XrfMd09dq:1:0,clientId: user2,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:48 +0000 (1651487148.268),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef16ca60&gt; {id: 0XrfMd09dq:82:0,clientId: user83,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:11 +0000 (1651487171.858),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee871100&gt; {id: 0XrfMd09dq:87:0,clientId: user88,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:13 +0000 (1651487173.085),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee8d20a0&gt; {id: 0XrfMd09dq:91:0,clientId: user92,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:14 +0000 (1651487174.236),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef172190&gt; {id: 0XrfMd09dq:96:0,clientId: user97,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:15 +0000 (1651487175.886),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eeda71f0&gt; {id: 0XrfMd09dq:10:0,clientId: user11,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:51 +0000 (1651487151.076),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed29450&gt; {id: 0XrfMd09dq:19:0,clientId: user20,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:53 +0000 (1651487153.459),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed77d40&gt; {id: 0XrfMd09dq:15:0,clientId: user16,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:52 +0000 (1651487152.302),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed30d30&gt; {id: 0XrfMd09dq:24:0,clientId: user25,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:55 +0000 (1651487155.112),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed15a70&gt; {id: 0XrfMd09dq:2:0,clientId: user3,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:48 +0000 (1651487148.768),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed65110&gt; {id: 0XrfMd09dq:33:0,clientId: user34,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:57 +0000 (1651487157.491),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed863c0&gt; {id: 0XrfMd09dq:100:0,clientId: user101,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:17 +0000 (1651487177.041),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed9d370&gt; {id: 0XrfMd09dq:42:0,clientId: user43,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:00 +0000 (1651487160.294),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee5f9d30&gt; {id: 0XrfMd09dq:105:0,clientId: user106,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:18 +0000 (1651487178.265),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedf5510&gt; {id: 0XrfMd09dq:109:0,clientId: user110,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:19 +0000 (1651487179.428),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed66bb0&gt; {id: 0XrfMd09dq:38:0,clientId: user39,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:25:59 +0000 (1651487159.142),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed5e640&gt; {id: 0XrfMd09dq:51:0,clientId: user52,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:02 +0000 (1651487162.672),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed0fcb0&gt; {id: 0XrfMd09dq:47:0,clientId: user48,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:01 +0000 (1651487161.521),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef4818f0&gt; {id: 0XrfMd09dq:114:0,clientId: user115,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:21 +0000 (1651487181.080),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef422eb0&gt; {id: 0XrfMd09dq:123:0,clientId: user124,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:23 +0000 (1651487183.461),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee877c50&gt; {id: 0XrfMd09dq:60:0,clientId: user61,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:05 +0000 (1651487165.485),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef156ee0&gt; {id: 0XrfMd09dq:56:0,clientId: user57,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:04 +0000 (1651487164.332),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eedac7b0&gt; {id: 0XrfMd09dq:128:0,clientId: user129,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:25 +0000 (1651487185.115),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef420e60&gt; {id: 0XrfMd09dq:132:0,clientId: user133,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:26 +0000 (1651487186.266),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ee8a43e0&gt; {id: 0XrfMd09dq:69:0,clientId: user70,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:07 +0000 (1651487167.866),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef11d220&gt; {id: 0XrfMd09dq:65:0,clientId: user66,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:06 +0000 (1651487166.715),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed2b0f0&gt; {id: 0XrfMd09dq:137:0,clientId: user138,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:27 +0000 (1651487187.498),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed20f10&gt; {id: 0XrfMd09dq:141:0,clientId: user142,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:28 +0000 (1651487188.649),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80eed1e910&gt; {id: 0XrfMd09dq:146:0,clientId: user147,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:30 +0000 (1651487190.299),encoding: (null),data: (null),action: Present,syncSessionId: 1}, &lt;ARTPresenceMessage: 0x7f80ef1b1af0&gt; {id: 0XrfMd09dq:74:0,clientId: user75,connectionId: 0XrfMd09dq,timestamp: 2022-05-02 10:26:09 +0000 (1651487169.517),encoding: (null),data: (null),action: Present,syncSessionId: 1}]
 (/Users/runner/work/ably-cocoa/ably-cocoa/Spec/Tests/RealtimeClientPresenceTests.swift#CharacterRangeLen=0&amp;EndingLineNumber=3466&amp;StartingLineNumber=3466)">
            </failure>
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__112__Presence__get__Query__set_of_params___should_return_members_filtered_by_clientId()" time="0.47808897495269775">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__113__Presence__get__Query__set_of_params___should_return_members_filtered_by_connectionId()" time="29.61752700805664">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__114__Presence__history__should_support_all_the_same_params_as_Rest()" time="0.6974719762802124">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__115__Presence__history__should_return_a_PaginatedResult_page()" time="43.6710000038147">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__117__Presence__enterClient__should_be_present_all_the_registered_members_on_a_presence_channel()" time="0.9384980201721191">
        </testcase>
        <testcase classname="RealtimeClientPresenceTests" name="test__118__Presence__presence_message_attributes__if_the_presence_message_does_not_contain_an_id__it_should_be_set_to_protocolMsgId_index()" time="0.2876429557800293">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__001__RealtimeClient__All_WebSocket_connections_should_include_the_current_API_version()" time="0.3632889986038208">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__002__RealtimeClient__should_have_access_to_the_underlying_Connection_object()" time="0.0009529590606689453">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__003__RealtimeClient__should_provide_access_to_the_underlying_Channels_object()" time="0.0009340047836303711">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__004__RealtimeClient__should_use_the_configured_timeouts_specified()" time="6.59679102897644">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__006__RealtimeClient__should_accept_acks_with_different_order()" time="0.6037850379943848">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__007__RealtimeClient__transport_should_guarantee_the_incoming_message_order()" time="0.3060929775238037">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__008__RealtimeClient__subscriber_should_receive_messages_in_the_same_order_in_which_they_have_been_sent()" time="0.5292569398880005">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__009__RealtimeClient__should_dispatch_in_user_queue_when_removing_an_observer()" time="0.0010329484939575195">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__010__RealtimeClient__should_never_register_any_connection_listeners_for_internal_use_with_the_public_EventEmitter()" time="0.36269593238830566">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__011__RealtimeClient__should_never_register_any_message_and_channel_listeners_for_internal_use_with_the_public_EventEmitter()" time="0.7238640785217285">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__013__RealtimeClient__options__should_support_the_same_options_as_the_Rest_client()" time="0.2925790548324585">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__014__RealtimeClient__options__should_echoMessages_option_be_true_by_default()" time="0.0005090236663818359">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__015__RealtimeClient__options__should_autoConnect_option_be_true_by_default()" time="0.0005789995193481445">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__016__RealtimeClient__options__should_attempt_to_recover_the_connection_state_if_recover_string_is_assigned()" time="0.584941029548645">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__017__RealtimeClient__options__should_modify_the_realtime_endpoint_host_if_realtimeHost_is_assigned()" time="0.012037992477416992">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__018__RealtimeClient__options__should_modify_both_the_REST_and_realtime_endpoint_if_environment_string_is_assigned()" time="0.0007690191268920898">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__019__RealtimeClient__options__url_should_contains_transport_params()" time="0.00280606746673584">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__020__RealtimeClient__Auth_object__should_provide_access_to_the_Auth_object()" time="0.0024679899215698242">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__021__RealtimeClient__Auth_object__clientId_may_be_populated_when_the_connection_is_established()" time="0.31027400493621826">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__022__RealtimeClient__stats__should_present_an_async_interface()" time="0.1159290075302124">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__024__RealtimeClient__time__should_present_an_async_interface()" time="0.11492502689361572">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__025__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__in_the_CONNECTED_state_and_auth_authorize_is_called__the_client_must_obtain_a_new_token__send_an_AUTH_ProtocolMessage_with_an_auth_attribute()" time="0.7334740161895752">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__026__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_authentication_token_change_is_successful__then_the_client_should_receive_a_new_CONNECTED_ProtocolMessage()" time="0.5734120607376099">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__027__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__performs_an_upgrade_of_capabilities_without_any_loss_of_continuity_or_connectivity_during_the_upgrade_process()" time="0.7353479862213135">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__028__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_capabilities_are_downgraded__client_should_receive_an_ERROR_ProtocolMessage_with_a_channel_property()" time="0.8486909866333008">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__029__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_authentication_token_change_fails__client_should_receive_an_ERROR_ProtocolMessage_triggering_the_connection_to_transition_to_the_FAILED_state()" time="0.4556959867477417">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__030__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_an_error_if_the_request_fails()" time="0.3899359703063965">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__031__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_be_indicated_as_completed_with_the_new_token_or_error_only_once_realtime_has_responded_to_the_AUTH_with_either_a_CONNECTED_or_ERROR_respectively()" time="0.564471960067749">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__032__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_connection_is_CONNECTING__all_current_connection_attempts_should_be_halted__and_after_obtaining_a_new_token_the_library_should_immediately_initiate_a_connection_attempt_using_the_new_token()" time="0.6864310503005981">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__033__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_the_new_token_once_the_connection_has_moved_to_the_CONNECTED_state()" time="0.49146199226379395">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__034__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_an_error_if_the_connection_moves_to_the_FAILED_state()" time="0.4070509672164917">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__035__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__authorize_call_should_complete_with_an_error_if_the_connection_moves_to_the_SUSPENDED_state()" time="0.4049649238586426">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__037__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_SUSPENDED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token()" time="0.7981129884719849">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__038__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_CLOSED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token()" time="0.8680130243301392">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__039__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_DISCONNECTED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token()" time="1.1047230958938599">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__040__RealtimeClient__Auth_authorize_should_upgrade_the_connection_with_current_token__when_the_connection_is_in_the_FAILED_state_when_auth_authorize_is_called__after_obtaining_a_token_the_library_should_move_to_the_CONNECTING_state_and_initiate_a_connection_attempt_using_the_new_token()" time="0.8110489845275879">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__041__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_the_publish_and_indicate_an_error()" time="0.3048110008239746">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__042__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__enter_()" time="0.2953730821609497">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__043__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__leave_()" time="0.2921940088272095">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__044__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__update_()" time="0.3034989833831787">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__045__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__updateClient_()" time="0.3052119016647339">
        </testcase>
        <testcase classname="RealtimeClientTests" name="test__046__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_also_presence_messages__leaveClient_()" time="0.2809920310974121">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__001__publish__should_not_fail_sending_a_message_with_no_clientId_in_the_client_options_and_credentials_that_can_assume_any_clientId()" time="0.29604005813598633">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__002__publish__should_provide_an_optional_argument_that_allows_the_clientId_value_to_be_specified()" time="0.0015419721603393555">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__003__publish__should_provide_an_optional_argument_that_allows_the_extras_value_to_be_specified()" time="0.20769190788269043">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__004__publish__should_include_attributes_supplied_by_the_caller_in_the_encoded_message()" time="0.2691570520401001">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__005__publish__with_name_and_data_arguments__publishes_the_message_and_invokes_callback_with_success()" time="0.1945270299911499">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__006__publish__with_name_only__publishes_the_message_and_invokes_callback_with_success()" time="0.20378708839416504">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__007__publish__with_data_only__publishes_the_message_and_invokes_callback_with_success()" time="0.4031839370727539">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__008__publish__with_neither_name_nor_data__publishes_the_message_and_invokes_callback_with_success()" time="0.1917710304260254">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__009__publish__with_a_Message_object__publishes_the_message_and_invokes_callback_with_success()" time="0.19304609298706055">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__010__publish__with_an_array_of_Message_objects__publishes_the_messages_in_a_single_request_and_invokes_callback_with_success()" time="0.22406792640686035">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__011__publish__Unidentified_clients_using_Basic_Auth__should_publish_message_with_the_provided_clientId()" time="0.4229320287704468">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__012__publish__ClientOptions_clientId__should_include_the_clientId_as_a_querystring_parameter_in_realtime_connection_requests()" time="0.3887690305709839">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__013__publish__ClientOptions_clientId__should_include_an_X_Ably_ClientId_header_with_value_set_to_the_clientId_as_Base64_encoded_string_in_REST_connection_requests()" time="0.20068800449371338">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__014__publish__Message_clientId__publishing_with_no_clientId_when_the_clientId_is_set_to_some_value_in_the_client_options_should_result_in_a_message_received_with_the_clientId_property_set_to_that_value()" time="0.46962201595306396">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__015__publish__Message_clientId__publishing_with_a_clientId_set_to_the_same_value_as_the_clientId_in_the_client_options_should_result_in_a_message_received_with_the_clientId_property_set_to_that_value()" time="0.4726419448852539">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__016__publish__Message_clientId__publishing_with_a_clientId_set_to_a_value_from_an_unidentified_client_should_result_in_a_message_received_with_the_clientId_property_set_to_that_value()" time="0.8680850267410278">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__017__publish__Message_clientId__publishing_with_a_clientId_set_to_a_different_value_from_the_clientId_in_the_client_options_should_result_in_a_message_being_rejected_by_the_server()" time="0.36259400844573975">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__018__publish__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__the_client_library_should_reject_the_publish_and_indicate_an_error()" time="0.02678203582763672">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__019__publish__If_the_total_size_of_message_s__exceeds_the_maxMessageSize__also_when_using_publish_data_clientId_extras()" time="0.00886392593383789">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__020__publish__idempotent_publishing__idempotentRestPublishing_option()" time="0.0011459589004516602">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__021__publish__idempotent_publishing__should_not_generate_for_message_with_a_non_empty_id()" time="0.0034639835357666016">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__022__publish__idempotent_publishing__should_generate_for_internal_message_that_is_created_in_publish_name_data___method()" time="0.0018149614334106445">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__023__publish__idempotent_publishing__should_not_generate_for_multiple_messages_with_a_non_empty_id()" time="0.0016349554061889648">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__024__publish__idempotent_publishing__should_not_generate_when_idempotentRestPublishing_flag_is_off()" time="0.001582026481628418">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__025__publish__idempotent_publishing__should_have_only_one_published_message()" time="0.5517789125442505">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__026__publish__idempotent_publishing__should_publish_a_message_with_implicit_Id_only_once()" time="0.43665897846221924">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__027__publish__idempotent_publishing__random_idempotent_publish_id__should_generate_for_one_message_with_empty_id()" time="0.002377033233642578">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__028__publish__idempotent_publishing__random_idempotent_publish_id__should_generate_for_multiple_messages_with_empty_id()" time="0.0018520355224609375">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__029__history__should_return_a_PaginatedResult_page_containing_the_first_page_of_messages()" time="0.10741293430328369">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__030__history__query_arguments__start_and_end_should_filter_messages_between_those_two_times()" time="0.8219900131225586">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__031__history__query_arguments__start_must_be_equal_to_or_less_than_end_and_is_unaffected_by_the_request_direction()" time="0.0017409324645996094">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__032__history__query_arguments__direction_backwards_or_forwards()" time="0.18983995914459229">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__033__history__query_arguments__limit_items_result()" time="0.19801294803619385">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__034__history__query_arguments__limit_supports_up_to_1000_items()" time="0.001679062843322754">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__036__message_encoding__payloads_should_be_binary__strings__or_objects_capable_of_JSON_representation()" time="0.6525949239730835">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__037__message_encoding__encoding_attribute_should_represent_the_encoding_s__applied_in_right_to_left()" time="0.36363494396209717">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__038__message_encoding__json__binary_payload_should_be_encoded_as_Base64_and_represented_as_a_JSON_string()" time="0.10668301582336426">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__039__message_encoding__json__string_payload_should_be_represented_as_a_JSON_string()" time="0.10821902751922607">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__040__message_encoding__json__messages_received_should_be_decoded_based_on_the_encoding_field()" time="0.805569052696228">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__041__message_encoding__json__json_payload_should_be_stringified_either__as_a_JSON_Array()" time="0.14325189590454102">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__042__message_encoding__json__json_payload_should_be_stringified_either__as_a_JSON_Object()" time="0.13129401206970215">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__043__message_payload_encryption__should_support_AES_encryption__128_CBC_mode()" time="0.34999704360961914">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__044__message_payload_encryption__should_support_AES_encryption__256_CBC_mode()" time="0.42179691791534424">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__045__message_decoding__should_deliver_with_a_binary_payload_when_the_payload_was_successfully_decoded_but_it_could_not_be_decrypted()" time="0.22801005840301514">
        </testcase>
        <testcase classname="RestClientChannelTests" name="test__046__message_decoding__should_deliver_with_encoding_attribute_set_indicating_the_residual_encoding_and_error_should_be_emitted()" time="0.1952829360961914">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__001__RestClient__channels__should_return_collection_of_channels()" time="0.0006239414215087891">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__002__RestClient__channels__should_be_enumerable()" time="0.0010079145431518555">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__003__RestClient__channels__get__should_return_a_channel()" time="0.0007890462875366211">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__004__RestClient__channels__get__should_return_a_channel_with_the_provided_options()" time="0.0007849931716918945">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__005__RestClient__channels__get__should_not_replace_the_options_on_an_existing_channel_when_none_are_provided()" time="0.0007170438766479492">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__006__RestClient__channels__get__should_replace_the_options_on_an_existing_channel_when_new_ones_are_provided()" time="0.0008159875869750977">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__007__RestClient__channels__channelExists__should_check_if_a_channel_exists()" time="0.0007169246673583984">
        </testcase>
        <testcase classname="RestClientChannelsTests" name="test__008__RestClient__channels__releaseChannel__should_release_a_channel()" time="0.0008800029754638672">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__001__Presence__presence_messages_retrieved_are_decoded_in_the_same_way_that_messages_are_decoded()" time="0.8747990131378174">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__003__Presence__get__limit_should_support_up_to_1000_items()" time="0.0009750127792358398">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__004__Presence__get__clientId_should_filter_members_by_the_provided_clientId()" time="0.5667159557342529">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__005__Presence__get__connectionId_should_filter_members_by_the_provided_connectionId()" time="3.1937819719314575">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__006__Presence__history__should_return_a_PaginatedResult_page_containing_the_first_page_of_members()" time="43.37774693965912">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__008__Presence__history__connectionId_should_filter_members_by_the_provided_connectionId()" time="3.189368963241577">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__009__Presence__history__query_argument__limit_supports_up_to_1000_members()" time="0.7640639543533325">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__010__Presence__history__query_argument__start_and_end_should_filter_members_between_those_two_times()" time="13.322219014167786">
        </testcase>
        <testcase classname="RestClientPresenceTests" name="test__011__Presence__history__query_argument__start_must_be_equal_to_or_less_than_end_and_is_unaffected_by_the_request_direction()" time="0.0009860992431640625">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__002__RestClient__stats__result__should_match_hour_level_inbound_and_outbound_fixture_data__forwards_()" time="2.019657015800476">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__003__RestClient__stats__result__should_match_day_level_inbound_and_outbound_fixture_data__forwards_()" time="2.0291860103607178">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__006__RestClient__stats__result__should_contain_only_one_item_when_limit_is_1__forwards()" time="2.115000009536743">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__007__RestClient__stats__result__should_be_paginated_according_to_the_limit__backwards()" time="2.516213059425354">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__009__RestClient__stats__query__start__should_return_an_error_when_later_than_end()" time="0.0008339881896972656">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__010__RestClient__stats__query__direction__should_be_backwards_by_default()" time="0.0005269050598144531">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__011__RestClient__stats__query__limit__should_have_a_default_value_of_100()" time="0.00044405460357666016">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__012__RestClient__stats__query__limit__should_return_an_error_when_greater_than_1000()" time="0.0006389617919921875">
        </testcase>
        <testcase classname="RestClientStatsTests" name="test__013__RestClient__stats__query__unit__should_default_to_minute()" time="0.0006210803985595703">
        </testcase>
        <testcase classname="RestClientTests" name="test__001__RestClient__All_REST_requests_should_include_the_current_API_version()" time="0.282850980758667">
        </testcase>
        <testcase classname="RestClientTests" name="test__002__RestClient__should_provide_access_to_the_AuthOptions_object_passed_in_ClientOptions()" time="0.0008050203323364258">
        </testcase>
        <testcase classname="RestClientTests" name="test__003__RestClient__REST_endpoint_host_should_be_configurable_in_the_Client_constructor_with_the_option_restHost()" time="0.00936901569366455">
        </testcase>
        <testcase classname="RestClientTests" name="test__004__RestClient__should_send_requests_over_http_and_https()" time="0.5166040658950806">
        </testcase>
        <testcase classname="RestClientTests" name="test__005__RestClient__should_use_Auth_to_manage_authentication()" time="0.10049402713775635">
        </testcase>
        <testcase classname="RestClientTests" name="test__006__RestClient__should_request_another_token_after_current_one_is_no_longer_valid()" time="1.7232619524002075">
        </testcase>
        <testcase classname="RestClientTests" name="test__007__RestClient__should_result_in_an_error_when_user_does_not_have_sufficient_permissions()" time="0.20994091033935547">
        </testcase>
        <testcase classname="RestClientTests" name="test__008__RestClient__should_use_MsgPack_binary_protocol()" time="0.8158880472183228">
        </testcase>
        <testcase classname="RestClientTests" name="test__009__RestClient__should_use_JSON_text_protocol()" time="0.6455069780349731">
        </testcase>
        <testcase classname="RestClientTests" name="test__010__RestClient__X_Ably_Version_must_be_included_in_all_REST_requests()" time="0.287308931350708">
        </testcase>
        <testcase classname="RestClientTests" name="test__011__RestClient__The_Agent_library_identifier_is_composed_of_a_series_of_key__value__entries_joined_by_spaces()" time="0.2815680503845215">
        </testcase>
        <testcase classname="RestClientTests" name="test__012__RestClient__should_indicate_an_error_if_there_is_no_way_to_renew_the_token()" time="0.30177295207977295">
        </testcase>
        <testcase classname="RestClientTests" name="test__013__RestClient__background_behaviour()" time="0.7508260011672974">
        </testcase>
        <testcase classname="RestClientTests" name="test__014__RestClient__client_should_handle_error_messages_in_plaintext_and_HTML_format()" time="0.1227959394454956">
        </testcase>
        <testcase classname="RestClientTests" name="test__015__RestClient__initializer__should_accept_an_API_key()" time="0.0015510320663452148">
        </testcase>
        <testcase classname="RestClientTests" name="test__016__RestClient__initializer__should_throw_when_provided_an_invalid_key()" time="0.0009549856185913086">
        </testcase>
        <testcase classname="RestClientTests" name="test__017__RestClient__initializer__should_result_in_error_status_when_provided_a_bad_key()" time="0.06824898719787598">
        </testcase>
        <testcase classname="RestClientTests" name="test__018__RestClient__initializer__should_accept_a_token()" time="0.10823297500610352">
        </testcase>
        <testcase classname="RestClientTests" name="test__019__RestClient__initializer__should_accept_an_options_object()" time="0.0008970499038696289">
        </testcase>
        <testcase classname="RestClientTests" name="test__020__RestClient__initializer__should_accept_an_options_object_with_token_authentication()" time="0.11761593818664551">
        </testcase>
        <testcase classname="RestClientTests" name="test__021__RestClient__initializer__should_result_in_error_status_when_provided_a_bad_token()" time="0.11214792728424072">
        </testcase>
        <testcase classname="RestClientTests" name="test__022__RestClient__logging__should_output_to_the_system-log_and_the_log_level_should_be_Warn()" time="0.0017009973526000977">
        </testcase>
        <testcase classname="RestClientTests" name="test__023__RestClient__logging__should_have_a_mutable_log_level()" time="0.0008209943771362305">
        </testcase>
        <testcase classname="RestClientTests" name="test__024__RestClient__logging__should_accept_a_custom_logger()" time="0.002460956573486328">
        </testcase>
        <testcase classname="RestClientTests" name="test__025__RestClient__endpoint__should_accept_a_custom_host_and_send_requests_to_the_specified_host()" time="0.011487960815429688">
        </testcase>
        <testcase classname="RestClientTests" name="test__026__RestClient__endpoint__should_ignore_an_environment_when_restHost_is_customized()" time="0.011602044105529785">
        </testcase>
        <testcase classname="RestClientTests" name="test__027__RestClient__endpoint__should_accept_an_environment_when_restHost_is_left_unchanged()" time="0.0038579702377319336">
        </testcase>
        <testcase classname="RestClientTests" name="test__028__RestClient__endpoint__should_default_to_https___rest_ably_io()" time="0.011389970779418945">
        </testcase>
        <testcase classname="RestClientTests" name="test__029__RestClient__endpoint__should_connect_over_plain_http____when_tls_is_off()" time="0.12315893173217773">
        </testcase>
        <testcase classname="RestClientTests" name="test__030__RestClient__endpoint__should_not_prepend_the_environment_if_environment_is_configured_as__production_()" time="0.0006530284881591797">
        </testcase>
        <testcase classname="RestClientTests" name="test__031__RestClient__should_use_the_the_connection_and_request_timeouts_specified__timeout_for_any_single_HTTP_request_and_response()" time="1.0107359886169434">
        </testcase>
        <testcase classname="RestClientTests" name="test__032__RestClient__should_use_the_the_connection_and_request_timeouts_specified__max_number_of_fallback_hosts()" time="0.0017330646514892578">
        </testcase>
        <testcase classname="RestClientTests" name="test__033__RestClient__should_use_the_the_connection_and_request_timeouts_specified__max_elapsed_time_in_which_fallback_host_retries_for_HTTP_requests_will_be_attempted()" time="0.4275779724121094">
        </testcase>
        <testcase classname="RestClientTests" name="test__034__RestClient__time__should_return_server_time()" time="0.10213696956634521">
        </testcase>
        <testcase classname="RestClientTests" name="test__035__RestClient__Authentication__should_support_basic_authentication_when_an_API_key_is_provided_with_the_key_option()" time="0.2711230516433716">
        </testcase>
        <testcase classname="RestClientTests" name="test__036__RestClient__Authentication__should_error_when_expired_token_and_no_means_to_renew()" time="3.2800310850143433">
        </testcase>
        <testcase classname="RestClientTests" name="test__037__RestClient__Authentication__should_renew_the_token_when_it_has_expired()" time="3.636207938194275">
        </testcase>
        <testcase classname="RestClientTests" name="test__038__RestClient__Authentication__basic_authentication_flag__should_be_true_when_initialized_with_a_key()" time="0.0006719827651977539">
        </testcase>
        <testcase classname="RestClientTests" name="test__039__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__useTokenAuth_is_set()" time="0.0006210803985595703">
        </testcase>
        <testcase classname="RestClientTests" name="test__040__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__authUrl_is_set()" time="0.0018759965896606445">
        </testcase>
        <testcase classname="RestClientTests" name="test__041__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__authCallback_is_set()" time="0.000594019889831543">
        </testcase>
        <testcase classname="RestClientTests" name="test__042__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__tokenDetails_is_set()" time="0.000580906867980957">
        </testcase>
        <testcase classname="RestClientTests" name="test__043__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__token_is_set()" time="0.0020869970321655273">
        </testcase>
        <testcase classname="RestClientTests" name="test__044__RestClient__Authentication__basic_authentication_flag__should_be_false_when_options__key_is_set()" time="0.000576019287109375">
        </testcase>
        <testcase classname="RestClientTests" name="test__045__RestClient__Host_Fallback__failing_HTTP_requests_with_custom_endpoint_should_result_in_an_error_immediately()" time="0.0015829801559448242">
        </testcase>
        <testcase classname="RestClientTests" name="test__046__RestClient__Host_Fallback__applies_when_ClientOptions_fallbackHostsUseDefault_is_true()" time="0.0015900135040283203">
        </testcase>
        <testcase classname="RestClientTests" name="test__047__RestClient__Host_Fallback__won_t_apply_fallback_hosts_if_ClientOptions_fallbackHosts_array_is_empty()" time="0.0012439489364624023">
        </testcase>
        <testcase classname="RestClientTests" name="test__048__RestClient__Host_Fallback__won_t_apply_custom_fallback_hosts_if_ClientOptions_fallbackHosts_and_ClientOptions_environment_are_not_set__use_defaults_instead()" time="0.002664923667907715">
        </testcase>
        <testcase classname="RestClientTests" name="test__049__RestClient__Host_Fallback__every_new_HTTP_request_is_first_attempted_to_the_default_primary_host_rest_ably_io()" time="1.1049569845199585">
        </testcase>
        <testcase classname="RestClientTests" name="test__050__RestClient__Host_Fallback__should_not_use_an_alternative_host_when_the_client_receives_an_bad_request()" time="0.0013669729232788086">
        </testcase>
        <testcase classname="RestClientTests" name="test__051__RestClient__Host_Fallback__fallbackHostsUseDefault_option__allows_the_default_fallback_hosts_to_be_used_when__environment__is_not_production()" time="0.0011239051818847656">
        </testcase>
        <testcase classname="RestClientTests" name="test__052__RestClient__Host_Fallback__fallbackHostsUseDefault_option__allows_the_default_fallback_hosts_to_be_used_when_a_custom_Realtime_or_REST_host_endpoint_is_being_used()" time="0.0012240409851074219">
        </testcase>
        <testcase classname="RestClientTests" name="test__053__RestClient__Host_Fallback__fallbackHostsUseDefault_option__should_be_inactive_by_default()" time="0.00046694278717041016">
        </testcase>
        <testcase classname="RestClientTests" name="test__054__RestClient__Host_Fallback__fallbackHostsUseDefault_option__should_never_accept_to_configure__fallbackHost__and_set__fallbackHostsUseDefault__to__true_()" time="0.0007760524749755859">
        </testcase>
        <testcase classname="RestClientTests" name="test__055__RestClient__Host_Fallback__Fallback_behavior__should_be_applied_when_restHost__port_and_tlsPort_has_not_been_set_to_an_explicit_value()" time="0.0018219947814941406">
        </testcase>
        <testcase classname="RestClientTests" name="test__056__RestClient__Host_Fallback__Fallback_behavior__should_NOT_be_applied_when_ClientOptions_restHost_has_been_set()" time="0.0013079643249511719">
        </testcase>
        <testcase classname="RestClientTests" name="test__057__RestClient__Host_Fallback__Fallback_behavior__should_NOT_be_applied_when_ClientOptions_port_has_been_set()" time="0.0033909082412719727">
        </testcase>
        <testcase classname="RestClientTests" name="test__058__RestClient__Host_Fallback__Fallback_behavior__should_NOT_be_applied_when_ClientOptions_tlsPort_has_been_set()" time="0.0013049840927124023">
        </testcase>
        <testcase classname="RestClientTests" name="test__059__RestClient__Host_Fallback__Fallback_behavior__should_be_applied_when_ClientOptions_fallbackHosts_is_provided()" time="0.0016270875930786133">
        </testcase>
        <testcase classname="RestClientTests" name="test__060__RestClient__Host_Fallback__Fallback_behavior__should_be_applied_when_ClientOptions_fallbackHosts_is_not_provided_and_deprecated_fallbackHostsUseDefault_is_on()" time="0.0016169548034667969">
        </testcase>
        <testcase classname="RestClientTests" name="test__061__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_use_ClientOptions_fallbackHosts_when_list_is_provided()" time="0.0014950037002563477">
        </testcase>
        <testcase classname="RestClientTests" name="test__062__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_use_environment_fallback_hosts_when_ClientOptions_environment_is_set_to_a_value_other_than__production__and_ClientOptions_fallbackHosts_is_not_set()" time="0.0017249584197998047">
        </testcase>
        <testcase classname="RestClientTests" name="test__063__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_NOT_use_environment_fallback_hosts_when_ClientOptions_environment_is_set_to__production_()" time="0.0019129514694213867">
        </testcase>
        <testcase classname="RestClientTests" name="test__064__RestClient__Host_Fallback__fallback_hosts_list_and_priorities__should_use_default_fallback_hosts_when_both_ClientOptions_fallbackHosts_and_ClientOptions_environment_are_not_set()" time="0.0032160282135009766">
        </testcase>
        <testcase classname="RestClientTests" name="test__065__RestClient__Host_Fallback__retry_hosts_in_random_order__default_fallback_hosts_should_match__a_e__ably_realtime_com()" time="0.0008050203323364258">
        </testcase>
        <testcase classname="RestClientTests" name="test__066__RestClient__Host_Fallback__retry_hosts_in_random_order__environment_fallback_hosts_have_the_format__environment___a_e__fallback_ably_realtime_com()" time="0.0006879568099975586">
        </testcase>
        <testcase classname="RestClientTests" name="test__067__RestClient__Host_Fallback__retry_hosts_in_random_order__until_httpMaxRetryCount_has_been_reached()" time="0.0020949840545654297">
        </testcase>
        <testcase classname="RestClientTests" name="test__068__RestClient__Host_Fallback__retry_hosts_in_random_order__use_custom_fallback_hosts_if_set()" time="0.0020780563354492188">
        </testcase>
        <testcase classname="RestClientTests" name="test__069__RestClient__Host_Fallback__retry_hosts_in_random_order__until_all_fallback_hosts_have_been_tried()" time="0.003174901008605957">
        </testcase>
        <testcase classname="RestClientTests" name="test__070__RestClient__Host_Fallback__retry_hosts_in_random_order__until_httpMaxRetryCount_has_been_reached__if_custom_fallback_hosts_are_provided_in_ClientOptions_fallbackHosts__then_they_will_be_used_instead()" time="0.001993894577026367">
        </testcase>
        <testcase classname="RestClientTests" name="test__071__RestClient__Host_Fallback__retry_hosts_in_random_order__until_all_fallback_hosts_have_been_tried__if_custom_fallback_hosts_are_provided_in_ClientOptions_fallbackHosts__then_they_will_be_used_instead()" time="0.0030019283294677734">
        </testcase>
        <testcase classname="RestClientTests" name="test__072__RestClient__Host_Fallback__retry_hosts_in_random_order__all_fallback_requests_headers_should_contain__Host__header_with_fallback_host_address()" time="0.002145051956176758">
        </testcase>
        <testcase classname="RestClientTests" name="test__073__RestClient__Host_Fallback__retry_hosts_in_random_order__if_an_empty_array_of_fallback_hosts_is_provided__then_fallback_host_functionality_is_disabled()" time="0.0012630224227905273">
        </testcase>
        <testcase classname="RestClientTests" name="test__074__RestClient__Host_Fallback__should_use_an_alternative_host_when___hostUnreachable()" time="0.0014129877090454102">
        </testcase>
        <testcase classname="RestClientTests" name="test__075__RestClient__Host_Fallback__should_use_an_alternative_host_when___requestTimeout_timeout__0_1_()" time="0.11041295528411865">
        </testcase>
        <testcase classname="RestClientTests" name="test__076__RestClient__Host_Fallback__should_use_an_alternative_host_when___hostInternalError_code__501_()" time="0.0016679763793945312">
        </testcase>
        <testcase classname="RestClientTests" name="test__077__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host___hostUnreachable()" time="0.0019979476928710938">
        </testcase>
        <testcase classname="RestClientTests" name="test__078__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host___requestTimeout_timeout__0_1_()" time="0.11246001720428467">
        </testcase>
        <testcase classname="RestClientTests" name="test__079__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host___hostInternalError_code__501_()" time="0.0019479990005493164">
        </testcase>
        <testcase classname="RestClientTests" name="test__080__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_restore_default_primary_host_after_fallbackRetryTimeout_expired___hostUnreachable()" time="1.164841890335083">
        </testcase>
        <testcase classname="RestClientTests" name="test__081__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_restore_default_primary_host_after_fallbackRetryTimeout_expired___requestTimeout_timeout__0_1_()" time="1.2219659090042114">
        </testcase>
        <testcase classname="RestClientTests" name="test__082__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_restore_default_primary_host_after_fallbackRetryTimeout_expired___hostInternalError_code__501_()" time="1.1108930110931396">
        </testcase>
        <testcase classname="RestClientTests" name="test__083__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_use_another_fallback_host_if_previous_fallback_request_failed_and_store_it_as_default_if_current_fallback_request_succseeded___hostUnreachable()" time="1308.6690109968185">
            <failure message="Waited more than 20.0 seconds
 (/Users/runner/work/ably-cocoa/ably-cocoa/Spec/Tests/RestClientTests.swift#CharacterRangeLen=0&amp;EndingLineNumber=119&amp;StartingLineNumber=119)">
            </failure>
        </testcase>
        <testcase classname="RestClientTests" name="test__084__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_use_another_fallback_host_if_previous_fallback_request_failed_and_store_it_as_default_if_current_fallback_request_succseeded___requestTimeout_timeout__0_1_()" time="0.2094489336013794">
        </testcase>
        <testcase classname="RestClientTests" name="test__085__RestClient__Host_Fallback__should_store_successful_fallback_host_as_default_host__should_use_another_fallback_host_if_previous_fallback_request_failed_and_store_it_as_default_if_current_fallback_request_succseeded___hostInternalError_code__501_()" time="0.0057430267333984375">
        </testcase>
        <testcase classname="RestClientTests" name="test__086__RestClient__request__method_signature_and_arguments__should_add_query_parameters()" time="0.0033190250396728516">
        </testcase>
        <testcase classname="RestClientTests" name="test__087__RestClient__request__method_signature_and_arguments__should_add_a_HTTP_body()" time="0.001970052719116211">
        </testcase>
        <testcase classname="RestClientTests" name="test__088__RestClient__request__method_signature_and_arguments__should_add_a_HTTP_header()" time="0.0011210441589355469">
        </testcase>
        <testcase classname="RestClientTests" name="test__089__RestClient__request__method_signature_and_arguments__should_error_if_method_is_invalid()" time="0.0006669759750366211">
        </testcase>
        <testcase classname="RestClientTests" name="test__090__RestClient__request__method_signature_and_arguments__should_error_if_path_is_invalid()" time="0.0007259845733642578">
        </testcase>
        <testcase classname="RestClientTests" name="test__091__RestClient__request__method_signature_and_arguments__should_error_if_body_is_not_a_Dictionary_or_an_Array()" time="0.0006480216979980469">
        </testcase>
        <testcase classname="RestClientTests" name="test__092__RestClient__request__method_signature_and_arguments__should_do_a_request_and_receive_a_valid_response()" time="0.6306179761886597">
        </testcase>
        <testcase classname="RestClientTests" name="test__093__RestClient__request__method_signature_and_arguments__should_handle_response_failures()" time="0.5847439765930176">
        </testcase>
        <testcase classname="RestClientTests" name="test__094__RestClient__if_in_the_course_of_a_REST_request_an_attempt_to_authenticate_using_authUrl_fails_due_to_a_timeout__the_request_should_result_in_an_error_with_code_40170__statusCode_401__and_a_suitable_error_message()" time="3.1261279582977295">
        </testcase>
        <testcase classname="RestClientTests" name="test__095__RestClient__request_IDs__should_add__request_id__query_parameter()" time="0.0017989873886108398">
        </testcase>
        <testcase classname="RestClientTests" name="test__096__RestClient__request_IDs__should_remain_the_same_if_a_request_is_retried_to_a_fallback_host()" time="0.00936901569366455">
        </testcase>
        <testcase classname="RestClientTests" name="test__097__RestClient__request_IDs__ErrorInfo_should_have__requestId__property()" time="0.0021489858627319336">
        </testcase>
        <testcase classname="RestPaginatedTests" name="test__001__RestPaginated__should_extract_links_from_the_response()" time="0.0007730722427368164">
        </testcase>
        <testcase classname="RestPaginatedTests" name="test__002__RestPaginated__should_create_next_first_last_request_from_extracted_link_path()" time="0.0005710124969482422">
        </testcase>
        <testcase classname="StatsTests" name="test__001__Stats__all__should_return_a_MessagesTypes_object()" time="0.000782012939453125">
        </testcase>
        <testcase classname="StatsTests" name="test__002__Stats__all__should_return_value_for_message_counts()" time="0.0006350278854370117">
        </testcase>
        <testcase classname="StatsTests" name="test__003__Stats__all__should_return_value_for_all_data_transferred()" time="0.000702977180480957">
        </testcase>
        <testcase classname="StatsTests" name="test__004__Stats__all__should_return_zero_for_empty_values()" time="0.0018630027770996094">
        </testcase>
        <testcase classname="StatsTests" name="test__005__Stats__persisted__should_return_a_MessagesTypes_object()" time="0.0005840063095092773">
        </testcase>
        <testcase classname="StatsTests" name="test__006__Stats__persisted__should_return_value_for_message_counts()" time="0.0005429983139038086">
        </testcase>
        <testcase classname="StatsTests" name="test__007__Stats__persisted__should_return_value_for_all_data_transferred()" time="0.0005439519882202148">
        </testcase>
        <testcase classname="StatsTests" name="test__008__Stats__persisted__should_return_zero_for_empty_values()" time="0.0005820989608764648">
        </testcase>
        <testcase classname="StatsTests" name="test__009__Stats__inbound__should_return_a_MessageTraffic_object()" time="0.0008679628372192383">
        </testcase>
        <testcase classname="StatsTests" name="test__010__Stats__inbound__should_return_value_for_realtime_message_counts()" time="0.0006070137023925781">
        </testcase>
        <testcase classname="StatsTests" name="test__011__Stats__inbound__should_return_value_for_all_presence_data()" time="0.0006049871444702148">
        </testcase>
        <testcase classname="StatsTests" name="test__012__Stats__outbound__should_return_a_MessageTraffic_object()" time="0.000661015510559082">
        </testcase>
        <testcase classname="StatsTests" name="test__013__Stats__outbound__should_return_value_for_realtime_message_counts()" time="0.0005840063095092773">
        </testcase>
        <testcase classname="StatsTests" name="test__014__Stats__outbound__should_return_value_for_all_presence_data()" time="0.000661015510559082">
        </testcase>
        <testcase classname="StatsTests" name="test__015__Stats__connections__should_return_a_ConnectionTypes_object()" time="0.00047409534454345703">
        </testcase>
        <testcase classname="StatsTests" name="test__016__Stats__connections__should_return_value_for_tls_opened_counts()" time="0.0005060434341430664">
        </testcase>
        <testcase classname="StatsTests" name="test__017__Stats__connections__should_return_value_for_all_peak_connections()" time="0.00042998790740966797">
        </testcase>
        <testcase classname="StatsTests" name="test__018__Stats__connections__should_return_zero_for_empty_values()" time="0.00045108795166015625">
        </testcase>
        <testcase classname="StatsTests" name="test__019__Stats__channels__should_return_a_ResourceCount_object()" time="0.0030170679092407227">
        </testcase>
        <testcase classname="StatsTests" name="test__020__Stats__channels__should_return_value_for_opened_counts()" time="0.0004690885543823242">
        </testcase>
        <testcase classname="StatsTests" name="test__021__Stats__channels__should_return_value_for_peak_channels()" time="0.0004750490188598633">
        </testcase>
        <testcase classname="StatsTests" name="test__022__Stats__channels__should_return_zero_for_empty_values()" time="0.00042998790740966797">
        </testcase>
        <testcase classname="StatsTests" name="test__023__Stats__apiRequests__should_return_a_RequestCount_object()" time="0.0015630722045898438">
        </testcase>
        <testcase classname="StatsTests" name="test__024__Stats__apiRequests__should_return_value_for_succeeded()" time="0.0005630254745483398">
        </testcase>
        <testcase classname="StatsTests" name="test__025__Stats__apiRequests__should_return_value_for_failed()" time="0.0005509853363037109">
        </testcase>
        <testcase classname="StatsTests" name="test__026__Stats__tokenRequests__should_return_a_RequestCount_object()" time="0.0006270408630371094">
        </testcase>
        <testcase classname="StatsTests" name="test__027__Stats__tokenRequests__should_return_value_for_succeeded()" time="0.0005800724029541016">
        </testcase>
        <testcase classname="StatsTests" name="test__028__Stats__tokenRequests__should_return_value_for_failed()" time="0.0005429983139038086">
        </testcase>
        <testcase classname="StatsTests" name="test__029__Stats__interval__should_return_a_Date_object_representing_the_start_of_the_interval()" time="0.0022950172424316406">
        </testcase>
        <testcase classname="StatsTests" name="test__030__Stats__push__should_return_a_ARTStatsPushCount_object()" time="0.0034710168838500977">
        </testcase>
        <testcase classname="StatsTests" name="test__031__Stats__push__should_return_value_for_messages_count()" time="0.00043201446533203125">
        </testcase>
        <testcase classname="StatsTests" name="test__032__Stats__push__should_return_value_for_invalid_notifications()" time="0.0005099773406982422">
        </testcase>
        <testcase classname="StatsTests" name="test__033__Stats__push__should_return_value_for_attempted_notifications()" time="0.00040900707244873047">
        </testcase>
        <testcase classname="StatsTests" name="test__034__Stats__push__should_return_value_for_successful_notifications()" time="0.0004239082336425781">
        </testcase>
        <testcase classname="StatsTests" name="test__035__Stats__push__should_return_value_for_failed_notifications()" time="0.00041294097900390625">
        </testcase>
        <testcase classname="StatsTests" name="test__036__Stats__push__should_return_value_for_directPublishes()" time="0.0004169940948486328">
        </testcase>
        <testcase classname="StatsTests" name="test__037__Stats__inProgress__should_return_a_Date_object_representing_the_last_sub_interval_included_in_this_statistic()" time="0.0022660493850708008">
        </testcase>
        <testcase classname="StatsTests" name="test__038__Stats__count__should_return_value_for_number_of_lower_level_stats()" time="0.00043201446533203125">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__001__Utilities__JSON_Encoder__should_decode_a_protocol_message_that_has_an_error_without_a_message()" time="0.0006530284881591797">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__002__Utilities__JSON_Encoder__should_encode_a_protocol_message_that_has_invalid_data()" time="0.0007660388946533203">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__003__Utilities__JSON_Encoder__should_decode_data_with_malformed_JSON()" time="0.002974987030029297">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__004__Utilities__JSON_Encoder__should_decode_data_with_malformed_MsgPack()" time="0.0006990432739257812">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__005__Utilities__JSON_Encoder__in_Realtime__should_handle_and_emit_the_invalid_data_error()" time="0.006683945655822754">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__006__Utilities__JSON_Encoder__in_Realtime__should_ignore_invalid_transport_message()" time="0.8226490020751953">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__007__Utilities__JSON_Encoder__in_Rest__should_handle_and_emit_the_invalid_data_error()" time="0.0017780065536499023">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__008__Utilities__JSON_Encoder__in_Rest__should_ignore_invalid_response_payload()" time="0.0026819705963134766">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__009__Utilities__EventEmitter__should_emit_events_to_all_relevant_listeners()" time="0.0008800029754638672">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__010__Utilities__EventEmitter__should_only_call_once_listeners_once_for_its_event()" time="0.0006989240646362305">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__011__Utilities__EventEmitter__calling_off_with_a_single_listener_argument__should_stop_receiving_events_when_calling_off_with_a_single_listener_argument()" time="0.0007989406585693359">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__013__Utilities__EventEmitter__calling_off_with_listener_and_event_arguments__should_still_receive_events_if_off_doesn_t_match_the_listener_s_criteria()" time="0.0005980730056762695">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__014__Utilities__EventEmitter__calling_off_with_listener_and_event_arguments__should_stop_receive_events_if_off_matches_the_listener_s_criteria()" time="0.001423954963684082">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__015__Utilities__EventEmitter__calling_off_with_no_arguments__should_remove_all_listeners()" time="0.0006109476089477539">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__016__Utilities__EventEmitter__calling_off_with_no_arguments__should_allow_listening_again()" time="0.0005769729614257812">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__017__Utilities__EventEmitter__calling_off_with_no_arguments__should_remove_all_timeouts()" time="0.16611599922180176">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__018__Utilities__EventEmitter__the_timed_method__should_not_call_onTimeout_if_the_deadline_isn_t_reached()" time="0.31675994396209717">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__019__Utilities__EventEmitter__the_timed_method__should_call_onTimeout_and_off_the_listener_if_the_deadline_is_reached()" time="0.3662400245666504">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__020__Utilities__EventEmitter__set_of_listeners__should_not_change_over_the_course_of_the_emit()" time="0.0007189512252807617">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__021__Utilities__Logger__should_have_a_history_of_logs()" time="0.5741649866104126">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__022__Utilities__maxMessageSize__calculates_maxMessageSize_of_a_Message_with_name_and_data()" time="0.0005059242248535156">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__023__Utilities__maxMessageSize__calculates_maxMessageSize_of_a_Message_with_name__data_and_extras()" time="0.000492095947265625">
        </testcase>
        <testcase classname="UtilitiesTests" name="test__024__Utilities__maxMessageSize__calculates_maxMessageSize_of_a_Message_with_name__data__clientId_and_extras()" time="0.002333998680114746">
        </testcase>
    </testsuite>
</testsuites>