@@ -111,13 +111,16 @@ void TestCore(bool do_immediate) {
111
111
std::cerr << " Error: Unknown exception caught." << ' \n ' ;
112
112
}
113
113
}
114
- } // namespace
115
114
116
115
bool ComparePair (std::pair<uint64_t , uint64_t > a_stamps, std::pair<uint64_t , uint64_t > b_stamps) {
117
116
return a_stamps.first < b_stamps.first ;
118
117
}
118
+ enum CollectionMode { kModeFull = 0 , kModeHybrid = 1 , kModeLocal = 2 };
119
+
120
+ } // namespace
119
121
120
- class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<bool > {
122
+ class NoKernelOverlapParametrizedTestFixture
123
+ : public ::testing::TestWithParam<std::tuple<bool , CollectionMode>> {
121
124
protected:
122
125
NoKernelOverlapParametrizedTestFixture () {
123
126
// Setup work for each test
@@ -130,20 +133,28 @@ class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<b
130
133
static uint32_t times_buffer_completed;
131
134
static std::vector<uint64_t > kernel_device_timestamps;
132
135
static std::vector<uint64_t > kernel_host_timestamps;
133
-
134
- static std::vector<std::pair< uint64_t , uint64_t > > kernel_device_timestamps_pairs ;
136
+ static std::vector<std::pair< uint64_t , uint64_t >> kernel_device_timestamps_pairs;
137
+ static bool do_immediate ;
135
138
136
139
void SetUp () override { // Called right after constructor before each test
137
140
kernel_device_timestamps_pairs.clear ();
138
141
kernel_host_timestamps.clear ();
139
142
times_buffer_completed = 0 ;
143
+
144
+ auto [immediate, collection_mode] = GetParam ();
145
+ do_immediate = immediate;
146
+ // while passed ModeLocal local it is expected it will be selected automatically of course
147
+ // in case introspection API is available
148
+ if (collection_mode != CollectionMode::kModeLocal ) {
149
+ utils::SetEnv (" PTI_COLLECTION_MODE" , std::to_string (collection_mode).c_str ());
150
+ }
140
151
}
141
152
142
153
void TearDown () override {
143
154
// Called right before destructor after each test
144
155
}
145
156
146
- bool TestForDeviceKernelsOverlap (std::vector<std::pair<uint64_t , uint64_t > >& timestamps) {
157
+ bool TestForDeviceKernelsOverlap (std::vector<std::pair<uint64_t , uint64_t >>& timestamps) {
147
158
if (timestamps.size () == 0 ) {
148
159
std::cerr << " ---> ERROR: Empty kernel timestamps array - Not expected " << std::endl;
149
160
return false ;
@@ -161,16 +172,16 @@ class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<b
161
172
<< std::endl;
162
173
*/
163
174
if (timestamps[item].first <= timestamps[item - 1 ].second ) {
164
- std::cerr << " ---> ERROR: Device kernel timestamps overlap start_of_i < end_of_i -1, at i: "
165
- << item << " , start_of_i : " << timestamps[item].first
166
- << " , end_of_i -1: " << timestamps[item - 1 ].second << std::endl;
175
+ std::cerr << " ---> ERROR: Device kernel timestamps overlap end_of_i < start_of_i -1, at i: "
176
+ << item << " , end_of_i : " << timestamps[item].first
177
+ << " , start_of_i -1: " << timestamps[item - 1 ].second << std::endl;
167
178
return false ;
168
179
}
169
180
}
170
181
return true ;
171
182
}
172
183
173
- bool TestForDeviceKernelDurationNonZero (std::vector<std::pair<uint64_t , uint64_t > >& timestamps) {
184
+ bool TestForDeviceKernelDurationNonZero (std::vector<std::pair<uint64_t , uint64_t >>& timestamps) {
174
185
if (timestamps.size () == 0 ) {
175
186
std::cerr << " ---> ERROR: Empty kernel timestamps array - Not expected " << std::endl;
176
187
return false ;
@@ -301,11 +312,11 @@ class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<b
301
312
// static members initialization
302
313
uint32_t NoKernelOverlapParametrizedTestFixture::times_buffer_completed = 0 ;
303
314
std::vector<uint64_t > NoKernelOverlapParametrizedTestFixture::kernel_host_timestamps{};
304
- std::vector<std::pair<uint64_t , uint64_t > >
315
+ std::vector<std::pair<uint64_t , uint64_t >>
305
316
NoKernelOverlapParametrizedTestFixture::kernel_device_timestamps_pairs{};
317
+ bool NoKernelOverlapParametrizedTestFixture::do_immediate = true ;
306
318
307
319
TEST_P (NoKernelOverlapParametrizedTestFixture, NoKernelOverlapImmediate) {
308
- bool do_immediate = GetParam ();
309
320
EXPECT_EQ (ptiViewSetCallbacks (BufferRequested, BufferCompleted), pti_result::PTI_SUCCESS);
310
321
311
322
RunTest (do_immediate);
@@ -323,4 +334,9 @@ TEST_P(NoKernelOverlapParametrizedTestFixture, NoKernelOverlapImmediate) {
323
334
}
324
335
325
336
INSTANTIATE_TEST_SUITE_P (NoKernelOverlapTests, NoKernelOverlapParametrizedTestFixture,
326
- ::testing::Values (true , false ));
337
+ ::testing::Values (std::make_tuple(true , CollectionMode::kModeFull ),
338
+ std::make_tuple(false , CollectionMode::kModeFull ),
339
+ std::make_tuple(true , CollectionMode::kModeHybrid ),
340
+ std::make_tuple(false , CollectionMode::kModeHybrid ),
341
+ std::make_tuple(true , CollectionMode::kModeLocal ),
342
+ std::make_tuple(false , CollectionMode::kModeLocal )));
0 commit comments