diff options
author | Benoit Germain <benoit.germain@ubisoft.com> | 2024-12-16 09:50:52 +0100 |
---|---|---|
committer | Benoit Germain <benoit.germain@ubisoft.com> | 2024-12-16 09:50:52 +0100 |
commit | efd5318b2d9132996bf35a6af2e82706665890ff (patch) | |
tree | d92946126d43258b86a67c655353dba22f8982e0 /unit_tests | |
parent | 0740a54fe0f4d4264875ae1dc3334e33e27f4ff9 (diff) | |
download | lanes-efd5318b2d9132996bf35a6af2e82706665890ff.tar.gz lanes-efd5318b2d9132996bf35a6af2e82706665890ff.tar.bz2 lanes-efd5318b2d9132996bf35a6af2e82706665890ff.zip |
Unit tests for thread name
Diffstat (limited to 'unit_tests')
-rw-r--r-- | unit_tests/lane_tests.cpp | 61 |
1 files changed, 56 insertions, 5 deletions
diff --git a/unit_tests/lane_tests.cpp b/unit_tests/lane_tests.cpp index 14a327f..8b22fcd 100644 --- a/unit_tests/lane_tests.cpp +++ b/unit_tests/lane_tests.cpp | |||
@@ -104,17 +104,16 @@ TEST_F(LaneTests, UncooperativeShutdown) | |||
104 | lua_pushcfunction(S, _finallyCB); | 104 | lua_pushcfunction(S, _finallyCB); |
105 | lua_setglobal(S, "finallyCB"); | 105 | lua_setglobal(S, "finallyCB"); |
106 | // start a lane that lasts a long time | 106 | // start a lane that lasts a long time |
107 | std::string_view const script{ | 107 | std::string_view const _script{ |
108 | " lanes.finally(finallyCB)" | 108 | " lanes.finally(finallyCB)" |
109 | " print ('in Master')" | 109 | " g = lanes.gen('*'," |
110 | " f = lanes.gen('*'," | ||
111 | " {name = 'auto'}," | 110 | " {name = 'auto'}," |
112 | " function()" | 111 | " function()" |
113 | " for i = 1,1e37 do end" // no cooperative cancellation checks here! | 112 | " for i = 1,1e37 do end" // no cooperative cancellation checks here! |
114 | " end)" | 113 | " end)" |
115 | " f()" | 114 | " g()" |
116 | }; | 115 | }; |
117 | ASSERT_EQ(S.doString(script), LuaError::OK) << S; | 116 | ASSERT_EQ(S.doString(_script), LuaError::OK) << S; |
118 | // close the state before the lane ends. | 117 | // close the state before the lane ends. |
119 | // since we don't wait at all, it is possible that the OS thread for the lane hasn't even started at that point | 118 | // since we don't wait at all, it is possible that the OS thread for the lane hasn't even started at that point |
120 | S.close(); | 119 | S.close(); |
@@ -124,6 +123,58 @@ TEST_F(LaneTests, UncooperativeShutdown) | |||
124 | } | 123 | } |
125 | 124 | ||
126 | // ################################################################################################# | 125 | // ################################################################################################# |
126 | |||
127 | TEST_F(LaneTests, DefaultThreadNameIsUnnamed) | ||
128 | { | ||
129 | std::string_view const _script{ | ||
130 | " g = lanes.gen('*'," | ||
131 | " function()" | ||
132 | " return lane_threadname()" | ||
133 | " end)" | ||
134 | " h = g()" | ||
135 | " local tn = h[1]" | ||
136 | " assert(tn == h:get_threadname())" | ||
137 | " return tn" | ||
138 | }; | ||
139 | ASSERT_EQ(S.doStringAndRet(_script), "<unnamed>") << S; | ||
140 | } | ||
141 | |||
142 | // ################################################################################################# | ||
143 | |||
144 | TEST_F(LaneTests, UserThreadNameFromGenerator) | ||
145 | { | ||
146 | std::string_view const _script{ | ||
147 | " g = lanes.gen('*'," | ||
148 | " { name = 'user name'}," | ||
149 | " function()" | ||
150 | " return lane_threadname()" | ||
151 | " end)" | ||
152 | " h = g()" | ||
153 | " local tn = h[1]" | ||
154 | " assert(tn == h:get_threadname())" | ||
155 | " return tn" | ||
156 | }; | ||
157 | ASSERT_EQ(S.doStringAndRet(_script), "user name") << S; | ||
158 | } | ||
159 | |||
160 | // ################################################################################################# | ||
161 | |||
162 | TEST_F(LaneTests, UserThreadNameFromInside) | ||
163 | { | ||
164 | std::string_view const _script{ | ||
165 | " g = lanes.gen('*'," | ||
166 | " function()" | ||
167 | " lane_threadname('user name')" | ||
168 | " return true" | ||
169 | " end)" | ||
170 | " h = g()" | ||
171 | " h:join()" | ||
172 | " return h:get_threadname()" | ||
173 | }; | ||
174 | ASSERT_EQ(S.doStringAndRet(_script), "user name") << S; | ||
175 | } | ||
176 | |||
177 | // ################################################################################################# | ||
127 | // ################################################################################################# | 178 | // ################################################################################################# |
128 | 179 | ||
129 | class LaneCancel : public ::testing::Test | 180 | class LaneCancel : public ::testing::Test |