@@ -111,13 +111,16 @@ void TestCore(bool do_immediate) {
111111 std::cerr << " Error: Unknown exception caught." << ' \n ' ;
112112 }
113113}
114- } // namespace
115114
116115bool ComparePair (std::pair<uint64_t , uint64_t > a_stamps, std::pair<uint64_t , uint64_t > b_stamps) {
117116 return a_stamps.first < b_stamps.first ;
118117}
118+ enum CollectionMode { kModeFull = 0 , kModeHybrid = 1 , kModeLocal = 2 };
119+
120+ } // namespace
119121
120- class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<bool > {
122+ class NoKernelOverlapParametrizedTestFixture
123+ : public ::testing::TestWithParam<std::tuple<bool , CollectionMode>> {
121124 protected:
122125 NoKernelOverlapParametrizedTestFixture () {
123126 // Setup work for each test
@@ -130,20 +133,28 @@ class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<b
130133 static uint32_t times_buffer_completed;
131134 static std::vector<uint64_t > kernel_device_timestamps;
132135 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 ;
135138
136139 void SetUp () override { // Called right after constructor before each test
137140 kernel_device_timestamps_pairs.clear ();
138141 kernel_host_timestamps.clear ();
139142 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+ }
140151 }
141152
142153 void TearDown () override {
143154 // Called right before destructor after each test
144155 }
145156
146- bool TestForDeviceKernelsOverlap (std::vector<std::pair<uint64_t , uint64_t > >& timestamps) {
157+ bool TestForDeviceKernelsOverlap (std::vector<std::pair<uint64_t , uint64_t >>& timestamps) {
147158 if (timestamps.size () == 0 ) {
148159 std::cerr << " ---> ERROR: Empty kernel timestamps array - Not expected " << std::endl;
149160 return false ;
@@ -161,16 +172,16 @@ class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<b
161172 << std::endl;
162173 */
163174 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;
167178 return false ;
168179 }
169180 }
170181 return true ;
171182 }
172183
173- bool TestForDeviceKernelDurationNonZero (std::vector<std::pair<uint64_t , uint64_t > >& timestamps) {
184+ bool TestForDeviceKernelDurationNonZero (std::vector<std::pair<uint64_t , uint64_t >>& timestamps) {
174185 if (timestamps.size () == 0 ) {
175186 std::cerr << " ---> ERROR: Empty kernel timestamps array - Not expected " << std::endl;
176187 return false ;
@@ -301,11 +312,11 @@ class NoKernelOverlapParametrizedTestFixture : public ::testing::TestWithParam<b
301312// static members initialization
302313uint32_t NoKernelOverlapParametrizedTestFixture::times_buffer_completed = 0 ;
303314std::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 >>
305316 NoKernelOverlapParametrizedTestFixture::kernel_device_timestamps_pairs{};
317+ bool NoKernelOverlapParametrizedTestFixture::do_immediate = true ;
306318
307319TEST_P (NoKernelOverlapParametrizedTestFixture, NoKernelOverlapImmediate) {
308- bool do_immediate = GetParam ();
309320 EXPECT_EQ (ptiViewSetCallbacks (BufferRequested, BufferCompleted), pti_result::PTI_SUCCESS);
310321
311322 RunTest (do_immediate);
@@ -323,4 +334,9 @@ TEST_P(NoKernelOverlapParametrizedTestFixture, NoKernelOverlapImmediate) {
323334}
324335
325336INSTANTIATE_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