Commit 75c633c5 authored by Josh Nohle's avatar Josh Nohle Committed by Commit Bot

[Nearby] Add metrics to track discovery counts and timing

For each discovery session, report the number of devices
  * discovered,
  * lost, and
  * present when a send starts.

Also, track the number of milliseconds between a the start of a
discovery session and
  * discovery of the first share target,
  * discovery of any share target, and
  * the start of a transfer.

Manually verified using chrome://histograms

Bug: 1105579
Change-Id: Ib998663d968fadcfb016c580ecf9119eefb5f0c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2530169Reviewed-by: default avatarJames Vecore <vecore@google.com>
Reviewed-by: default avatarJesse Doherty <jwd@chromium.org>
Reviewed-by: default avatarRyan Hansberry <hansberry@chromium.org>
Commit-Queue: Ryan Hansberry <hansberry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#827054}
parent 8be5b6f8
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include "base/callback_helpers.h" #include "base/callback_helpers.h"
#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_functions.h"
#include "base/optional.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "chrome/browser/nearby_sharing/attachment.h" #include "chrome/browser/nearby_sharing/attachment.h"
#include "chrome/browser/nearby_sharing/logging/logging.h" #include "chrome/browser/nearby_sharing/logging/logging.h"
...@@ -107,6 +106,10 @@ NearbyPerSessionDiscoveryManager::~NearbyPerSessionDiscoveryManager() { ...@@ -107,6 +106,10 @@ NearbyPerSessionDiscoveryManager::~NearbyPerSessionDiscoveryManager() {
UnregisterSendSurface(); UnregisterSendSurface();
base::UmaHistogramEnumeration( base::UmaHistogramEnumeration(
"Nearby.Share.Discovery.FurthestDiscoveryProgress", furthest_progress_); "Nearby.Share.Discovery.FurthestDiscoveryProgress", furthest_progress_);
base::UmaHistogramCounts100(
"Nearby.Share.Discovery.NumShareTargets.Discovered", num_discovered_);
base::UmaHistogramCounts100("Nearby.Share.Discovery.NumShareTargets.Lost",
num_lost_);
} }
void NearbyPerSessionDiscoveryManager::OnTransferUpdate( void NearbyPerSessionDiscoveryManager::OnTransferUpdate(
...@@ -142,8 +145,21 @@ void NearbyPerSessionDiscoveryManager::OnTransferUpdate( ...@@ -142,8 +145,21 @@ void NearbyPerSessionDiscoveryManager::OnTransferUpdate(
void NearbyPerSessionDiscoveryManager::OnShareTargetDiscovered( void NearbyPerSessionDiscoveryManager::OnShareTargetDiscovered(
ShareTarget share_target) { ShareTarget share_target) {
// Update metrics.
UpdateFurthestDiscoveryProgressIfNecessary( UpdateFurthestDiscoveryProgressIfNecessary(
DiscoveryProgress::kDiscoveredShareTargetNothingSent); DiscoveryProgress::kDiscoveredShareTargetNothingSent);
if (!base::Contains(discovered_share_targets_, share_target.id)) {
++num_discovered_;
if (num_discovered_ == 1) {
base::UmaHistogramMediumTimes(
"Nearby.Share.Discovery.Delay.FromStartDiscoveryToFirstDiscovery",
base::TimeTicks::Now() - *discovery_start_time_);
}
base::UmaHistogramMediumTimes(
"Nearby.Share.Discovery.Delay.FromStartDiscoveryToAnyDiscovery",
base::TimeTicks::Now() - *discovery_start_time_);
}
base::InsertOrAssign(discovered_share_targets_, share_target.id, base::InsertOrAssign(discovered_share_targets_, share_target.id,
share_target); share_target);
share_target_listener_->OnShareTargetDiscovered(share_target); share_target_listener_->OnShareTargetDiscovered(share_target);
...@@ -151,6 +167,9 @@ void NearbyPerSessionDiscoveryManager::OnShareTargetDiscovered( ...@@ -151,6 +167,9 @@ void NearbyPerSessionDiscoveryManager::OnShareTargetDiscovered(
void NearbyPerSessionDiscoveryManager::OnShareTargetLost( void NearbyPerSessionDiscoveryManager::OnShareTargetLost(
ShareTarget share_target) { ShareTarget share_target) {
if (base::Contains(discovered_share_targets_, share_target.id)) {
++num_lost_;
}
discovered_share_targets_.erase(share_target.id); discovered_share_targets_.erase(share_target.id);
share_target_listener_->OnShareTargetLost(share_target); share_target_listener_->OnShareTargetLost(share_target);
} }
...@@ -158,6 +177,8 @@ void NearbyPerSessionDiscoveryManager::OnShareTargetLost( ...@@ -158,6 +177,8 @@ void NearbyPerSessionDiscoveryManager::OnShareTargetLost(
void NearbyPerSessionDiscoveryManager::StartDiscovery( void NearbyPerSessionDiscoveryManager::StartDiscovery(
mojo::PendingRemote<nearby_share::mojom::ShareTargetListener> listener, mojo::PendingRemote<nearby_share::mojom::ShareTargetListener> listener,
StartDiscoveryCallback callback) { StartDiscoveryCallback callback) {
discovery_start_time_ = base::TimeTicks::Now();
// Starting discovery again closes any previous discovery session. // Starting discovery again closes any previous discovery session.
share_target_listener_.reset(); share_target_listener_.reset();
share_target_listener_.Bind(std::move(listener)); share_target_listener_.Bind(std::move(listener));
...@@ -216,6 +237,13 @@ void NearbyPerSessionDiscoveryManager::SelectShareTarget( ...@@ -216,6 +237,13 @@ void NearbyPerSessionDiscoveryManager::SelectShareTarget(
transfer_update_listener_.BindNewPipeAndPassReceiver(); transfer_update_listener_.BindNewPipeAndPassReceiver();
transfer_update_listener_.reset_on_disconnect(); transfer_update_listener_.reset_on_disconnect();
base::UmaHistogramCounts100(
"Nearby.Share.Discovery.NumShareTargets.PresentWhenSendStarts",
discovered_share_targets_.size());
base::UmaHistogramMediumTimes(
"Nearby.Share.Discovery.Delay.FromStartDiscoveryToStartSend",
base::TimeTicks::Now() - *discovery_start_time_);
NearbySharingService::StatusCodes status = NearbySharingService::StatusCodes status =
nearby_sharing_service_->SendAttachments(iter->second, nearby_sharing_service_->SendAttachments(iter->second,
std::move(attachments_)); std::move(attachments_));
......
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#include "base/containers/flat_map.h" #include "base/containers/flat_map.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/optional.h"
#include "base/time/time.h"
#include "base/unguessable_token.h" #include "base/unguessable_token.h"
#include "chrome/browser/nearby_sharing/attachment.h" #include "chrome/browser/nearby_sharing/attachment.h"
#include "chrome/browser/nearby_sharing/nearby_sharing_service.h" #include "chrome/browser/nearby_sharing/nearby_sharing_service.h"
...@@ -85,6 +87,15 @@ class NearbyPerSessionDiscoveryManager ...@@ -85,6 +87,15 @@ class NearbyPerSessionDiscoveryManager
DiscoveryProgress furthest_progress_ = DiscoveryProgress furthest_progress_ =
DiscoveryProgress::kDiscoveryNotAttempted; DiscoveryProgress::kDiscoveryNotAttempted;
// Used for metrics. Tracks the time when StartDiscovery() is called, or
// base::nullopt if never called.
base::Optional<base::TimeTicks> discovery_start_time_;
// Used for metrics. Tracks the total number devices discovered and lost in a
// given discovery session.
size_t num_discovered_ = 0;
size_t num_lost_ = 0;
base::WeakPtrFactory<NearbyPerSessionDiscoveryManager> weak_ptr_factory_{ base::WeakPtrFactory<NearbyPerSessionDiscoveryManager> weak_ptr_factory_{
this}; this};
}; };
......
...@@ -9227,6 +9227,21 @@ reviews. Googlers can read more about this at go/gwsq-gerrit. ...@@ -9227,6 +9227,21 @@ reviews. Googlers can read more about this at go/gwsq-gerrit.
</token> </token>
</histogram> </histogram>
<histogram name="Nearby.Share.Discovery.Delay.FromStartDiscoveryTo{EndState}"
units="ms" expires_after="2021-08-19">
<owner>nohle@chromium.org</owner>
<owner>better-together-dev@google.com</owner>
<summary>
Records the delay between the start of the discovery session and {EndState}.
</summary>
<token key="EndState">
<variant name="AnyDiscovery" summary="the discovery of any share target"/>
<variant name="FirstDiscovery"
summary="the discovery of the first share target"/>
<variant name="StartSend" summary="the start of a transfer"/>
</token>
</histogram>
<histogram name="Nearby.Share.Discovery.FurthestDiscoveryProgress" <histogram name="Nearby.Share.Discovery.FurthestDiscoveryProgress"
enum="NearbyShareDiscoveryProgress" expires_after="2021-08-19"> enum="NearbyShareDiscoveryProgress" expires_after="2021-08-19">
<owner>nohle@chromium.org</owner> <owner>nohle@chromium.org</owner>
...@@ -9249,6 +9264,21 @@ reviews. Googlers can read more about this at go/gwsq-gerrit. ...@@ -9249,6 +9264,21 @@ reviews. Googlers can read more about this at go/gwsq-gerrit.
</summary> </summary>
</histogram> </histogram>
<histogram name="Nearby.Share.Discovery.NumShareTargets.{Variation}"
units="share targets" expires_after="2021-08-19">
<owner>nohle@chromium.org</owner>
<owner>better-together-dev@google.com</owner>
<summary>
Records the number of share targets {Variation} in a single discovery
session. Emitted once during the discovery session.
</summary>
<token key="Variation">
<variant name="Discovered" summary="discovered"/>
<variant name="Lost" summary="lost"/>
<variant name="PresentWhenSendStarts" summary="present when a send starts"/>
</token>
</histogram>
<histogram name="Nearby.Share.Discovery.{Operation}" <histogram name="Nearby.Share.Discovery.{Operation}"
enum="NearbyShareServiceStatusCode" expires_after="2021-08-19"> enum="NearbyShareServiceStatusCode" expires_after="2021-08-19">
<owner>nohle@chromium.org</owner> <owner>nohle@chromium.org</owner>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment