From 0347f00a64e77635d70fa676d24a08c4eaf4dc6d Mon Sep 17 00:00:00 2001 From: Clemens Backes Date: Fri, 18 Oct 2019 15:50:42 +0200 Subject: [PATCH] Refactor platform tests to avoid deprecated API The old tasks API is deprecated and we want to remove it in 8.0. Thus, this CL refactors the platform tests to use the new TaskRunner-based API, and removes redundant tests. R=ahaas@chromium.org Bug: v8:9810 Change-Id: Ie53c90184639e77b3247228059fd88290b233e0c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1868619 Reviewed-by: Andreas Haas Commit-Queue: Clemens Backes Cr-Commit-Position: refs/heads/master@{#64412} --- .../libplatform/default-platform-unittest.cc | 218 +++++++----------- 1 file changed, 79 insertions(+), 139 deletions(-) diff --git a/test/unittests/libplatform/default-platform-unittest.cc b/test/unittests/libplatform/default-platform-unittest.cc index cb219a4737..54d4d30a9e 100644 --- a/test/unittests/libplatform/default-platform-unittest.cc +++ b/test/unittests/libplatform/default-platform-unittest.cc @@ -45,196 +45,136 @@ class DefaultPlatformWithMockTime : public DefaultPlatform { double DefaultPlatformWithMockTime::mock_time_ = 0.0; +template +class PlatformTest : public ::testing::Test { + public: + PlatformTest() : task_runner_(platform_.GetForegroundTaskRunner(isolate())) {} + + Isolate* isolate() { return reinterpret_cast(dummy_); } + + Platform* platform() { return &platform_; } + + // These methods take ownership of the task. Tests might still reference them, + // if the tasks are expected to still exist. + void CallOnForegroundThread(Task* task) { + task_runner_->PostTask(std::unique_ptr(task)); + } + void CallDelayedOnForegroundThread(Task* task, double delay_in_seconds) { + task_runner_->PostDelayedTask(std::unique_ptr(task), + delay_in_seconds); + } + void CallIdleOnForegroundThread(IdleTask* task) { + task_runner_->PostIdleTask(std::unique_ptr(task)); + } + + bool PumpMessageLoop() { return platform_.PumpMessageLoop(isolate()); } + + private: + Platform platform_; + InSequence in_sequence_; + std::shared_ptr task_runner_; + + int dummy_; +}; + +class DefaultPlatformTest : public PlatformTest {}; +class DefaultPlatformTestWithMockTime + : public PlatformTest {}; + } // namespace - -TEST(DefaultPlatformTest, PumpMessageLoop) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - DefaultPlatform platform; - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); +TEST_F(DefaultPlatformTest, PumpMessageLoop) { + EXPECT_FALSE(platform()->PumpMessageLoop(isolate())); StrictMock* task = new StrictMock; - platform.CallOnForegroundThread(isolate, task); + CallOnForegroundThread(task); EXPECT_CALL(*task, Run()); EXPECT_CALL(*task, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); + EXPECT_TRUE(PumpMessageLoop()); + EXPECT_FALSE(PumpMessageLoop()); } -TEST(DefaultPlatformTest, PumpMessageLoopWithTaskRunner) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - DefaultPlatform platform; +TEST_F(DefaultPlatformTest, PumpMessageLoopWithTaskRunner) { std::shared_ptr taskrunner = - platform.GetForegroundTaskRunner(isolate); - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); + platform()->GetForegroundTaskRunner(isolate()); + EXPECT_FALSE(PumpMessageLoop()); StrictMock* task = new StrictMock; taskrunner->PostTask(std::unique_ptr(task)); EXPECT_CALL(*task, Run()); EXPECT_CALL(*task, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); + EXPECT_TRUE(PumpMessageLoop()); + EXPECT_FALSE(PumpMessageLoop()); } -TEST(DefaultPlatformTest, PumpMessageLoopDelayed) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - DefaultPlatformWithMockTime platform; - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); +TEST_F(DefaultPlatformTestWithMockTime, PumpMessageLoopDelayed) { + EXPECT_FALSE(PumpMessageLoop()); StrictMock* task1 = new StrictMock; StrictMock* task2 = new StrictMock; - platform.CallDelayedOnForegroundThread(isolate, task2, 100); - platform.CallDelayedOnForegroundThread(isolate, task1, 10); + CallDelayedOnForegroundThread(task2, 100); + CallDelayedOnForegroundThread(task1, 10); - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); + EXPECT_FALSE(PumpMessageLoop()); - platform.IncreaseTime(11); + platform()->IncreaseTime(11); EXPECT_CALL(*task1, Run()); EXPECT_CALL(*task1, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); + EXPECT_TRUE(PumpMessageLoop()); - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); + EXPECT_FALSE(PumpMessageLoop()); - platform.IncreaseTime(90); + platform()->IncreaseTime(90); EXPECT_CALL(*task2, Run()); EXPECT_CALL(*task2, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); + EXPECT_TRUE(PumpMessageLoop()); } -TEST(DefaultPlatformTest, PumpMessageLoopDelayedWithTaskRunner) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - DefaultPlatformWithMockTime platform; - std::shared_ptr taskrunner = - platform.GetForegroundTaskRunner(isolate); - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); - - StrictMock* task1 = new StrictMock; - StrictMock* task2 = new StrictMock; - taskrunner->PostDelayedTask(std::unique_ptr(task2), 100); - taskrunner->PostDelayedTask(std::unique_ptr(task1), 10); - - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); - - platform.IncreaseTime(11); - EXPECT_CALL(*task1, Run()); - EXPECT_CALL(*task1, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); - - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); - - platform.IncreaseTime(90); - EXPECT_CALL(*task2, Run()); - EXPECT_CALL(*task2, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); -} - -TEST(DefaultPlatformTest, PumpMessageLoopNoStarvation) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - DefaultPlatformWithMockTime platform; - EXPECT_FALSE(platform.PumpMessageLoop(isolate)); +TEST_F(DefaultPlatformTestWithMockTime, PumpMessageLoopNoStarvation) { + EXPECT_FALSE(PumpMessageLoop()); StrictMock* task1 = new StrictMock; StrictMock* task2 = new StrictMock; StrictMock* task3 = new StrictMock; - platform.CallOnForegroundThread(isolate, task1); - platform.CallDelayedOnForegroundThread(isolate, task2, 10); - platform.IncreaseTime(11); + CallOnForegroundThread(task1); + CallDelayedOnForegroundThread(task2, 10); + platform()->IncreaseTime(11); EXPECT_CALL(*task1, Run()); EXPECT_CALL(*task1, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); + EXPECT_TRUE(PumpMessageLoop()); - platform.CallOnForegroundThread(isolate, task3); + CallOnForegroundThread(task3); EXPECT_CALL(*task2, Run()); EXPECT_CALL(*task2, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); + EXPECT_TRUE(PumpMessageLoop()); EXPECT_CALL(*task3, Run()); EXPECT_CALL(*task3, Die()); - EXPECT_TRUE(platform.PumpMessageLoop(isolate)); + EXPECT_TRUE(PumpMessageLoop()); } - -TEST(DefaultPlatformTest, PendingDelayedTasksAreDestroyedOnShutdown) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - { - DefaultPlatformWithMockTime platform; - StrictMock* task = new StrictMock; - platform.CallDelayedOnForegroundThread(isolate, task, 10); - EXPECT_CALL(*task, Die()); - } +TEST_F(DefaultPlatformTestWithMockTime, + PendingDelayedTasksAreDestroyedOnShutdown) { + StrictMock* task = new StrictMock; + CallDelayedOnForegroundThread(task, 10); + EXPECT_CALL(*task, Die()); } -TEST(DefaultPlatformTest, RunIdleTasks) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - DefaultPlatformWithMockTime platform; - +TEST_F(DefaultPlatformTestWithMockTime, RunIdleTasks) { StrictMock* task = new StrictMock; - platform.CallIdleOnForegroundThread(isolate, task); + CallIdleOnForegroundThread(task); EXPECT_CALL(*task, Run(42.0 + 23.0)); EXPECT_CALL(*task, Die()); - platform.IncreaseTime(23.0); - platform.RunIdleTasks(isolate, 42.0); + platform()->IncreaseTime(23.0); + platform()->RunIdleTasks(isolate(), 42.0); } -TEST(DefaultPlatformTest, RunIdleTasksWithTaskRunner) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - DefaultPlatformWithMockTime platform; - std::shared_ptr taskrunner = - platform.GetForegroundTaskRunner(isolate); - +TEST_F(DefaultPlatformTestWithMockTime, + PendingIdleTasksAreDestroyedOnShutdown) { StrictMock* task = new StrictMock; - taskrunner->PostIdleTask(std::unique_ptr(task)); - EXPECT_CALL(*task, Run(42.0 + 23.0)); + CallIdleOnForegroundThread(task); EXPECT_CALL(*task, Die()); - platform.IncreaseTime(23.0); - platform.RunIdleTasks(isolate, 42.0); -} - -TEST(DefaultPlatformTest, PendingIdleTasksAreDestroyedOnShutdown) { - InSequence s; - - int dummy; - Isolate* isolate = reinterpret_cast(&dummy); - - { - DefaultPlatformWithMockTime platform; - StrictMock* task = new StrictMock; - platform.CallIdleOnForegroundThread(isolate, task); - EXPECT_CALL(*task, Die()); - } } namespace { @@ -259,7 +199,7 @@ class TestBackgroundTask : public Task { } // namespace -TEST(DefaultPlatformTest, RunBackgroundTask) { +TEST(CustomDefaultPlatformTest, RunBackgroundTask) { DefaultPlatform platform; platform.SetThreadPoolSize(1); @@ -273,7 +213,7 @@ TEST(DefaultPlatformTest, RunBackgroundTask) { EXPECT_TRUE(task_executed); } -TEST(DefaultPlatformTest, PostForegroundTaskAfterPlatformTermination) { +TEST(CustomDefaultPlatformTest, PostForegroundTaskAfterPlatformTermination) { std::shared_ptr foreground_taskrunner; { DefaultPlatformWithMockTime platform;