Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1307)

Unified Diff: chrome/browser/extensions/api/cast_streaming/performance_test.cc

Issue 229503002: Cast: Make castv2 mirroring performance test run again (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments addressed Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/cast_streaming/performance_test.cc
diff --git a/chrome/browser/extensions/api/cast_streaming/performance_test.cc b/chrome/browser/extensions/api/cast_streaming/performance_test.cc
index 35e87e1985b058a7bb83c267c33b0f1aabc8e23c..4c6d707c71898bb0a248fd2b2ea6c5ea084c2740 100644
--- a/chrome/browser/extensions/api/cast_streaming/performance_test.cc
+++ b/chrome/browser/extensions/api/cast_streaming/performance_test.cc
@@ -12,6 +12,7 @@
#endif
#include "base/strings/stringprintf.h"
#include "base/test/trace_event_analyzer.h"
+#include "base/time/default_tick_clock.h"
#include "base/win/windows_version.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -72,6 +73,30 @@ enum TestFlags {
k60fps = 1 << 5, // use 60 fps video
kProxyWifi = 1 << 6, // Run UDP through UDPProxy wifi profile
kProxyEvil = 1 << 7, // Run UDP through UDPProxy evil profile
+ kSlowClock = 1 << 8, // Receiver clock is 10 seconds slow
+ kFastClock = 1 << 9, // Receiver clock is 10 seconds fast
+};
+
+class SkewedTickClock : public base::DefaultTickClock {
+ public:
+ explicit SkewedTickClock(const base::TimeDelta& delta) : delta_(delta) {
+ }
+ virtual base::TimeTicks NowTicks() OVERRIDE {
+ return DefaultTickClock::NowTicks() + delta_;
+ }
+ private:
+ base::TimeDelta delta_;
+};
+
+class SkewedCastEnvironment : public media::cast::StandaloneCastEnvironment {
+ public:
+ explicit SkewedCastEnvironment(const base::TimeDelta& delta) :
+ StandaloneCastEnvironment() {
+ clock_.reset(new SkewedTickClock(delta));
+ }
+
+ protected:
+ virtual ~SkewedCastEnvironment() {}
};
// We log one of these for each call to OnAudioFrame/OnVideoFrame.
@@ -122,7 +147,7 @@ class MeanAndError {
true);
} else {
LOG(ERROR) << "Not enough events for "
- << measurement << " " << modifier << " " << trace;
+ << measurement << modifier << " " << trace;
}
}
@@ -291,6 +316,10 @@ class CastV2PerformanceTest
suffix += "_wifi";
if (HasFlag(kProxyEvil))
suffix += "_evil";
+ if (HasFlag(kSlowClock))
+ suffix += "_slow";
+ if (HasFlag(kFastClock))
+ suffix += "_fast";
return suffix;
}
@@ -367,7 +396,8 @@ class CastV2PerformanceTest
(trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_BEGIN) ||
trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_ASYNC_BEGIN) ||
trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_FLOW_BEGIN) ||
- trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_INSTANT));
+ trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_INSTANT) ||
+ trace_analyzer::Query::EventPhaseIs(TRACE_EVENT_PHASE_COMPLETE));
analyzer->FindEvents(query, events);
}
@@ -554,8 +584,15 @@ class CastV2PerformanceTest
// Start the in-process receiver that examines audio/video for the expected
// test patterns.
+ base::TimeDelta delta = base::TimeDelta::FromSeconds(0);
+ if (HasFlag(kFastClock)) {
+ delta = base::TimeDelta::FromSeconds(10);
+ }
+ if (HasFlag(kSlowClock)) {
+ delta = base::TimeDelta::FromSeconds(-10);
+ }
scoped_refptr<media::cast::StandaloneCastEnvironment> cast_environment(
- new media::cast::StandaloneCastEnvironment);
+ new SkewedCastEnvironment(delta));
TestPatternReceiver* const receiver =
new TestPatternReceiver(cast_environment, receiver_end_point);
receiver->Start();
@@ -598,16 +635,9 @@ class CastV2PerformanceTest
analyzer.reset(trace_analyzer::TraceAnalyzer::Create(json_events));
analyzer->AssociateAsyncBeginEndEvents();
- // Only one of these PrintResults should actually print something.
- // The printed result will be the average time between frames in the
- // browser window.
- MeanAndError sw_frame_data = AnalyzeTraceDistance(analyzer.get(),
- "TestFrameTickSW");
- MeanAndError frame_data = AnalyzeTraceDistance(analyzer.get(),
- "TestFrameTickGPU");
- if (frame_data.num_values == 0) {
- frame_data = sw_frame_data;
- }
+ MeanAndError frame_data = AnalyzeTraceDistance(
+ analyzer.get(),
+ TRACE_DISABLED_BY_DEFAULT("OnSwapCompositorFrame"));
EXPECT_GT(frame_data.num_values, 0UL);
// Lower is better.
frame_data.Print(test_name,
@@ -648,4 +678,6 @@ INSTANTIATE_TEST_CASE_P(
kUseGpu | k60fps,
kUseGpu | k24fps | kDisableVsync,
kUseGpu | k30fps | kProxyWifi,
- kUseGpu | k30fps | kProxyEvil));
+ kUseGpu | k30fps | kProxyEvil,
+ kUseGpu | k30fps | kSlowClock,
+ kUseGpu | k30fps | kFastClock));
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698