123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #ifndef TEST_PEER_SCENARIO_PEER_SCENARIO_H_
- #define TEST_PEER_SCENARIO_PEER_SCENARIO_H_
- #include <list>
- #include <vector>
- #include "api/test/time_controller.h"
- #include "test/gtest.h"
- #include "test/logging/log_writer.h"
- #include "test/network/network_emulation_manager.h"
- #include "test/peer_scenario/peer_scenario_client.h"
- #include "test/peer_scenario/signaling_route.h"
- #include "test/scenario/stats_collection.h"
- #include "test/scenario/video_frame_matcher.h"
- namespace webrtc {
- namespace test {
- class PeerScenario {
- public:
-
-
-
- explicit PeerScenario(const testing::TestInfo& test_info,
- TimeMode mode = TimeMode::kSimulated);
- explicit PeerScenario(std::string file_name,
- TimeMode mode = TimeMode::kSimulated);
- explicit PeerScenario(
- std::unique_ptr<LogWriterFactoryInterface> log_writer_manager,
- TimeMode mode = TimeMode::kSimulated);
- NetworkEmulationManagerImpl* net() { return &net_; }
-
-
-
- PeerScenarioClient* CreateClient(PeerScenarioClient::Config config);
- PeerScenarioClient* CreateClient(std::string name,
- PeerScenarioClient::Config config);
-
- SignalingRoute ConnectSignaling(PeerScenarioClient* caller,
- PeerScenarioClient* callee,
- std::vector<EmulatedNetworkNode*> send_link,
- std::vector<EmulatedNetworkNode*> ret_link);
-
-
-
-
- void SimpleConnection(PeerScenarioClient* caller,
- PeerScenarioClient* callee,
- std::vector<EmulatedNetworkNode*> send_link,
- std::vector<EmulatedNetworkNode*> ret_link);
-
-
-
- void AttachVideoQualityAnalyzer(VideoQualityAnalyzer* analyzer,
- VideoTrackInterface* send_track,
- PeerScenarioClient* receiver);
-
- bool WaitAndProcess(std::atomic<bool>* event,
- TimeDelta max_duration = TimeDelta::Seconds(5));
-
- void ProcessMessages(TimeDelta duration);
- private:
-
- struct PeerVideoQualityPair {
- public:
- PeerVideoQualityPair(Clock* capture_clock, VideoQualityAnalyzer* analyzer)
- : matcher_({analyzer->Handler()}),
- capture_tap_(capture_clock, &matcher_),
- decode_tap_(capture_clock, &matcher_, 0) {}
- VideoFrameMatcher matcher_;
- CapturedFrameTap capture_tap_;
- DecodedFrameTap decode_tap_;
- };
- Clock* clock() { return Clock::GetRealTimeClock(); }
- std::unique_ptr<LogWriterFactoryInterface> GetLogWriterFactory(
- std::string name);
- const std::unique_ptr<LogWriterFactoryInterface> log_writer_manager_;
- NetworkEmulationManagerImpl net_;
- rtc::Thread* const signaling_thread_;
- std::list<PeerVideoQualityPair> video_quality_pairs_;
- std::list<PeerScenarioClient> peer_clients_;
- };
- }
- }
- #endif
|