/* * Copyright 2016 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.
*/
#ifdefined(WEBRTC_WIN) // clang-format off #include <windows.h> // Must come first. #include <mmsystem.h> // clang-format on #endif
// Noop on all platforms except Windows, where it turns on high precision // multimedia timers which increases the precision of TimeMillis() while in // scope. class EnableHighResTimers { public: #if !defined(WEBRTC_WIN)
EnableHighResTimers() {} #else
EnableHighResTimers() : enabled_(timeBeginPeriod(1) == TIMERR_NOERROR) {}
~EnableHighResTimers() { if (enabled_)
timeEndPeriod(1);
}
private: constbool enabled_; #endif
};
} // namespace
// This task needs to be run manually due to the slowness of some of our bots. // TODO(tommi): Can we run this on the perf bots?
TEST(TaskQueueTest, DISABLED_PostDelayedHighRes) {
EnableHighResTimers high_res_scope;
uint32_t start = rtc::TimeMillis();
queue.PostDelayedTask(
[&event, &queue] {
EXPECT_TRUE(queue.IsCurrent());
event.Set();
},
TimeDelta::Millis(3));
EXPECT_TRUE(event.Wait(TimeDelta::Seconds(1)));
uint32_t end = rtc::TimeMillis(); // These tests are a little relaxed due to how "powerful" our test bots can // be. Most recently we've seen windows bots fire the callback after 94-99ms, // which is why we have a little bit of leeway backwards as well.
EXPECT_GE(end - start, 3u);
EXPECT_NEAR(end - start, 3, 3u);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.