diff --git a/connections/implementation/analytics/analytics_recorder_test.cc b/connections/implementation/analytics/analytics_recorder_test.cc index c431e862..5b46b4ea 100644 --- a/connections/implementation/analytics/analytics_recorder_test.cc +++ b/connections/implementation/analytics/analytics_recorder_test.cc @@ -151,10 +151,6 @@ class AnalyticsRecorderTest : public ::testing::Test { } void TearDown() override { MediumEnvironment::Instance().Stop(); } - - FakeClock& GetFakeClock() const { - return *MediumEnvironment::Instance().GetSimulatedClock().value(); - } }; // Test if session_was_logged_ is reset by checking if LogSession can take @@ -190,19 +186,19 @@ TEST_F(AnalyticsRecorderTest, SetFieldsCorrectlyForNestedAdvertisingCalls) { analytics_recorder.BuildAdvertisingMetadataParams(); advertising_metadata_params->operation_result_with_mediums = { operation_result}; - GetFakeClock().FastForward(absl::Milliseconds(50)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(50)); analytics_recorder.OnStartAdvertising(strategy, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStopAdvertising(); operation_result.set_medium(BLE); advertising_metadata_params->operation_result_with_mediums = { operation_result}; - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStartAdvertising(strategy, /*mediums=*/{BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -273,16 +269,16 @@ TEST_F(AnalyticsRecorderTest, SetFieldsCorrectlyForNestedDiscoveryCalls) { /*is_extended_advertisement_supported*/ true, /*connected_ap_frequency*/ 1, /*is_nfc_available=*/false, {operation_result, operation_result2}); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(strategy, /*mediums=*/{BLE, BLUETOOTH}, discovery_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStopDiscovery(); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnEndpointFound(BLUETOOTH); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnEndpointFound(BLE); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); auto discovery_metadata_params2 = analytics_recorder.BuildDiscoveryMetadataParams( @@ -291,7 +287,7 @@ TEST_F(AnalyticsRecorderTest, SetFieldsCorrectlyForNestedDiscoveryCalls) { {operation_result}); analytics_recorder.OnStartDiscovery(strategy, /*mediums=*/{BLUETOOTH}, discovery_metadata_params2.get()); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -307,14 +303,8 @@ TEST_F(AnalyticsRecorderTest, SetFieldsCorrectlyForNestedDiscoveryCalls) { duration_millis: 200 medium: BLE medium: BLUETOOTH - discovered_endpoint { - medium: BLUETOOTH - latency_millis: 500 - } - discovered_endpoint { - medium: BLE - latency_millis: 900 - } + discovered_endpoint { medium: BLUETOOTH latency_millis: 500 } + discovered_endpoint { medium: BLE latency_millis: 900 } discovery_metadata { supports_extended_ble_advertisements: true connected_ap_frequency: 1 @@ -364,38 +354,38 @@ TEST_F(AnalyticsRecorderTest, auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(strategy, mediums, advertising_metadata_params.get()); auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStartDiscovery(strategy, mediums, discovery_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnStopDiscovery(); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnStartAdvertising(strategy, mediums, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.OnStartDiscovery(strategy, mediums, discovery_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(800)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(800)); analytics_recorder.OnStopDiscovery(); - GetFakeClock().FastForward(absl::Milliseconds(900)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(900)); analytics_recorder.OnStartDiscovery(strategy, mediums, {}); - GetFakeClock().FastForward(absl::Milliseconds(1000)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1000)); analytics_recorder.OnStartAdvertising(strategy, mediums, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(1100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1100)); analytics_recorder.OnStopDiscovery(); - GetFakeClock().FastForward(absl::Milliseconds(1200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1200)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(1300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1300)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -503,35 +493,35 @@ TEST_F(AnalyticsRecorderTest, AdvertiserConnectionRequestsWorks) { analytics_recorder.BuildAdvertisingMetadataParams(); advertising_metadata_params->operation_result_with_mediums = { operation_result}; - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionRequestReceived(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnConnectionRequestReceived(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.OnRemoteEndpointRejected(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(800)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(800)); analytics_recorder.OnConnectionRequestReceived(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(900)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(900)); analytics_recorder.OnLocalEndpointRejected(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(1000)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1000)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(1100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1100)); analytics_recorder.OnConnectionRequestReceived(endpoint_id_3); - GetFakeClock().FastForward(absl::Milliseconds(1200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1200)); analytics_recorder.OnLocalEndpointRejected(endpoint_id_3); - GetFakeClock().FastForward(absl::Milliseconds(1300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1300)); analytics_recorder.OnRemoteEndpointRejected(endpoint_id_3); - GetFakeClock().FastForward(absl::Milliseconds(1400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1400)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -606,36 +596,36 @@ TEST_F(AnalyticsRecorderTest, DiscoveryConnectionRequestsWorks) { auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); discovery_metadata_params->operation_result_with_mediums = {operation_result}; - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, discovery_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionRequestSent(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnConnectionRequestSent(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.OnRemoteEndpointRejected(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(800)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(800)); analytics_recorder.OnConnectionRequestSent(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(900)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(900)); analytics_recorder.OnLocalEndpointRejected(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(1000)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1000)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(1100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1100)); analytics_recorder.OnConnectionRequestSent(endpoint_id_3); - GetFakeClock().FastForward(absl::Milliseconds(1200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1200)); analytics_recorder.OnLocalEndpointRejected(endpoint_id_3); - GetFakeClock().FastForward(absl::Milliseconds(1300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1300)); analytics_recorder.OnRemoteEndpointRejected(endpoint_id_3); - GetFakeClock().FastForward(absl::Milliseconds(1400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1400)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -712,26 +702,26 @@ TEST_F(AnalyticsRecorderTest, analytics_recorder.BuildAdvertisingMetadataParams(); advertising_metadata_params->operation_result_with_mediums = { operation_result}; - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); // Ignored by local. - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionRequestReceived(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); // Ignored by remote. analytics_recorder.OnConnectionRequestReceived(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); // Ignored by both. analytics_recorder.OnConnectionRequestReceived(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -801,27 +791,27 @@ TEST_F(AnalyticsRecorderTest, auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); discovery_metadata_params->operation_result_with_mediums = {operation_result}; - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, discovery_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); // Ignored by local. analytics_recorder.OnConnectionRequestSent(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); // Ignored by remote. analytics_recorder.OnConnectionRequestSent(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); // Ignored by both. analytics_recorder.OnConnectionRequestSent(endpoint_id_2); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -887,7 +877,7 @@ TEST_F(AnalyticsRecorderTest, SuccessfulIncomingConnectionAttempt) { analytics_recorder.BuildAdvertisingMetadataParams(); advertising_metadata_params->operation_result_with_mediums = { operation_result}; - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); @@ -896,13 +886,13 @@ TEST_F(AnalyticsRecorderTest, SuccessfulIncomingConnectionAttempt) { std::make_unique(); connections_attempt_metadata_params->operation_result_code = OperationResultCode::DETAIL_SUCCESS; - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnIncomingConnectionAttempt( INITIAL, BLUETOOTH, RESULT_SUCCESS, absl::Duration{}, /*connection_token=*/"", connections_attempt_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -982,17 +972,17 @@ TEST_F(AnalyticsRecorderTest, OperationResultCode::CONNECTIVITY_BT_CLIENT_SOCKET_CREATION_FAILURE); auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, discovery_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionRequestSent(endpoint_id); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnOutgoingConnectionAttempt( endpoint_id, INITIAL, BLUETOOTH, RESULT_ERROR, absl::Duration{}, /*connection_token=*/"", connections_attempt_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1063,21 +1053,21 @@ TEST_F(AnalyticsRecorderTest, auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionEstablished(endpoint_id, BLUETOOTH, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnConnectionClosed( endpoint_id, BLUETOOTH, UPGRADED, ConnectionsLog::EstablishedConnection::UNKNOWN_SAFE_DISCONNECTION_RESULT); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnConnectionEstablished(endpoint_id, WIFI_LAN, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1139,41 +1129,41 @@ TEST_F(AnalyticsRecorderTest, OutgoingPayloadUpgraded) { auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionEstablished(endpoint_id, BLUETOOTH, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnOutgoingPayloadStarted( {endpoint_id}, payload_id, connections::PayloadType::kFile, 50); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnPayloadChunkSent(endpoint_id, payload_id, 10); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnPayloadChunkSent(endpoint_id, payload_id, 10); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnConnectionClosed( endpoint_id, BLUETOOTH, UPGRADED, ConnectionsLog::EstablishedConnection::SAFE_DISCONNECTION); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.OnConnectionEstablished(endpoint_id, WIFI_LAN, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(800)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(800)); analytics_recorder.OnPayloadChunkSent(endpoint_id, payload_id, 10); - GetFakeClock().FastForward(absl::Milliseconds(900)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(900)); analytics_recorder.OnPayloadChunkSent(endpoint_id, payload_id, 10); - GetFakeClock().FastForward(absl::Milliseconds(1000)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1000)); analytics_recorder.OnPayloadChunkSent(endpoint_id, payload_id, 10); - GetFakeClock().FastForward(absl::Milliseconds(1100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1100)); analytics_recorder.OnOutgoingPayloadDone(endpoint_id, payload_id, SUCCESS, OperationResultCode::DETAIL_SUCCESS); - GetFakeClock().FastForward(absl::Milliseconds(1200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1200)); analytics_recorder.OnConnectionClosed( endpoint_id, WIFI_LAN, LOCAL_DISCONNECTION, ConnectionsLog::EstablishedConnection::SAFE_DISCONNECTION); - GetFakeClock().FastForward(absl::Milliseconds(1300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1300)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1260,31 +1250,31 @@ TEST_F(AnalyticsRecorderTest, UpgradeAttemptWorks) { auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnBandwidthUpgradeStarted(endpoint_id, BLE, WIFI_LAN, INCOMING, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnBandwidthUpgradeStarted( endpoint_id_1, BLUETOOTH, WIFI_LAN, INCOMING, connection_token); // Error to upgrade. - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnBandwidthUpgradeError( endpoint_id, WIFI_LAN_MEDIUM_ERROR, WIFI_LAN_SOCKET_CREATION, OperationResultCode::CONNECTIVITY_WIFI_LAN_INVALID_CREDENTIAL); // Success to upgrade. - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnBandwidthUpgradeSuccess(endpoint_id_1); // Upgrade is unfinished. - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnBandwidthUpgradeStarted( endpoint_id_2, BLUETOOTH, WIFI_LAN, INCOMING, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1362,26 +1352,26 @@ TEST_F(AnalyticsRecorderTest, StartListeningForIncomingConnectionsWorks) { FakeEventLogger event_logger(client_session_done_latch); AnalyticsRecorder analytics_recorder(&event_logger); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartedIncomingConnectionListening( connections::Strategy::kP2pStar); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnBandwidthUpgradeStarted(endpoint_id, BLE, WIFI_LAN, INCOMING, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnBandwidthUpgradeStarted( endpoint_id_1, BLUETOOTH, WIFI_LAN, INCOMING, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); // Error to upgrade. analytics_recorder.OnBandwidthUpgradeError( endpoint_id, WIFI_LAN_MEDIUM_ERROR, WIFI_LAN_SOCKET_CREATION, OperationResultCode::CONNECTIVITY_WIFI_LAN_INVALID_CREDENTIAL); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); // Success to upgrade. analytics_recorder.OnBandwidthUpgradeSuccess(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.LogSession(); // ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1432,7 +1422,7 @@ TEST_F(AnalyticsRecorderTest, SetErrorCodeFieldsCorrectly) { auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar, /*mediums=*/{WEB_RTC}, discovery_metadata_params.get()); @@ -1440,9 +1430,9 @@ TEST_F(AnalyticsRecorderTest, SetErrorCodeFieldsCorrectly) { ErrorCodeParams error_code_params = ErrorCodeRecorder::BuildErrorCodeParams( WEB_RTC, DISCONNECT, DISCONNECT_NETWORK_FAILED, TACHYON_SEND_MESSAGE_STATUS_EXCEPTION, "", "connection_token"); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnErrorCode(error_code_params); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1466,7 +1456,7 @@ TEST_F(AnalyticsRecorderTest, auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar, /*mediums=*/{BLUETOOTH}, discovery_metadata_params.get()); @@ -1477,9 +1467,9 @@ TEST_F(AnalyticsRecorderTest, error_code_params.event = START_DISCOVERING; error_code_params.start_discovering_error = START_EXTENDED_DISCOVERING_FAILED; error_code_params.connection_token = "connection_token"; - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnErrorCode(error_code_params); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1502,7 +1492,7 @@ TEST_F(AnalyticsRecorderTest, SetErrorCodeFieldsCorrectlyForCommonError) { auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar, /*mediums=*/{BLUETOOTH}, discovery_metadata_params.get()); @@ -1510,9 +1500,9 @@ TEST_F(AnalyticsRecorderTest, SetErrorCodeFieldsCorrectlyForCommonError) { ErrorCodeParams error_code_params = ErrorCodeRecorder::BuildErrorCodeParams( BLUETOOTH, START_DISCOVERING, INVALID_PARAMETER, NULL_BLUETOOTH_DEVICE_NAME, "", "connection_token"); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnErrorCode(error_code_params); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1533,7 +1523,7 @@ TEST_F(AnalyticsRecorderTest, CheckIfSessionWasLogged) { FakeEventLogger event_logger(client_session_done_latch); AnalyticsRecorder analytics_recorder(&event_logger); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); // LogSession to count down client_session_done_latch. analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1635,17 +1625,17 @@ TEST_F(AnalyticsRecorderTest, auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionRequestReceived(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); // LogSession analytics_recorder.LogSession(); // call ResetClientSessionLoggingResouces @@ -1684,7 +1674,7 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_start_client_session_done_latch(1); event_logger.SetStartClientSessionDoneLatchPtr( &new_start_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.LogStartSession(); ASSERT_TRUE( new_start_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1693,13 +1683,13 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); std::string endpoint_id_1 = "endpoint_id_1"; - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.OnConnectionRequestReceived(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(800)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(800)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(900)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(900)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(1000)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1000)); analytics_recorder.LogSession(); ASSERT_TRUE(new_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1767,18 +1757,18 @@ TEST_F(AnalyticsRecorderTest, auto discovery_metadata_params = analytics_recorder.BuildDiscoveryMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, discovery_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionRequestSent(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); // LogSession analytics_recorder.LogSession(); // call ResetClientSessionLoggingResouces @@ -1825,13 +1815,13 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); std::string endpoint_id_1 = "endpoint_id_1"; - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnConnectionRequestSent(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.OnLocalEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(800)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(800)); analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_1); - GetFakeClock().FastForward(absl::Milliseconds(900)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(900)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1901,14 +1891,14 @@ TEST_F(AnalyticsRecorderTest, ClearcActiveConnectionsAfterSessionWasLogged) { auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(strategy, mediums, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnConnectionEstablished(endpoint_id, BLUETOOTH, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); // LogSession analytics_recorder.LogSession(); // call ResetClientSessionLoggingResouces @@ -1951,7 +1941,7 @@ TEST_F(AnalyticsRecorderTest, ClearcActiveConnectionsAfterSessionWasLogged) { CountDownLatch new_start_client_session_done_latch(1); event_logger.SetStartClientSessionDoneLatchPtr( &new_start_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.LogStartSession(); ASSERT_TRUE( new_start_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -1959,7 +1949,7 @@ TEST_F(AnalyticsRecorderTest, ClearcActiveConnectionsAfterSessionWasLogged) { // LogSession again CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2024,33 +2014,33 @@ TEST_F(AnalyticsRecorderTest, auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnBandwidthUpgradeStarted(endpoint_id, BLE, WIFI_LAN, INCOMING, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnBandwidthUpgradeStarted( endpoint_id_1, BLUETOOTH, WIFI_LAN, INCOMING, connection_token); // - Error to upgrade. - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnBandwidthUpgradeError( endpoint_id, WIFI_LAN_MEDIUM_ERROR, WIFI_LAN_SOCKET_CREATION, OperationResultCode::CONNECTIVITY_WIFI_LAN_INVALID_CREDENTIAL); // - Success to upgrade. - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnBandwidthUpgradeSuccess(endpoint_id_1); // - Upgrade is unfinished. - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnBandwidthUpgradeStarted( endpoint_id_2, BLUETOOTH, WIFI_LAN, INCOMING, connection_token); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); // LogSession analytics_recorder.LogSession(); // call ResetClientSessionLoggingResouces ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2123,7 +2113,7 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_start_client_session_done_latch(1); event_logger.SetStartClientSessionDoneLatchPtr( &new_start_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(800)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(800)); analytics_recorder.LogStartSession(); ASSERT_TRUE( new_start_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2131,7 +2121,7 @@ TEST_F(AnalyticsRecorderTest, // LogSession again CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(900)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(900)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2216,14 +2206,14 @@ TEST_F(AnalyticsRecorderTest, auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); // LogSession analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2237,7 +2227,7 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_start_client_session_done_latch(1); event_logger.SetStartClientSessionDoneLatchPtr( &new_start_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.LogStartSession(); ASSERT_TRUE( new_start_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2246,12 +2236,12 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnStartAdvertising(strategy, /*mediums=*/{BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(700)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(700)); analytics_recorder.LogSession(); ASSERT_TRUE(new_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2272,13 +2262,13 @@ TEST_F(AnalyticsRecorderTest, // UpdateStrategySessionLocked. auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); // LogSession analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2310,7 +2300,7 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_start_client_session_done_latch(1); event_logger.SetStartClientSessionDoneLatchPtr( &new_start_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.LogStartSession(); ASSERT_TRUE( new_start_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2320,7 +2310,7 @@ TEST_F(AnalyticsRecorderTest, // strategy_session_proto will be logged. CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.LogSession(); ASSERT_TRUE(new_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2337,14 +2327,14 @@ TEST_F(AnalyticsRecorderTest, auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising( connections::Strategy::kP2pStar, /*mediums=*/{BLUETOOTH}, advertising_metadata_params.get()); // set current_advertising_phase_ - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); // LogSession analytics_recorder.LogSession(); @@ -2376,7 +2366,7 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_start_client_session_done_latch(1); event_logger.SetStartClientSessionDoneLatchPtr( &new_start_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.LogStartSession(); ASSERT_TRUE( new_start_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2387,7 +2377,7 @@ TEST_F(AnalyticsRecorderTest, // be logged. CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2434,15 +2424,15 @@ TEST_F(AnalyticsRecorderTest, analytics_recorder.BuildDiscoveryMetadataParams( /*is_extended_advertisement_supported*/ true, /*connected_ap_frequency*/ 1, /*is_nfc_available=*/false); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartDiscovery( strategy, {BLUETOOTH}, discovery_metadata_params.get()); // set current_discovery_phase_ - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStopDiscovery(); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); analytics_recorder.OnEndpointFound(BLUETOOTH); - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); // LogSession analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2457,10 +2447,7 @@ TEST_F(AnalyticsRecorderTest, discovery_phase { duration_millis: 200 medium: BLUETOOTH - discovered_endpoint { - medium: BLUETOOTH - latency_millis: 500 - } + discovered_endpoint { medium: BLUETOOTH latency_millis: 500 } discovery_metadata { supports_extended_ble_advertisements: true connected_ap_frequency: 1 @@ -2477,7 +2464,7 @@ TEST_F(AnalyticsRecorderTest, CountDownLatch new_start_client_session_done_latch(1); event_logger.SetStartClientSessionDoneLatchPtr( &new_start_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.LogStartSession(); ASSERT_TRUE( new_start_client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2488,7 +2475,7 @@ TEST_F(AnalyticsRecorderTest, // logged. CountDownLatch new_client_session_done_latch(1); event_logger.SetClientSessionDoneLatch(new_client_session_done_latch); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.LogSession(); ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result()); @@ -2536,13 +2523,13 @@ TEST_F(AnalyticsRecorderTest, // UpdateStrategySessionLocked. auto advertising_metadata_params = analytics_recorder.BuildAdvertisingMetadataParams(); - GetFakeClock().FastForward(absl::Milliseconds(100)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(100)); analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar, /*mediums=*/{BLE, BLUETOOTH}, advertising_metadata_params.get()); - GetFakeClock().FastForward(absl::Milliseconds(200)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(200)); analytics_recorder.OnStopAdvertising(); - GetFakeClock().FastForward(absl::Milliseconds(300)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(300)); // LogSession analytics_recorder.LogSession(); @@ -2573,14 +2560,14 @@ TEST_F(AnalyticsRecorderTest, // Without calling OnStartAdvertising won't create new // current_strategy_session_. - GetFakeClock().FastForward(absl::Milliseconds(400)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(400)); analytics_recorder.OnConnectionEstablished(endpoint_id, BLUETOOTH, /*connection_token=*/""); - GetFakeClock().FastForward(absl::Milliseconds(500)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(500)); analytics_recorder.OnConnectionClosed( endpoint_id, BLUETOOTH, UPGRADED, ConnectionsLog::EstablishedConnection::SAFE_DISCONNECTION); - GetFakeClock().FastForward(absl::Milliseconds(600)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(600)); analytics_recorder.LogSession(); // The proto won't change. diff --git a/connections/implementation/client_proxy_test.cc b/connections/implementation/client_proxy_test.cc index 5da9aabd..5ea52f45 100644 --- a/connections/implementation/client_proxy_test.cc +++ b/connections/implementation/client_proxy_test.cc @@ -360,10 +360,7 @@ class ClientProxyTest : public ::testing::TestWithParam { ClientProxy* client2() { return client2_.get(); } void FastForward(absl::Duration duration) { - (*env_.GetSimulatedClock()) - ->FastForward( - ClientProxy::kHighPowerAdvertisementEndpointIdCacheTimeout + - absl::Milliseconds(100)); + env_.FastForward(duration); // make sure the timer based callback is executed. absl::SleepFor(absl::Milliseconds(100)); } diff --git a/connections/implementation/mediums/ble/discovered_peripheral_tracker_test.cc b/connections/implementation/mediums/ble/discovered_peripheral_tracker_test.cc index 79fd120f..c34120ae 100644 --- a/connections/implementation/mediums/ble/discovered_peripheral_tracker_test.cc +++ b/connections/implementation/mediums/ble/discovered_peripheral_tracker_test.cc @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -53,7 +52,6 @@ #include "internal/platform/mutex.h" #include "internal/platform/mutex_lock.h" #include "internal/platform/uuid.h" -#include "internal/test/fake_clock.h" namespace nearby { namespace connections { @@ -1628,9 +1626,6 @@ TEST_P(DiscoveredPeripheralTrackerTest, TEST_P(DiscoveredPeripheralTrackerTest, OnlyGattAdvertisementReceivedOnDeviceWithExtended) { - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - std::vector service_ids = {std::string(kServiceIdA)}; ByteArray advertisement_hash = GenerateRandomAdvertisementHash(); ByteArray advertisement_header_bytes = @@ -1668,7 +1663,7 @@ TEST_P(DiscoveredPeripheralTrackerTest, // 2. Receive GATT advertisement data again after 4 seconds, it should access // GATT server. - (*fake_clock)->FastForward(absl::Seconds(4)); + MediumEnvironment::Instance().FastForward(absl::Seconds(4)); FindAdvertisement(advertisement_data, {advertisement_bytes}, fetch_latch); // We should receive a client callback of a peripheral discovery. @@ -1678,9 +1673,6 @@ TEST_P(DiscoveredPeripheralTrackerTest, } TEST_P(DiscoveredPeripheralTrackerTest, SkipExpiredGattAdvertisement) { - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - std::vector service_ids = {std::string(kServiceIdA)}; ByteArray advertisement_hash = GenerateRandomAdvertisementHash(); ByteArray advertisement_header_bytes = @@ -1718,7 +1710,7 @@ TEST_P(DiscoveredPeripheralTrackerTest, SkipExpiredGattAdvertisement) { // 2. The GATT advertisement is already queued and will be skipped. FindAdvertisement(advertisement_data, {advertisement_bytes}, fetch_latch); - (*fake_clock)->FastForward(absl::Seconds(20)); + MediumEnvironment::Instance().FastForward(absl::Seconds(20)); discovered_peripheral_tracker_->StartFetchExecutorForTesting(); // We should not receive a client callback of a peripheral discovery. @@ -1729,9 +1721,6 @@ TEST_P(DiscoveredPeripheralTrackerTest, SkipExpiredGattAdvertisement) { TEST_P(DiscoveredPeripheralTrackerTest, DiscoveredOnceWhenGattAndExtendedAdvertisementReceived) { - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - std::vector service_ids = {std::string(kServiceIdA)}; ByteArray advertisement_hash = GenerateRandomAdvertisementHash(); ByteArray advertisement_header_bytes = @@ -1756,7 +1745,7 @@ TEST_P(DiscoveredPeripheralTrackerTest, }, }, bleutils::kCopresenceServiceUuid); - (*fake_clock)->FastForward(absl::Seconds(4)); + MediumEnvironment::Instance().FastForward(absl::Seconds(4)); discovered_peripheral_tracker_->StartFetchExecutorForTesting(); // 1. Received extended advertisement. @@ -1784,8 +1773,6 @@ TEST_P(DiscoveredPeripheralTrackerTest, TEST_P(DiscoveredPeripheralTrackerTest, FindGattAdvertisementInHigherPriorityThanExtendedGattAdvertisement) { - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); std::vector service_ids = {std::string(kServiceIdA)}; ByteArray advertisement_hash_a = GenerateRandomAdvertisementHash(); ByteArray advertisement_header_a = @@ -1823,7 +1810,7 @@ TEST_P(DiscoveredPeripheralTrackerTest, }, }, bleutils::kCopresenceServiceUuid); - (*fake_clock)->FastForward(absl::Seconds(4)); + MediumEnvironment::Instance().FastForward(absl::Seconds(4)); discovered_peripheral_tracker_->StartFetchExecutorForTesting(); // 1. Find peripheral A with GATT advertisement. diff --git a/internal/platform/implementation/g3/scheduled_executor.cc b/internal/platform/implementation/g3/scheduled_executor.cc index f82d6f7b..34e7fed9 100644 --- a/internal/platform/implementation/g3/scheduled_executor.cc +++ b/internal/platform/implementation/g3/scheduled_executor.cc @@ -16,16 +16,15 @@ #include #include -#include #include #include "absl/strings/str_format.h" #include "absl/synchronization/mutex.h" #include "absl/time/time.h" #include "internal/platform/implementation/cancelable.h" +#include "internal/platform/logging.h" #include "internal/platform/medium_environment.h" #include "internal/platform/runnable.h" -#include "internal/test/fake_clock.h" namespace nearby { namespace g3 { @@ -66,20 +65,13 @@ class ScheduledCancelable : public api::Cancelable { } // namespace ScheduledExecutor::ScheduledExecutor() { - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - if (fake_clock.has_value()) { - name_ = absl::StrFormat("G3 scheduled executor %p", this); - (*fake_clock)->AddObserver(name_, [this]() { RunReadyTasks(); }); - } + name_ = absl::StrFormat("G3 scheduled executor %p", this); + MediumEnvironment::Instance().AddSimulatedClockObserver( + name_, [this]() { RunReadyTasks(); }); } ScheduledExecutor::~ScheduledExecutor() { - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - if (fake_clock.has_value()) { - (*fake_clock)->RemoveObserver(name_); - } + MediumEnvironment::Instance().RemoveSimulatedClockObserver(name_); executor_.Shutdown(); } @@ -96,10 +88,10 @@ std::shared_ptr ScheduledExecutor::Schedule( runnable(); } }; - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - if (fake_clock.has_value()) { - absl::Time trigger_time = (*fake_clock)->Now() + delay; + if (MediumEnvironment::Instance() + .GetEnvironmentConfig() + .use_simulated_clock) { + absl::Time trigger_time = MediumEnvironment::Instance().Now() + delay; absl::MutexLock lock(mutex_); tasks_.insert(std::pair>( trigger_time, std::make_unique(std::move(task)))); @@ -110,15 +102,12 @@ std::shared_ptr ScheduledExecutor::Schedule( } void ScheduledExecutor::RunReadyTasks() { - std::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); if (executor_.InShutdown()) { return; } - if (!fake_clock.has_value()) { - return; - } - absl::Time current_time = (*fake_clock)->Now(); + CHECK( + MediumEnvironment::Instance().GetEnvironmentConfig().use_simulated_clock); + absl::Time current_time = MediumEnvironment::Instance().Now(); absl::MutexLock lock(mutex_); for (auto it = tasks_.begin(); it != tasks_.end();) { if (it->first <= current_time) { diff --git a/internal/platform/implementation/g3/system_clock.cc b/internal/platform/implementation/g3/system_clock.cc index b3cc53c1..430ba5a4 100644 --- a/internal/platform/implementation/g3/system_clock.cc +++ b/internal/platform/implementation/g3/system_clock.cc @@ -15,26 +15,21 @@ #include "internal/platform/implementation/system_clock.h" #include "absl/time/clock.h" +#include "absl/time/time.h" #include "internal/platform/exception.h" #include "internal/platform/medium_environment.h" -#include "internal/test/fake_clock.h" namespace nearby { absl::Time SystemClock::ElapsedRealtime() { - absl::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - if (fake_clock.has_value()) { - return (*fake_clock)->Now(); - } - return absl::Now(); + return MediumEnvironment::Instance().Now(); } Exception SystemClock::Sleep(absl::Duration duration) { - absl::optional fake_clock = - MediumEnvironment::Instance().GetSimulatedClock(); - if (fake_clock.has_value()) { - (*fake_clock)->FastForward(duration); + if (MediumEnvironment::Instance() + .GetEnvironmentConfig() + .use_simulated_clock) { + MediumEnvironment::Instance().FastForward(duration); } else { absl::SleepFor(duration); } diff --git a/internal/platform/medium_environment.cc b/internal/platform/medium_environment.cc index f932bfc4..3f1617b0 100644 --- a/internal/platform/medium_environment.cc +++ b/internal/platform/medium_environment.cc @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -27,6 +28,7 @@ #include "absl/status/status.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" +#include "absl/time/clock.h" #include "absl/time/time.h" #include "internal/platform/borrowable.h" #include "internal/platform/byte_array.h" @@ -46,6 +48,7 @@ #include "internal/platform/nsd_service_info.h" #include "internal/platform/prng.h" #include "internal/platform/runnable.h" +#include "internal/platform/service_address.h" #include "internal/platform/uuid.h" #include "internal/platform/wifi_credential.h" #include "internal/test/fake_clock.h" @@ -69,10 +72,14 @@ MediumEnvironment& MediumEnvironment::Instance() { void MediumEnvironment::Start(EnvironmentConfig config) { if (!enabled_.exchange(true)) { LOG(INFO) << "MediumEnvironment::Start()"; - config_ = std::move(config); - if (config_.use_simulated_clock) { + { MutexLock lock(&mutex_); - simulated_clock_ = std::make_unique(); + config_ = std::move(config); + if (config_.use_simulated_clock) { + simulated_clock_ = std::make_shared(); + } else { + simulated_clock_.reset(); + } } Reset(); } @@ -82,8 +89,8 @@ void MediumEnvironment::Stop() { if (enabled_.exchange(false)) { LOG(INFO) << "MediumEnvironment::Stop()"; Sync(false); + MutexLock lock(&mutex_); if (config_.use_simulated_clock) { - MutexLock lock(&mutex_); simulated_clock_.reset(); } config_ = {}; @@ -132,7 +139,8 @@ void MediumEnvironment::Sync(bool enable_notifications) { LOG(INFO) << "MediumEnvironment::Sync(): done [count=" << count << "]"; } -const EnvironmentConfig& MediumEnvironment::GetEnvironmentConfig() { +EnvironmentConfig MediumEnvironment::GetEnvironmentConfig() { + MutexLock lock(&mutex_); return config_; } @@ -1150,12 +1158,43 @@ void MediumEnvironment::SetFeatureFlags(const FeatureFlags::Flags& flags) { FeatureFlags::GetMutableInstanceForTesting().SetFlags(flags); } -std::optional MediumEnvironment::GetSimulatedClock() { +absl::Time MediumEnvironment::Now() { MutexLock lock(&mutex_); if (simulated_clock_) { - return std::optional(simulated_clock_.get()); + return simulated_clock_->Now(); + } + return absl::Now(); +} + +// If simulated_clock_ is valid, it will be advanced by the given duration. +// If simulated_clock_ is not valid, this method will do nothing. +void MediumEnvironment::FastForward(absl::Duration duration) { + std::shared_ptr sim_clock; + { + MutexLock lock(&mutex_); + if (simulated_clock_) { + sim_clock = simulated_clock_; + } + } + if (sim_clock) { + // Mutex is unlocked before calling FastForward to prevent deadlocks. + sim_clock->FastForward(duration); + } +} + +void MediumEnvironment::AddSimulatedClockObserver( + const std::string& name, std::function observer) { + MutexLock lock(&mutex_); + if (simulated_clock_) { + simulated_clock_->AddObserver(name, std::move(observer)); + } +} + +void MediumEnvironment::RemoveSimulatedClockObserver(const std::string& name) { + MutexLock lock(&mutex_); + if (simulated_clock_) { + simulated_clock_->RemoveObserver(name); } - return std::nullopt; } void MediumEnvironment::RegisterGattServer( diff --git a/internal/platform/medium_environment.h b/internal/platform/medium_environment.h index a5bf530d..3a345a5a 100644 --- a/internal/platform/medium_environment.h +++ b/internal/platform/medium_environment.h @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -162,7 +163,7 @@ class MediumEnvironment { // Returns a Bluetooth Device object matching given mac address to nullptr. api::BluetoothDevice* FindBluetoothDevice(MacAddress mac_address); - const EnvironmentConfig& GetEnvironmentConfig(); + EnvironmentConfig GetEnvironmentConfig(); #ifndef NO_WEBRTC // Registers |message_callback| to receive messages sent to device with id // |self_id|, and |complete_callback| to notify when signaling is complete. @@ -334,7 +335,11 @@ class MediumEnvironment { void SetFeatureFlags(const FeatureFlags::Flags& flags); - std::optional GetSimulatedClock(); + absl::Time Now(); + void FastForward(absl::Duration duration); + void AddSimulatedClockObserver(const std::string& name, + std::function observer); + void RemoveSimulatedClockObserver(const std::string& name); api::ble::BleMedium* FindBleMedium(api::ble::BlePeripheral::UniqueId id); @@ -516,7 +521,7 @@ class MediumEnvironment { bool use_valid_peer_connection_ = true; absl::Duration peer_connection_latency_ = absl::ZeroDuration(); - std::unique_ptr simulated_clock_ ABSL_GUARDED_BY(mutex_); + std::shared_ptr simulated_clock_ ABSL_GUARDED_BY(mutex_); ObserverList observers_; bool ble_extended_advertisements_available_ = false; }; diff --git a/internal/platform/scheduled_executor_test.cc b/internal/platform/scheduled_executor_test.cc index efc9f77a..80d79c25 100644 --- a/internal/platform/scheduled_executor_test.cc +++ b/internal/platform/scheduled_executor_test.cc @@ -25,13 +25,12 @@ #include "internal/platform/cancelable.h" #include "internal/platform/count_down_latch.h" #include "internal/platform/medium_environment.h" -#include "internal/test/fake_clock.h" namespace nearby { // kShortDelay must be significant enough to guarantee that OS under heavy load // should be able to execute the non-blocking test paths within this time. -absl::Duration kShortDelay = absl::Milliseconds(100); +absl::Duration kShortDelay = absl::Milliseconds(200); // kLongDelay must be long enough to make sure that under OS under heavy load // will let kShortDelay fire and jobs scheduled before the kLongDelay fires. @@ -212,8 +211,6 @@ TEST(ScheduledExecutorTest, ExecuteDuringShutdownFails) { TEST(ScheduledExecutorTest, SimulatedClockCanSchedule) { MediumEnvironment::Instance().Start({.use_simulated_clock = true}); - FakeClock* fake_clock = - MediumEnvironment::Instance().GetSimulatedClock().value(); ScheduledExecutor executor; std::atomic_int value = 0; CountDownLatch first_task_latch(1); @@ -235,24 +232,23 @@ TEST(ScheduledExecutorTest, SimulatedClockCanSchedule) { }, kShortDelay); EXPECT_EQ(value, 0); - fake_clock->FastForward(kShortDelay - absl::Milliseconds(1)); + MediumEnvironment::Instance().FastForward(kShortDelay - + absl::Milliseconds(1)); EXPECT_EQ(value, 0); - fake_clock->FastForward(absl::Milliseconds(1)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1)); second_task_latch.Await(); EXPECT_EQ(value, 1); - fake_clock->FastForward(kLongDelay - kShortDelay); + MediumEnvironment::Instance().FastForward(kLongDelay - kShortDelay); first_task_latch.Await(); EXPECT_EQ(value, 5); // Very long sleep to make sure that the sleep is truly simulated. - fake_clock->FastForward(absl::Minutes(30)); + MediumEnvironment::Instance().FastForward(absl::Minutes(30)); MediumEnvironment::Instance().Stop(); } TEST(ScheduledExecutorTest, DestroyExecutorWithSimulatedClockIgnoresPendingTasks) { MediumEnvironment::Instance().Start({.use_simulated_clock = true}); - FakeClock* fake_clock = - MediumEnvironment::Instance().GetSimulatedClock().value(); { ScheduledExecutor executor; executor.Schedule( @@ -262,7 +258,7 @@ TEST(ScheduledExecutorTest, }, kShortDelay); } - fake_clock->FastForward(absl::Minutes(30)); + MediumEnvironment::Instance().FastForward(absl::Minutes(30)); MediumEnvironment::Instance().Stop(); } @@ -403,8 +399,6 @@ TEST(ScheduledExecutorTest, CanCancelOneOfTwoRepeatedTasks) { TEST(ScheduledExecutorTest, SimulatedClockCanScheduleRepeatedly) { MediumEnvironment::Instance().Start({.use_simulated_clock = true}); - FakeClock* fake_clock = - MediumEnvironment::Instance().GetSimulatedClock().value(); ScheduledExecutor executor; std::atomic_int value = 0; std::atomic_int i = 0; @@ -419,11 +413,12 @@ TEST(ScheduledExecutorTest, SimulatedClockCanScheduleRepeatedly) { EXPECT_EQ(value, 0); // Advance to just before the first execution. - fake_clock->FastForward(kShortDelay - absl::Milliseconds(1)); + MediumEnvironment::Instance().FastForward(kShortDelay - + absl::Milliseconds(1)); EXPECT_EQ(value, 0); // Advance past the first execution. - fake_clock->FastForward(absl::Milliseconds(1)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1)); latch[0].Await(absl::Seconds(1)); EXPECT_EQ(value, 1); @@ -431,11 +426,12 @@ TEST(ScheduledExecutorTest, SimulatedClockCanScheduleRepeatedly) { absl::SleepFor(kShortDelay); // Advance to just before the second execution. - fake_clock->FastForward(kShortDelay - absl::Milliseconds(1)); + MediumEnvironment::Instance().FastForward(kShortDelay - + absl::Milliseconds(1)); EXPECT_EQ(value, 1); // Advance past the second execution. - fake_clock->FastForward(absl::Milliseconds(1)); + MediumEnvironment::Instance().FastForward(absl::Milliseconds(1)); latch[1].Await(absl::Seconds(1)); EXPECT_EQ(value, 2); @@ -443,7 +439,7 @@ TEST(ScheduledExecutorTest, SimulatedClockCanScheduleRepeatedly) { cancelable.Cancel(); // Advance a long time and make sure it doesn't run again. - fake_clock->FastForward(kLongDelay * 5); + MediumEnvironment::Instance().FastForward(kLongDelay * 5); EXPECT_EQ(value, 2); MediumEnvironment::Instance().Stop(); diff --git a/internal/test/fake_clock.cc b/internal/test/fake_clock.cc index edb26a7f..8df56432 100644 --- a/internal/test/fake_clock.cc +++ b/internal/test/fake_clock.cc @@ -19,6 +19,10 @@ #include #include +#include "absl/strings/string_view.h" +#include "absl/synchronization/mutex.h" +#include "absl/time/time.h" + namespace nearby { FakeClock::~FakeClock() { diff --git a/internal/test/fake_clock.h b/internal/test/fake_clock.h index 5b7a9af8..b5fbeea6 100644 --- a/internal/test/fake_clock.h +++ b/internal/test/fake_clock.h @@ -53,6 +53,7 @@ class FakeClock : public Clock { absl::flat_hash_map> observers_ ABSL_GUARDED_BY(mutex_); }; + } // namespace nearby #endif // THIRD_PARTY_NEARBY_INTERNAL_TEST_FAKE_CLOCK_H_ diff --git a/internal/test/fake_clock_test.cc b/internal/test/fake_clock_test.cc index 0f57ce56..770f78ed 100644 --- a/internal/test/fake_clock_test.cc +++ b/internal/test/fake_clock_test.cc @@ -14,9 +14,8 @@ #include "internal/test/fake_clock.h" -#include "gmock/gmock.h" -#include "protobuf-matchers/protocol-buffer-matchers.h" #include "gtest/gtest.h" +#include "absl/time/time.h" namespace nearby { namespace {