Add collection of usage signatures on PeerConnections
This generates a number that represent a set of bits that indicates how a PeerConnection has been used over time. Bug: chromium:718508 Change-Id: I6df177684c50bc825bc41ea97996574292084d41 Reviewed-on: https://webrtc-review.googlesource.com/79823 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org> Commit-Queue: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23471}
This commit is contained in:
committed by
Commit Bot
parent
879f5a34a5
commit
8ebba7420c
@ -173,6 +173,14 @@ int FindFirstMediaStatsIndexByKind(
|
||||
return -1;
|
||||
}
|
||||
|
||||
int MakeUsageFingerprint(std::set<PeerConnection::UsageEvent> events) {
|
||||
int signature = 0;
|
||||
for (const auto it : events) {
|
||||
signature |= static_cast<int>(it);
|
||||
}
|
||||
return signature;
|
||||
}
|
||||
|
||||
class SignalingMessageReceiver {
|
||||
public:
|
||||
virtual void ReceiveSdpMessage(SdpType type, const std::string& msg) = 0;
|
||||
@ -4467,6 +4475,38 @@ TEST_P(PeerConnectionIntegrationInteropTest,
|
||||
ASSERT_TRUE(ExpectNewFrames(media_expectations));
|
||||
}
|
||||
|
||||
// Test getting the usage fingerprint for a simple test case.
|
||||
TEST_P(PeerConnectionIntegrationTest, UsageFingerprintHistogram) {
|
||||
ASSERT_TRUE(CreatePeerConnectionWrappers());
|
||||
ConnectFakeSignaling();
|
||||
// Register UMA observer before signaling begins.
|
||||
rtc::scoped_refptr<webrtc::FakeMetricsObserver> caller_observer =
|
||||
new rtc::RefCountedObject<webrtc::FakeMetricsObserver>();
|
||||
caller()->pc()->RegisterUMAObserver(caller_observer);
|
||||
rtc::scoped_refptr<webrtc::FakeMetricsObserver> callee_observer =
|
||||
new rtc::RefCountedObject<webrtc::FakeMetricsObserver>();
|
||||
callee()->pc()->RegisterUMAObserver(callee_observer);
|
||||
caller()->AddAudioTrack();
|
||||
caller()->AddVideoTrack();
|
||||
caller()->CreateAndSetAndSignalOffer();
|
||||
ASSERT_TRUE_WAIT(DtlsConnected(), kDefaultTimeout);
|
||||
caller()->pc()->Close();
|
||||
callee()->pc()->Close();
|
||||
int expected_fingerprint = MakeUsageFingerprint(
|
||||
{PeerConnection::UsageEvent::AUDIO_ADDED,
|
||||
PeerConnection::UsageEvent::VIDEO_ADDED,
|
||||
PeerConnection::UsageEvent::SET_LOCAL_DESCRIPTION_CALLED,
|
||||
PeerConnection::UsageEvent::SET_REMOTE_DESCRIPTION_CALLED,
|
||||
PeerConnection::UsageEvent::CANDIDATE_COLLECTED,
|
||||
PeerConnection::UsageEvent::REMOTE_CANDIDATE_ADDED,
|
||||
PeerConnection::UsageEvent::ICE_STATE_CONNECTED,
|
||||
PeerConnection::UsageEvent::CLOSE_CALLED});
|
||||
EXPECT_TRUE(caller_observer->ExpectOnlySingleEnumCount(
|
||||
webrtc::kEnumCounterUsagePattern, expected_fingerprint));
|
||||
EXPECT_TRUE(callee_observer->ExpectOnlySingleEnumCount(
|
||||
webrtc::kEnumCounterUsagePattern, expected_fingerprint));
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
PeerConnectionIntegrationTest,
|
||||
PeerConnectionIntegrationInteropTest,
|
||||
|
||||
Reference in New Issue
Block a user