e.g all files in the api/test folder not including subdirectories Bug: webrtc:42226242 Change-Id: I18d74a18f8feec41eb252faa9acfffd1d6f45ce4 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/359420 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Dor Hen <dorhen@meta.com> Cr-Commit-Position: refs/heads/main@{#42773}
106 lines
4.6 KiB
C++
106 lines
4.6 KiB
C++
/*
|
|
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
#ifndef API_TEST_PEERCONNECTION_QUALITY_TEST_FIXTURE_H_
|
|
#define API_TEST_PEERCONNECTION_QUALITY_TEST_FIXTURE_H_
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <functional>
|
|
#include <memory>
|
|
|
|
#include "absl/strings/string_view.h"
|
|
#include "api/test/pclf/media_quality_test_params.h"
|
|
#include "api/test/pclf/peer_configurer.h"
|
|
#include "api/test/stats_observer_interface.h"
|
|
#include "api/test/track_id_stream_info_map.h"
|
|
#include "api/units/time_delta.h"
|
|
|
|
namespace webrtc {
|
|
namespace webrtc_pc_e2e {
|
|
|
|
// API is in development. Can be changed/removed without notice.
|
|
class PeerConnectionE2EQualityTestFixture {
|
|
public:
|
|
// Represent an entity that will report quality metrics after test.
|
|
class QualityMetricsReporter : public StatsObserverInterface {
|
|
public:
|
|
virtual ~QualityMetricsReporter() = default;
|
|
|
|
// Invoked by framework after peer connection factory and peer connection
|
|
// itself will be created but before offer/answer exchange will be started.
|
|
// `test_case_name` is name of test case, that should be used to report all
|
|
// metrics.
|
|
// `reporter_helper` is a pointer to a class that will allow track_id to
|
|
// stream_id matching. The caller is responsible for ensuring the
|
|
// TrackIdStreamInfoMap will be valid from Start() to
|
|
// StopAndReportResults().
|
|
virtual void Start(absl::string_view test_case_name,
|
|
const TrackIdStreamInfoMap* reporter_helper) = 0;
|
|
|
|
// Invoked by framework after call is ended and peer connection factory and
|
|
// peer connection are destroyed.
|
|
virtual void StopAndReportResults() = 0;
|
|
};
|
|
|
|
// Represents single participant in call and can be used to perform different
|
|
// in-call actions. Might be extended in future.
|
|
class PeerHandle {
|
|
public:
|
|
virtual ~PeerHandle() = default;
|
|
};
|
|
|
|
virtual ~PeerConnectionE2EQualityTestFixture() = default;
|
|
|
|
// Add activity that will be executed on the best effort at least after
|
|
// `target_time_since_start` after call will be set up (after offer/answer
|
|
// exchange, ICE gathering will be done and ICE candidates will passed to
|
|
// remote side). `func` param is amount of time spent from the call set up.
|
|
virtual void ExecuteAt(TimeDelta target_time_since_start,
|
|
std::function<void(TimeDelta)> func) = 0;
|
|
// Add activity that will be executed every `interval` with first execution
|
|
// on the best effort at least after `initial_delay_since_start` after call
|
|
// will be set up (after all participants will be connected). `func` param is
|
|
// amount of time spent from the call set up.
|
|
virtual void ExecuteEvery(TimeDelta initial_delay_since_start,
|
|
TimeDelta interval,
|
|
std::function<void(TimeDelta)> func) = 0;
|
|
|
|
// Add stats reporter entity to observe the test.
|
|
virtual void AddQualityMetricsReporter(
|
|
std::unique_ptr<QualityMetricsReporter> quality_metrics_reporter) = 0;
|
|
|
|
// Add a new peer to the call and return an object through which caller
|
|
// can configure peer's behavior.
|
|
// `network_dependencies` are used to provide networking for peer's peer
|
|
// connection. Members must be non-null.
|
|
// `configurer` function will be used to configure peer in the call.
|
|
virtual PeerHandle* AddPeer(std::unique_ptr<PeerConfigurer> configurer) = 0;
|
|
|
|
// Runs the media quality test, which includes setting up the call with
|
|
// configured participants, running it according to provided `run_params` and
|
|
// terminating it properly at the end. During call duration media quality
|
|
// metrics are gathered, which are then reported to stdout and (if configured)
|
|
// to the json/protobuf output file through the WebRTC perf test results
|
|
// reporting system.
|
|
virtual void Run(RunParams run_params) = 0;
|
|
|
|
// Returns real test duration - the time of test execution measured during
|
|
// test. Client must call this method only after test is finished (after
|
|
// Run(...) method returned). Test execution time is time from end of call
|
|
// setup (offer/answer, ICE candidates exchange done and ICE connected) to
|
|
// start of call tear down (PeerConnection closed).
|
|
virtual TimeDelta GetRealTestDuration() const = 0;
|
|
};
|
|
|
|
} // namespace webrtc_pc_e2e
|
|
} // namespace webrtc
|
|
|
|
#endif // API_TEST_PEERCONNECTION_QUALITY_TEST_FIXTURE_H_
|