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

Side by Side Diff: webrtc/base/platform_thread_unittest.cc

Issue 2877023002: Move webrtc/{base => rtc_base} (Closed)
Patch Set: update presubmit.py and DEPS include rules Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « webrtc/base/platform_thread_types.h ('k') | webrtc/base/protobuf_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "webrtc/base/platform_thread.h"
12
13 #include "webrtc/system_wrappers/include/sleep.h"
14 #include "webrtc/test/gtest.h"
15
16 namespace rtc {
17 namespace {
18 // Function that does nothing, and reports success.
19 bool NullRunFunctionDeprecated(void* obj) {
20 webrtc::SleepMs(2); // Hand over timeslice, prevents busy looping.
21 return true;
22 }
23
24 bool TooBusyRunFunction(void* obj) {
25 // Indentionally busy looping.
26 return true;
27 }
28
29 void NullRunFunction(void* obj) {}
30
31 // Function that sets a boolean.
32 bool SetFlagRunFunctionDeprecated(void* obj) {
33 bool* obj_as_bool = static_cast<bool*>(obj);
34 *obj_as_bool = true;
35 webrtc::SleepMs(0); // Hand over timeslice, prevents busy looping.
36 return true;
37 }
38
39 void SetFlagRunFunction(void* obj) {
40 bool* obj_as_bool = static_cast<bool*>(obj);
41 *obj_as_bool = true;
42 }
43
44 } // namespace
45
46 TEST(PlatformThreadTest, StartStopDeprecated) {
47 PlatformThread thread(&NullRunFunctionDeprecated, nullptr,
48 "PlatformThreadTest");
49 EXPECT_TRUE(thread.name() == "PlatformThreadTest");
50 EXPECT_TRUE(thread.GetThreadRef() == 0);
51 thread.Start();
52 EXPECT_TRUE(thread.GetThreadRef() != 0);
53 thread.Stop();
54 EXPECT_TRUE(thread.GetThreadRef() == 0);
55 }
56
57 TEST(PlatformThreadTest, StartStop2Deprecated) {
58 PlatformThread thread1(&NullRunFunctionDeprecated, nullptr,
59 "PlatformThreadTest1");
60 PlatformThread thread2(&NullRunFunctionDeprecated, nullptr,
61 "PlatformThreadTest2");
62 EXPECT_TRUE(thread1.GetThreadRef() == thread2.GetThreadRef());
63 thread1.Start();
64 thread2.Start();
65 EXPECT_TRUE(thread1.GetThreadRef() != thread2.GetThreadRef());
66 thread2.Stop();
67 thread1.Stop();
68 }
69
70 TEST(PlatformThreadTest, RunFunctionIsCalledDeprecated) {
71 bool flag = false;
72 PlatformThread thread(&SetFlagRunFunctionDeprecated, &flag,
73 "RunFunctionIsCalled");
74 thread.Start();
75
76 // At this point, the flag may be either true or false.
77 thread.Stop();
78
79 // We expect the thread to have run at least once.
80 EXPECT_TRUE(flag);
81 }
82
83 TEST(PlatformThreadTest, StartStop) {
84 PlatformThread thread(&NullRunFunction, nullptr, "PlatformThreadTest");
85 EXPECT_TRUE(thread.name() == "PlatformThreadTest");
86 EXPECT_TRUE(thread.GetThreadRef() == 0);
87 thread.Start();
88 EXPECT_TRUE(thread.GetThreadRef() != 0);
89 thread.Stop();
90 EXPECT_TRUE(thread.GetThreadRef() == 0);
91 }
92
93 TEST(PlatformThreadTest, StartStop2) {
94 PlatformThread thread1(&NullRunFunction, nullptr, "PlatformThreadTest1");
95 PlatformThread thread2(&NullRunFunction, nullptr, "PlatformThreadTest2");
96 EXPECT_TRUE(thread1.GetThreadRef() == thread2.GetThreadRef());
97 thread1.Start();
98 thread2.Start();
99 EXPECT_TRUE(thread1.GetThreadRef() != thread2.GetThreadRef());
100 thread2.Stop();
101 thread1.Stop();
102 }
103
104 TEST(PlatformThreadTest, RunFunctionIsCalled) {
105 bool flag = false;
106 PlatformThread thread(&SetFlagRunFunction, &flag, "RunFunctionIsCalled");
107 thread.Start();
108
109 // At this point, the flag may be either true or false.
110 thread.Stop();
111
112 // We expect the thread to have run at least once.
113 EXPECT_TRUE(flag);
114 }
115
116 // This test is disabled since it will cause a crash.
117 // There might be a way to implement this as a death test, but it looks like
118 // a death test requires an expression to be checked but does not allow a
119 // flag to be raised that says "some thread will crash after this point".
120 // TODO(tommi): Look into ways to enable the test by default.
121 TEST(PlatformThreadTest, DISABLED_TooBusyDeprecated) {
122 PlatformThread thread(&TooBusyRunFunction, nullptr, "BusyThread");
123 thread.Start();
124 webrtc::SleepMs(1000);
125 thread.Stop();
126 }
127
128 } // rtc
OLDNEW
« no previous file with comments | « webrtc/base/platform_thread_types.h ('k') | webrtc/base/protobuf_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698