mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 14:46:12 -04:00
analytics: Implement AdvertisingMetadataParams and DiscoveryMetadataParams for analytics recorder.
PiperOrigin-RevId: 704295939
This commit is contained in:
committed by
Copybara-Service
parent
46968b9278
commit
196dda9af5
@@ -20,8 +20,10 @@ cc_library(
|
||||
"throughput_recorder.cc",
|
||||
],
|
||||
hdrs = [
|
||||
"advertising_metadata_params.h",
|
||||
"analytics_recorder.h",
|
||||
"connection_attempt_metadata_params.h",
|
||||
"discovery_metadata_params.h",
|
||||
"packet_meta_data.h",
|
||||
"throughput_recorder.h",
|
||||
],
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright 2024 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// https://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef ANALYTICS_ADVERTISING_METADATA_PARAMS_H_
|
||||
#define ANALYTICS_ADVERTISING_METADATA_PARAMS_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "internal/proto/analytics/connections_log.pb.h"
|
||||
|
||||
namespace nearby {
|
||||
|
||||
// A struct to construct AdvertisingMetadata for the analytics recorder.
|
||||
struct AdvertisingMetadataParams {
|
||||
bool is_extended_advertisement_supported = false;
|
||||
int connected_ap_frequency = 0;
|
||||
bool is_nfc_available = false;
|
||||
std::vector<location::nearby::analytics::proto::ConnectionsLog::
|
||||
OperationResultWithMedium>
|
||||
operation_result_with_mediums = {};
|
||||
};
|
||||
|
||||
} // namespace nearby
|
||||
|
||||
#endif // ANALYTICS_ADVERTISING_METADATA_PARAMS_H_
|
||||
@@ -26,7 +26,9 @@
|
||||
#include "absl/container/btree_map.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "absl/time/time.h"
|
||||
#include "connections/implementation/analytics/advertising_metadata_params.h"
|
||||
#include "connections/implementation/analytics/connection_attempt_metadata_params.h"
|
||||
#include "connections/implementation/analytics/discovery_metadata_params.h"
|
||||
#include "connections/payload_type.h"
|
||||
#include "connections/strategy.h"
|
||||
#include "internal/analytics/event_logger.h"
|
||||
@@ -206,10 +208,7 @@ void AnalyticsRecorder::ResetClientSessionLoggingResoucesLocked() {
|
||||
|
||||
void AnalyticsRecorder::OnStartAdvertising(
|
||||
connections::Strategy strategy, const std::vector<Medium> &mediums,
|
||||
const std::vector<ConnectionsLog::OperationResultWithMedium>
|
||||
&operation_result_with_mediums,
|
||||
bool is_extended_advertisement_supported, int connected_ap_frequency,
|
||||
bool is_nfc_available) {
|
||||
AdvertisingMetadataParams *advertising_metadata_params) {
|
||||
MutexLock lock(&mutex_);
|
||||
if (!CanRecordAnalyticsLocked("OnStartAdvertising")) {
|
||||
return;
|
||||
@@ -228,16 +227,24 @@ void AnalyticsRecorder::OnStartAdvertising(
|
||||
std::make_unique<ConnectionsLog::AdvertisingPhase>();
|
||||
absl::c_copy(mediums, RepeatedFieldBackInserter(
|
||||
current_advertising_phase_->mutable_medium()));
|
||||
absl::c_copy(operation_result_with_mediums,
|
||||
RepeatedFieldBackInserter(
|
||||
current_advertising_phase_->mutable_adv_dis_result()));
|
||||
// Set a AdvertisingMetadata.
|
||||
AdvertisingMetadataParams default_params = {};
|
||||
if (advertising_metadata_params == nullptr) {
|
||||
advertising_metadata_params = &default_params;
|
||||
}
|
||||
if (!advertising_metadata_params->operation_result_with_mediums.empty()) {
|
||||
absl::c_copy(advertising_metadata_params->operation_result_with_mediums,
|
||||
RepeatedFieldBackInserter(
|
||||
current_advertising_phase_->mutable_adv_dis_result()));
|
||||
}
|
||||
auto *advertising_metadata =
|
||||
current_advertising_phase_->mutable_advertising_metadata();
|
||||
advertising_metadata->set_supports_extended_ble_advertisements(
|
||||
is_extended_advertisement_supported);
|
||||
advertising_metadata->set_connected_ap_frequency(connected_ap_frequency);
|
||||
advertising_metadata->set_supports_nfc_technology(is_nfc_available);
|
||||
advertising_metadata_params->is_extended_advertisement_supported);
|
||||
advertising_metadata->set_connected_ap_frequency(
|
||||
advertising_metadata_params->connected_ap_frequency);
|
||||
advertising_metadata->set_supports_nfc_technology(
|
||||
advertising_metadata_params->is_nfc_available);
|
||||
}
|
||||
|
||||
void AnalyticsRecorder::OnStopAdvertising() {
|
||||
@@ -250,10 +257,7 @@ void AnalyticsRecorder::OnStopAdvertising() {
|
||||
|
||||
void AnalyticsRecorder::OnStartDiscovery(
|
||||
connections::Strategy strategy, const std::vector<Medium> &mediums,
|
||||
const std::vector<ConnectionsLog::OperationResultWithMedium>
|
||||
&operation_result_with_mediums,
|
||||
bool is_extended_advertisement_supported, int connected_ap_frequency,
|
||||
bool is_nfc_available) {
|
||||
DiscoveryMetadataParams *discovery_metadata_params) {
|
||||
MutexLock lock(&mutex_);
|
||||
if (!CanRecordAnalyticsLocked("OnStartDiscovery")) {
|
||||
return;
|
||||
@@ -272,16 +276,24 @@ void AnalyticsRecorder::OnStartDiscovery(
|
||||
current_discovery_phase_ = std::make_unique<ConnectionsLog::DiscoveryPhase>();
|
||||
absl::c_copy(mediums, RepeatedFieldBackInserter(
|
||||
current_discovery_phase_->mutable_medium()));
|
||||
absl::c_copy(operation_result_with_mediums,
|
||||
RepeatedFieldBackInserter(
|
||||
current_discovery_phase_->mutable_adv_dis_result()));
|
||||
// Set a DiscoveryMetadata.
|
||||
DiscoveryMetadataParams default_params = {};
|
||||
if (discovery_metadata_params == nullptr) {
|
||||
discovery_metadata_params = &default_params;
|
||||
}
|
||||
if (!discovery_metadata_params->operation_result_with_mediums.empty()) {
|
||||
absl::c_copy(discovery_metadata_params->operation_result_with_mediums,
|
||||
RepeatedFieldBackInserter(
|
||||
current_discovery_phase_->mutable_adv_dis_result()));
|
||||
}
|
||||
auto *discovery_metadata =
|
||||
current_discovery_phase_->mutable_discovery_metadata();
|
||||
discovery_metadata->set_supports_extended_ble_advertisements(
|
||||
is_extended_advertisement_supported);
|
||||
discovery_metadata->set_connected_ap_frequency(connected_ap_frequency);
|
||||
discovery_metadata->set_supports_nfc_technology(is_nfc_available);
|
||||
discovery_metadata_params->is_extended_advertisement_supported);
|
||||
discovery_metadata->set_connected_ap_frequency(
|
||||
discovery_metadata_params->connected_ap_frequency);
|
||||
discovery_metadata->set_supports_nfc_technology(
|
||||
discovery_metadata_params->is_nfc_available);
|
||||
}
|
||||
|
||||
void AnalyticsRecorder::OnStopDiscovery() {
|
||||
@@ -902,6 +914,38 @@ void AnalyticsRecorder::LogSession() {
|
||||
session_was_logged_ = true;
|
||||
}
|
||||
|
||||
std::unique_ptr<AdvertisingMetadataParams>
|
||||
AnalyticsRecorder::BuildAdvertisingMetadataParams(
|
||||
bool is_extended_advertisement_supported, int connected_ap_frequency,
|
||||
bool is_nfc_available,
|
||||
const std::vector<ConnectionsLog::OperationResultWithMedium>
|
||||
&operation_result_with_mediums) {
|
||||
auto params = std::make_unique<AdvertisingMetadataParams>();
|
||||
params->is_extended_advertisement_supported =
|
||||
is_extended_advertisement_supported;
|
||||
params->connected_ap_frequency = connected_ap_frequency;
|
||||
params->is_nfc_available = is_nfc_available;
|
||||
params->operation_result_with_mediums =
|
||||
std::move(operation_result_with_mediums);
|
||||
return params;
|
||||
}
|
||||
|
||||
std::unique_ptr<DiscoveryMetadataParams>
|
||||
AnalyticsRecorder::BuildDiscoveryMetadataParams(
|
||||
bool is_extended_advertisement_supported, int connected_ap_frequency,
|
||||
bool is_nfc_available,
|
||||
const std::vector<ConnectionsLog::OperationResultWithMedium>
|
||||
&operation_result_with_mediums) {
|
||||
auto params = std::make_unique<DiscoveryMetadataParams>();
|
||||
params->is_extended_advertisement_supported =
|
||||
is_extended_advertisement_supported;
|
||||
params->connected_ap_frequency = connected_ap_frequency;
|
||||
params->is_nfc_available = is_nfc_available;
|
||||
params->operation_result_with_mediums =
|
||||
std::move(operation_result_with_mediums);
|
||||
return params;
|
||||
}
|
||||
|
||||
std::unique_ptr<ConnectionAttemptMetadataParams>
|
||||
AnalyticsRecorder::BuildConnectionAttemptMetadataParams(
|
||||
ConnectionTechnology technology, ConnectionBand band, int frequency,
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
#include "absl/container/btree_map.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "absl/time/time.h"
|
||||
#include "connections/implementation/analytics/advertising_metadata_params.h"
|
||||
#include "connections/implementation/analytics/connection_attempt_metadata_params.h"
|
||||
#include "connections/implementation/analytics/discovery_metadata_params.h"
|
||||
#include "connections/payload_type.h"
|
||||
#include "connections/strategy.h"
|
||||
#include "internal/analytics/event_logger.h"
|
||||
@@ -47,19 +49,11 @@ class AnalyticsRecorder {
|
||||
bool no_record_time_millis);
|
||||
virtual ~AnalyticsRecorder();
|
||||
|
||||
// TODO(edwinwu): Implement to pass real values for AdvertisingMetadata and
|
||||
// DiscoveryMetaData: is_extended_advertisement_supported,
|
||||
// connected_ap_frequency, and is_nfc_available. Set as default values for
|
||||
// analytics recorder.
|
||||
// Advertising phase
|
||||
void OnStartAdvertising(
|
||||
connections::Strategy strategy,
|
||||
const std::vector<location::nearby::proto::connections::Medium> &mediums,
|
||||
const std::vector<location::nearby::analytics::proto::ConnectionsLog::
|
||||
OperationResultWithMedium>
|
||||
&operation_result_with_medium,
|
||||
bool is_extended_advertisement_supported = false,
|
||||
int connected_ap_frequency = 0, bool is_nfc_available = false)
|
||||
AdvertisingMetadataParams *advertising_metadata_params)
|
||||
ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
void OnStopAdvertising() ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
|
||||
@@ -72,11 +66,7 @@ class AnalyticsRecorder {
|
||||
void OnStartDiscovery(
|
||||
connections::Strategy strategy,
|
||||
const std::vector<location::nearby::proto::connections::Medium> &mediums,
|
||||
const std::vector<location::nearby::analytics::proto::ConnectionsLog::
|
||||
OperationResultWithMedium>
|
||||
&operation_result_with_medium,
|
||||
bool is_extended_advertisement_supported = false,
|
||||
int connected_ap_frequency = 0, bool is_nfc_available = false)
|
||||
DiscoveryMetadataParams *discovery_metadata_params)
|
||||
ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
void OnStopDiscovery() ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
void OnEndpointFound(location::nearby::proto::connections::Medium medium)
|
||||
@@ -120,9 +110,20 @@ class AnalyticsRecorder {
|
||||
absl::Duration duration, const std::string &connection_token,
|
||||
ConnectionAttemptMetadataParams *connection_attempt_metadata_params)
|
||||
ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
// TODO(edwinwu): Implement network operator, country code, tdls, wifi hotspot
|
||||
//, max wifi tx/rx speed and channel width. Set as default values for
|
||||
// analytics recorder.
|
||||
static std::unique_ptr<AdvertisingMetadataParams>
|
||||
BuildAdvertisingMetadataParams(
|
||||
bool is_extended_advertisement_supported = false,
|
||||
int connected_ap_frequency = 0, bool is_nfc_available = false,
|
||||
const std::vector<location::nearby::analytics::proto::ConnectionsLog::
|
||||
OperationResultWithMedium>
|
||||
&operation_result_with_mediums = {});
|
||||
static std::unique_ptr<DiscoveryMetadataParams> BuildDiscoveryMetadataParams(
|
||||
bool is_extended_advertisement_supported = false,
|
||||
int connected_ap_frequency = 0, bool is_nfc_available = false,
|
||||
const std::vector<location::nearby::analytics::proto::ConnectionsLog::
|
||||
OperationResultWithMedium>
|
||||
&operation_result_with_mediums = {});
|
||||
|
||||
static std::unique_ptr<ConnectionAttemptMetadataParams>
|
||||
BuildConnectionAttemptMetadataParams(
|
||||
location::nearby::proto::connections::ConnectionTechnology technology,
|
||||
|
||||
@@ -173,12 +173,18 @@ TEST(AnalyticsRecorderTest, SetFieldsCorrectlyForNestedAdvertisingCalls) {
|
||||
operation_result.set_result_code(OperationResultCode::DETAIL_SUCCESS);
|
||||
operation_result.set_result_category(
|
||||
OperationResultCategory::CATEGORY_SUCCESS);
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
advertising_metadata_params->operation_result_with_mediums = {
|
||||
operation_result};
|
||||
analytics_recorder.OnStartAdvertising(strategy, /*mediums=*/{BLE, BLUETOOTH},
|
||||
{operation_result});
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
operation_result.set_medium(BLE);
|
||||
advertising_metadata_params->operation_result_with_mediums = {
|
||||
operation_result};
|
||||
analytics_recorder.OnStartAdvertising(strategy, /*mediums=*/{BLUETOOTH},
|
||||
{operation_result});
|
||||
advertising_metadata_params.get());
|
||||
|
||||
analytics_recorder.LogSession();
|
||||
ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result());
|
||||
@@ -241,18 +247,25 @@ TEST(AnalyticsRecorderTest, SetFieldsCorrectlyForNestedDiscoveryCalls) {
|
||||
operation_result2.set_result_code(OperationResultCode::DETAIL_SUCCESS);
|
||||
operation_result2.set_result_category(
|
||||
OperationResultCategory::CATEGORY_SUCCESS);
|
||||
analytics_recorder.OnStartDiscovery(
|
||||
strategy, /*mediums=*/{BLE, BLUETOOTH},
|
||||
{operation_result, operation_result2},
|
||||
/*is_extended_advertisement_supported=*/true,
|
||||
/*connected_ap_frequency=*/1, /*is_nfc_available=*/false);
|
||||
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams(
|
||||
/*is_extended_advertisement_supported*/ true,
|
||||
/*connected_ap_frequency*/ 1, /*is_nfc_available=*/false,
|
||||
{operation_result, operation_result2});
|
||||
analytics_recorder.OnStartDiscovery(strategy, /*mediums=*/{BLE, BLUETOOTH},
|
||||
discovery_metadata_params.get());
|
||||
analytics_recorder.OnStopDiscovery();
|
||||
analytics_recorder.OnEndpointFound(BLUETOOTH);
|
||||
analytics_recorder.OnEndpointFound(BLE);
|
||||
analytics_recorder.OnStartDiscovery(
|
||||
strategy, /*mediums=*/{BLUETOOTH}, {operation_result},
|
||||
/*is_extended_advertisement_supported=*/true,
|
||||
/*connected_ap_frequency=*/1, /*is_nfc_available=*/false);
|
||||
|
||||
auto discovery_metadata_params2 =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams(
|
||||
/*is_extended_advertisement_supported*/ true,
|
||||
/*connected_ap_frequency*/ 1, /*is_nfc_available=*/false,
|
||||
{operation_result});
|
||||
analytics_recorder.OnStartDiscovery(strategy, /*mediums=*/{BLUETOOTH},
|
||||
discovery_metadata_params2.get());
|
||||
|
||||
analytics_recorder.LogSession();
|
||||
ASSERT_TRUE(client_session_done_latch.Await(kDefaultTimeout).result());
|
||||
@@ -314,16 +327,25 @@ TEST(AnalyticsRecorderTest,
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums, {});
|
||||
analytics_recorder.OnStartDiscovery(strategy, mediums, {});
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums,
|
||||
advertising_metadata_params.get());
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
analytics_recorder.OnStartDiscovery(strategy, mediums,
|
||||
discovery_metadata_params.get());
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
analytics_recorder.OnStopDiscovery();
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums, {});
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums,
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
analytics_recorder.OnStartDiscovery(strategy, mediums, {});
|
||||
analytics_recorder.OnStartDiscovery(strategy, mediums,
|
||||
discovery_metadata_params.get());
|
||||
analytics_recorder.OnStopDiscovery();
|
||||
analytics_recorder.OnStartDiscovery(strategy, mediums, {});
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums, {});
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums,
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnStopDiscovery();
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
|
||||
@@ -422,9 +444,13 @@ TEST(AnalyticsRecorderTest, AdvertiserConnectionRequestsWorks) {
|
||||
operation_result.set_result_code(OperationResultCode::DETAIL_SUCCESS);
|
||||
operation_result.set_result_category(
|
||||
OperationResultCategory::CATEGORY_SUCCESS);
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
advertising_metadata_params->operation_result_with_mediums = {
|
||||
operation_result};
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
{operation_result});
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnConnectionRequestReceived(endpoint_id_0);
|
||||
analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0);
|
||||
analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0);
|
||||
@@ -502,9 +528,12 @@ TEST(AnalyticsRecorderTest, DiscoveryConnectionRequestsWorks) {
|
||||
operation_result.set_result_code(OperationResultCode::DETAIL_SUCCESS);
|
||||
operation_result.set_result_category(
|
||||
OperationResultCategory::CATEGORY_SUCCESS);
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
discovery_metadata_params->operation_result_with_mediums = {operation_result};
|
||||
analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
{operation_result});
|
||||
discovery_metadata_params.get());
|
||||
|
||||
analytics_recorder.OnConnectionRequestSent(endpoint_id_0);
|
||||
analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0);
|
||||
@@ -583,9 +612,13 @@ TEST(AnalyticsRecorderTest,
|
||||
operation_result.set_result_code(OperationResultCode::DETAIL_SUCCESS);
|
||||
operation_result.set_result_category(
|
||||
OperationResultCategory::CATEGORY_SUCCESS);
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
advertising_metadata_params->operation_result_with_mediums = {
|
||||
operation_result};
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
{operation_result});
|
||||
advertising_metadata_params.get());
|
||||
// Ignored by local.
|
||||
analytics_recorder.OnConnectionRequestReceived(endpoint_id_0);
|
||||
analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0);
|
||||
@@ -654,9 +687,12 @@ TEST(AnalyticsRecorderTest,
|
||||
operation_result.set_result_code(OperationResultCode::DETAIL_SUCCESS);
|
||||
operation_result.set_result_category(
|
||||
OperationResultCategory::CATEGORY_SUCCESS);
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
discovery_metadata_params->operation_result_with_mediums = {operation_result};
|
||||
analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
{operation_result});
|
||||
discovery_metadata_params.get());
|
||||
|
||||
// Ignored by local.
|
||||
analytics_recorder.OnConnectionRequestSent(endpoint_id_0);
|
||||
@@ -721,9 +757,13 @@ TEST(AnalyticsRecorderTest, SuccessfulIncomingConnectionAttempt) {
|
||||
operation_result.set_result_code(OperationResultCode::DETAIL_SUCCESS);
|
||||
operation_result.set_result_category(
|
||||
OperationResultCategory::CATEGORY_SUCCESS);
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
advertising_metadata_params->operation_result_with_mediums = {
|
||||
operation_result};
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
{operation_result});
|
||||
advertising_metadata_params.get());
|
||||
|
||||
auto connections_attempt_metadata_params =
|
||||
std::make_unique<ConnectionAttemptMetadataParams>();
|
||||
@@ -807,8 +847,11 @@ TEST(AnalyticsRecorderTest,
|
||||
/*wifi_hotspot_enabled*/ false, /*max_wifi_tx_speed*/ 0,
|
||||
/*max_wifi_rx_speed*/ 0, /*channel_width*/ 0,
|
||||
OperationResultCode::CONNECTIVITY_BT_CLIENT_SOCKET_CREATION_FAILURE);
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
discovery_metadata_params.get());
|
||||
analytics_recorder.OnConnectionRequestSent(endpoint_id);
|
||||
analytics_recorder.OnOutgoingConnectionAttempt(
|
||||
endpoint_id, INITIAL, BLUETOOTH, RESULT_ERROR, absl::Duration{},
|
||||
@@ -875,8 +918,11 @@ TEST(AnalyticsRecorderTest, UnfinishedEstablishedConnectionsAddedAsUnfinished) {
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnConnectionEstablished(endpoint_id, BLUETOOTH,
|
||||
connection_token);
|
||||
analytics_recorder.OnConnectionClosed(
|
||||
@@ -939,8 +985,11 @@ TEST(AnalyticsRecorderTest, OutgoingPayloadUpgraded) {
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnConnectionEstablished(endpoint_id, BLUETOOTH,
|
||||
connection_token);
|
||||
analytics_recorder.OnOutgoingPayloadStarted(
|
||||
@@ -1038,8 +1087,11 @@ TEST(AnalyticsRecorderTest, UpgradeAttemptWorks) {
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
|
||||
analytics_recorder.OnBandwidthUpgradeStarted(endpoint_id, BLE, WIFI_LAN,
|
||||
INCOMING, connection_token);
|
||||
@@ -1187,8 +1239,11 @@ TEST(AnalyticsRecorderTest, SetErrorCodeFieldsCorrectly) {
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{WEB_RTC}, {});
|
||||
/*mediums=*/{WEB_RTC},
|
||||
discovery_metadata_params.get());
|
||||
|
||||
ErrorCodeParams error_code_params = ErrorCodeRecorder::BuildErrorCodeParams(
|
||||
WEB_RTC, DISCONNECT, DISCONNECT_NETWORK_FAILED,
|
||||
@@ -1215,8 +1270,11 @@ TEST(AnalyticsRecorderTest, SetErrorCodeFieldsCorrectlyForUnknownDescription) {
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLUETOOTH}, {});
|
||||
/*mediums=*/{BLUETOOTH},
|
||||
discovery_metadata_params.get());
|
||||
|
||||
ErrorCodeParams error_code_params;
|
||||
// Skip setting error_code_params.description
|
||||
@@ -1246,8 +1304,11 @@ TEST(AnalyticsRecorderTest, SetErrorCodeFieldsCorrectlyForCommonError) {
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLUETOOTH}, {});
|
||||
/*mediums=*/{BLUETOOTH},
|
||||
discovery_metadata_params.get());
|
||||
|
||||
ErrorCodeParams error_code_params = ErrorCodeRecorder::BuildErrorCodeParams(
|
||||
BLUETOOTH, START_DISCOVERING, INVALID_PARAMETER,
|
||||
@@ -1376,8 +1437,11 @@ TEST(AnalyticsRecorderTest,
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnConnectionRequestReceived(endpoint_id_0);
|
||||
analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0);
|
||||
analytics_recorder.OnRemoteEndpointAccepted(endpoint_id_0);
|
||||
@@ -1481,8 +1545,11 @@ TEST(AnalyticsRecorderTest,
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams();
|
||||
analytics_recorder.OnStartDiscovery(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
discovery_metadata_params.get());
|
||||
|
||||
analytics_recorder.OnConnectionRequestSent(endpoint_id_0);
|
||||
analytics_recorder.OnLocalEndpointAccepted(endpoint_id_0);
|
||||
@@ -1589,7 +1656,10 @@ TEST(AnalyticsRecorderTest, ClearcActiveConnectionsAfterSessionWasLogged) {
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums, {});
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(strategy, mediums,
|
||||
advertising_metadata_params.get());
|
||||
|
||||
analytics_recorder.OnConnectionEstablished(endpoint_id, BLUETOOTH,
|
||||
connection_token);
|
||||
@@ -1696,8 +1766,11 @@ TEST(AnalyticsRecorderTest,
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
|
||||
analytics_recorder.OnBandwidthUpgradeStarted(endpoint_id, BLE, WIFI_LAN,
|
||||
INCOMING, connection_token);
|
||||
@@ -1867,8 +1940,11 @@ TEST(AnalyticsRecorderTest,
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLUETOOTH}, {});
|
||||
/*mediums=*/{BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
|
||||
// LogSession
|
||||
@@ -1891,7 +1967,9 @@ TEST(AnalyticsRecorderTest,
|
||||
// LogSession again
|
||||
CountDownLatch new_client_session_done_latch(1);
|
||||
event_logger.SetClientSessionDoneLatch(new_client_session_done_latch);
|
||||
analytics_recorder.OnStartAdvertising(strategy, /*mediums=*/{BLUETOOTH}, {});
|
||||
|
||||
analytics_recorder.OnStartAdvertising(strategy, /*mediums=*/{BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
|
||||
analytics_recorder.LogSession();
|
||||
@@ -1912,8 +1990,11 @@ TEST(AnalyticsRecorderTest,
|
||||
|
||||
// Via OnStartAdvertising, current_strategy_session_is set in
|
||||
// UpdateStrategySessionLocked.
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
|
||||
// LogSession
|
||||
@@ -1949,8 +2030,8 @@ TEST(AnalyticsRecorderTest,
|
||||
new_start_client_session_done_latch.Await(kDefaultTimeout).result());
|
||||
|
||||
// LogSession again
|
||||
// - if current_strategy_session_ is reset, the same strategy_session_proto
|
||||
// will be logged.
|
||||
// - if current_strategy_session_ is reset, the same
|
||||
// strategy_session_proto will be logged.
|
||||
CountDownLatch new_client_session_done_latch(1);
|
||||
event_logger.SetClientSessionDoneLatch(new_client_session_done_latch);
|
||||
analytics_recorder.LogSession();
|
||||
@@ -1968,9 +2049,12 @@ TEST(AnalyticsRecorderTest,
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLUETOOTH},
|
||||
{}); // set current_advertising_phase_
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(
|
||||
connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLUETOOTH},
|
||||
advertising_metadata_params.get()); // set current_advertising_phase_
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
|
||||
// LogSession
|
||||
@@ -2049,10 +2133,13 @@ TEST(AnalyticsRecorderTest,
|
||||
AnalyticsRecorder analytics_recorder(&event_logger,
|
||||
/*no_record_time_millis=*/true);
|
||||
|
||||
auto discovery_metadata_params =
|
||||
analytics_recorder.BuildDiscoveryMetadataParams(
|
||||
/*is_extended_advertisement_supported*/ true,
|
||||
/*connected_ap_frequency*/ 1, /*is_nfc_available=*/false);
|
||||
analytics_recorder.OnStartDiscovery(
|
||||
strategy, {BLUETOOTH}, {}, /*is_extended_advertisement_supported=*/true,
|
||||
/*connected_ap_frequency=*/1,
|
||||
/*is_nfc_available=*/false); // set current_discovery_phase_
|
||||
strategy, {BLUETOOTH},
|
||||
discovery_metadata_params.get()); // set current_discovery_phase_
|
||||
analytics_recorder.OnStopDiscovery();
|
||||
analytics_recorder.OnEndpointFound(BLUETOOTH);
|
||||
|
||||
@@ -2136,8 +2223,11 @@ TEST(AnalyticsRecorderOnConnectionClosedTest,
|
||||
|
||||
// via OnStartAdvertising, current_strategy_session_ is set in
|
||||
// UpdateStrategySessionLocked.
|
||||
auto advertising_metadata_params =
|
||||
analytics_recorder.BuildAdvertisingMetadataParams();
|
||||
analytics_recorder.OnStartAdvertising(connections::Strategy::kP2pStar,
|
||||
/*mediums=*/{BLE, BLUETOOTH}, {});
|
||||
/*mediums=*/{BLE, BLUETOOTH},
|
||||
advertising_metadata_params.get());
|
||||
analytics_recorder.OnStopAdvertising();
|
||||
|
||||
// LogSession
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright 2024 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// https://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef ANALYTICS_DISCOVERY_METADATA_PARAMS_H_
|
||||
#define ANALYTICS_DISCOVERY_METADATA_PARAMS_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "internal/proto/analytics/connections_log.pb.h"
|
||||
|
||||
namespace nearby {
|
||||
|
||||
// A struct to construct DiscoveryMetadata for the analytics recorder.
|
||||
struct DiscoveryMetadataParams {
|
||||
bool is_extended_advertisement_supported = false;
|
||||
int connected_ap_frequency = 0;
|
||||
bool is_nfc_available = false;
|
||||
std::vector<location::nearby::analytics::proto::ConnectionsLog::
|
||||
OperationResultWithMedium>
|
||||
operation_result_with_mediums = {};
|
||||
};
|
||||
|
||||
} // namespace nearby
|
||||
|
||||
#endif // ANALYTICS_DISCOVERY_METADATA_PARAMS_H_
|
||||
@@ -35,7 +35,9 @@
|
||||
#include "connections/advertising_options.h"
|
||||
#include "connections/connection_options.h"
|
||||
#include "connections/discovery_options.h"
|
||||
#include "connections/implementation/analytics/advertising_metadata_params.h"
|
||||
#include "connections/implementation/analytics/analytics_recorder.h"
|
||||
#include "connections/implementation/analytics/discovery_metadata_params.h"
|
||||
#include "connections/implementation/flags/nearby_connections_feature_flags.h"
|
||||
#include "connections/listeners.h"
|
||||
#include "connections/medium_selector.h"
|
||||
@@ -240,9 +242,12 @@ void ClientProxy::StartedAdvertising(
|
||||
|
||||
const std::vector<location::nearby::proto::connections::Medium> medium_vector(
|
||||
mediums.begin(), mediums.end());
|
||||
std::unique_ptr<AdvertisingMetadataParams> advertising_metadata_params;
|
||||
advertising_metadata_params =
|
||||
GetAnalyticsRecorder().BuildAdvertisingMetadataParams();
|
||||
// TODO(edwinwu): Implement to pass real values for OperatoinResultWithMedium.
|
||||
analytics_recorder_->OnStartAdvertising(strategy, medium_vector, {}, false,
|
||||
0);
|
||||
analytics_recorder_->OnStartAdvertising(strategy, medium_vector,
|
||||
advertising_metadata_params.get());
|
||||
}
|
||||
|
||||
void ClientProxy::StoppedAdvertising() {
|
||||
@@ -368,8 +373,13 @@ void ClientProxy::StartedDiscovery(
|
||||
|
||||
const std::vector<location::nearby::proto::connections::Medium> medium_vector(
|
||||
mediums.begin(), mediums.end());
|
||||
std::unique_ptr<DiscoveryMetadataParams> discovery_metadata_params;
|
||||
discovery_metadata_params =
|
||||
GetAnalyticsRecorder().BuildDiscoveryMetadataParams();
|
||||
// TODO(edwinwu): Implement to pass real values for OperatoinResultWithMedium.
|
||||
analytics_recorder_->OnStartDiscovery(strategy, medium_vector, {}, false, 0);
|
||||
analytics_recorder_->OnStartDiscovery(
|
||||
strategy, medium_vector,
|
||||
discovery_metadata_params.get());
|
||||
}
|
||||
|
||||
void ClientProxy::StoppedDiscovery() {
|
||||
|
||||
Reference in New Issue
Block a user