3030#include " os_inc.h"
3131
3232#include < string>
33+ #include < string_view>
3334
3435namespace Os {
3536extern const char *dxcoreDllName;
@@ -199,6 +200,9 @@ TEST_F(DrmSimpleTests, givenPrintIoctlTimesWhenCallIoctlThenStatisticsAreGathere
199200 };
200201 ::testing::internal::CaptureStdout ();
201202
203+ constexpr long long initialMin = std::numeric_limits<long long >::max ();
204+ constexpr long long initialMax = 0 ;
205+
202206 auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
203207 executionEnvironment->prepareRootDeviceEnvironments (1 );
204208 auto drm = static_cast <DrmMock *>(DrmWrap::createDrm (*executionEnvironment->rootDeviceEnvironments [0 ]).release ());
@@ -212,70 +216,109 @@ TEST_F(DrmSimpleTests, givenPrintIoctlTimesWhenCallIoctlThenStatisticsAreGathere
212216 uint32_t contextId = 1u ;
213217
214218 drm->getEuTotal (euTotal);
215- EXPECT_EQ (drm->ioctlStatistics .size (), 1u );
219+ EXPECT_EQ (1u , drm->ioctlStatistics .size ());
216220
217221 drm->getEuTotal (euTotal);
218- EXPECT_EQ (drm->ioctlStatistics .size (), 1u );
222+ EXPECT_EQ (1u , drm->ioctlStatistics .size ());
219223
220224 drm->setLowPriorityContextParam (contextId);
221- EXPECT_EQ (drm->ioctlStatistics .size (), 2u );
225+ EXPECT_EQ (2u , drm->ioctlStatistics .size ());
222226
223227 auto euTotalData = drm->ioctlStatistics .find (DRM_IOCTL_I915_GETPARAM);
224228 ASSERT_TRUE (euTotalData != drm->ioctlStatistics .end ());
225- EXPECT_EQ (euTotalData->first , static_cast <unsigned long >(DRM_IOCTL_I915_GETPARAM));
226- EXPECT_EQ (euTotalData->second .second , 2u );
227- EXPECT_NE (euTotalData->second .first , 0 );
228- auto firstTime = euTotalData->second .first ;
229+ EXPECT_EQ (static_cast <unsigned long >(DRM_IOCTL_I915_GETPARAM), euTotalData->first );
230+ EXPECT_EQ (2u , euTotalData->second .count );
231+ EXPECT_NE (0 , euTotalData->second .totalTime );
232+ EXPECT_NE (initialMin, euTotalData->second .minTime );
233+ EXPECT_NE (initialMax, euTotalData->second .minTime );
234+ EXPECT_NE (initialMin, euTotalData->second .maxTime );
235+ EXPECT_NE (initialMax, euTotalData->second .maxTime );
236+ auto firstTime = euTotalData->second .totalTime ;
229237
230238 auto lowPriorityData = drm->ioctlStatistics .find (DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM);
231239 ASSERT_TRUE (lowPriorityData != drm->ioctlStatistics .end ());
232- EXPECT_EQ (lowPriorityData->first , static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM));
233- EXPECT_EQ (lowPriorityData->second .second , 1u );
234- EXPECT_NE (lowPriorityData->second .first , 0 );
240+ EXPECT_EQ (static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM), lowPriorityData->first );
241+ EXPECT_EQ (1u , lowPriorityData->second .count );
242+ EXPECT_NE (0 , lowPriorityData->second .totalTime );
243+ EXPECT_NE (initialMin, lowPriorityData->second .minTime );
244+ EXPECT_NE (initialMax, lowPriorityData->second .minTime );
245+ EXPECT_NE (initialMin, lowPriorityData->second .maxTime );
246+ EXPECT_NE (initialMax, lowPriorityData->second .maxTime );
235247
236248 drm->getEuTotal (euTotal);
237249 EXPECT_EQ (drm->ioctlStatistics .size (), 2u );
238250
239251 euTotalData = drm->ioctlStatistics .find (DRM_IOCTL_I915_GETPARAM);
240252 ASSERT_TRUE (euTotalData != drm->ioctlStatistics .end ());
241- EXPECT_EQ (euTotalData-> first , static_cast <unsigned long >(DRM_IOCTL_I915_GETPARAM));
242- EXPECT_EQ (euTotalData->second .second , 3u );
243- EXPECT_NE (euTotalData->second .first , 0 );
253+ EXPECT_EQ (static_cast <unsigned long >(DRM_IOCTL_I915_GETPARAM), euTotalData-> first );
254+ EXPECT_EQ (3u , euTotalData->second .count );
255+ EXPECT_NE (0u , euTotalData->second .totalTime );
244256
245- auto secondTime = euTotalData->second .first ;
257+ auto secondTime = euTotalData->second .totalTime ;
246258 EXPECT_GT (secondTime, firstTime);
247259
248260 lowPriorityData = drm->ioctlStatistics .find (DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM);
249261 ASSERT_TRUE (lowPriorityData != drm->ioctlStatistics .end ());
250- EXPECT_EQ (lowPriorityData-> first , static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM));
251- EXPECT_EQ (lowPriorityData->second .second , 1u );
252- EXPECT_NE (lowPriorityData->second .first , 0 );
262+ EXPECT_EQ (static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM), lowPriorityData-> first );
263+ EXPECT_EQ (1u , lowPriorityData->second .count );
264+ EXPECT_NE (0 , lowPriorityData->second .totalTime );
253265
254266 drm->destroyDrmContext (contextId);
255- EXPECT_EQ (drm->ioctlStatistics .size (), 3u );
267+ EXPECT_EQ (3u , drm->ioctlStatistics .size ());
256268
257269 euTotalData = drm->ioctlStatistics .find (DRM_IOCTL_I915_GETPARAM);
258270 ASSERT_TRUE (euTotalData != drm->ioctlStatistics .end ());
259- EXPECT_EQ (euTotalData-> first , static_cast <unsigned long >(DRM_IOCTL_I915_GETPARAM));
260- EXPECT_EQ (euTotalData->second .second , 3u );
261- EXPECT_NE (euTotalData->second .first , 0 );
271+ EXPECT_EQ (static_cast <unsigned long >(DRM_IOCTL_I915_GETPARAM), euTotalData-> first );
272+ EXPECT_EQ (3u , euTotalData->second .count );
273+ EXPECT_NE (0 , euTotalData->second .totalTime );
262274
263275 lowPriorityData = drm->ioctlStatistics .find (DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM);
264276 ASSERT_TRUE (lowPriorityData != drm->ioctlStatistics .end ());
265- EXPECT_EQ (lowPriorityData-> first , static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM));
266- EXPECT_EQ (lowPriorityData->second .second , 1u );
267- EXPECT_NE (lowPriorityData->second .first , 0 );
277+ EXPECT_EQ (static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM), lowPriorityData-> first );
278+ EXPECT_EQ (1u , lowPriorityData->second .count );
279+ EXPECT_NE (0 , lowPriorityData->second .totalTime );
268280
269281 auto destroyData = drm->ioctlStatistics .find (DRM_IOCTL_I915_GEM_CONTEXT_DESTROY);
270282 ASSERT_TRUE (destroyData != drm->ioctlStatistics .end ());
271- EXPECT_EQ (destroyData-> first , static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_DESTROY));
272- EXPECT_EQ (destroyData->second .second , 1u );
273- EXPECT_NE (destroyData->second .first , 0 );
283+ EXPECT_EQ (static_cast <unsigned long >(DRM_IOCTL_I915_GEM_CONTEXT_DESTROY), destroyData-> first );
284+ EXPECT_EQ (1u , destroyData->second .count );
285+ EXPECT_NE (0 , destroyData->second .totalTime );
274286
275287 delete drm;
276288
277289 std::string output = ::testing::internal::GetCapturedStdout ();
278- EXPECT_STRNE (output.c_str (), " " );
290+ EXPECT_STRNE (" " , output.c_str ());
291+
292+ std::string_view requestString (" Request" );
293+ std::string_view totalTimeString (" Total time(ns)" );
294+ std::string_view countString (" Count" );
295+ std::string_view avgTimeString (" Avg time per ioctl" );
296+ std::string_view minString (" Min" );
297+ std::string_view maxString (" Max" );
298+
299+ std::size_t position = output.find (requestString);
300+ EXPECT_NE (std::string::npos, position);
301+ position += requestString.size ();
302+
303+ position = output.find (totalTimeString, position);
304+ EXPECT_NE (std::string::npos, position);
305+ position += totalTimeString.size ();
306+
307+ position = output.find (countString, position);
308+ EXPECT_NE (std::string::npos, position);
309+ position += countString.size ();
310+
311+ position = output.find (avgTimeString, position);
312+ EXPECT_NE (std::string::npos, position);
313+ position += avgTimeString.size ();
314+
315+ position = output.find (minString, position);
316+ EXPECT_NE (std::string::npos, position);
317+ position += minString.size ();
318+
319+ position = output.find (maxString, position);
320+ EXPECT_NE (std::string::npos, position);
321+ position += maxString.size ();
279322}
280323
281324TEST_F (DrmSimpleTests, GivenSelectedNonExistingDeviceWhenOpenDirFailsThenRetryOpeningRenderDevicesAndNoDevicesAreCreated) {
0 commit comments