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

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: 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
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..1cf83d23f8b5027367fc47a7269c80279139cec7 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,19 @@ 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_;
};
// We log one of these for each call to OnAudioFrame/OnVideoFrame.
@@ -122,7 +136,7 @@ class MeanAndError {
true);
} else {
LOG(ERROR) << "Not enough events for "
- << measurement << " " << modifier << " " << trace;
+ << measurement << modifier << " " << trace;
}
}
@@ -291,6 +305,10 @@ class CastV2PerformanceTest
suffix += "_wifi";
if (HasFlag(kProxyEvil))
suffix += "_evil";
+ if (HasFlag(kSlowClock))
+ suffix += "_slow";
+ if (HasFlag(kFastClock))
+ suffix += "_fast";
return suffix;
}
@@ -367,7 +385,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 +573,16 @@ 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 media::cast::StandaloneCastEnvironment(
+ make_scoped_ptr<base::TickClock>(new SkewedTickClock(delta))));
TestPatternReceiver* const receiver =
new TestPatternReceiver(cast_environment, receiver_end_point);
receiver->Start();
@@ -582,7 +609,8 @@ class CastV2PerformanceTest
}
std::string json_events;
- ASSERT_TRUE(tracing::BeginTracing("test_fps,mirroring,cast_perf_test"));
+ ASSERT_TRUE(tracing::BeginTracing(
+ "renderer_host,mirroring,cast_perf_test"));
const std::string page_url = base::StringPrintf(
"performance%d.html?port=%d",
getfps(),
@@ -601,13 +629,14 @@ class CastV2PerformanceTest
// 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(),
+#ifdef OS_MACOSX
+ "RenderWidgetHostImpl::OnCompositorSurfaceBuffersSwapped"
+#else
+ "RenderWidgetHostImpl::OnSwapCompositorFrame"
+#endif
piman 2014/04/08 22:46:03 This hardcodes the knowledge that "on mac we don't
hubbe 2014/04/08 22:58:29 Now uses a special trace event which is normally O
+ );
EXPECT_GT(frame_data.num_values, 0UL);
// Lower is better.
frame_data.Print(test_name,
@@ -648,4 +677,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));

Powered by Google App Engine
This is Rietveld 408576698