diff --git a/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h b/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h index d6f2d54f41..0dda31f434 100644 --- a/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h +++ b/level_zero/tools/test/unit_tests/sources/metrics/mock_metric_enumeration.h @@ -210,6 +210,7 @@ struct Mock : public MetricGroup { }; struct MetricGroupImpTest : public MetricGroupImp { + using MetricGroupImp::copyValue; using MetricGroupImp::pReferenceConcurrentGroup; using MetricGroupImp::pReferenceMetricSet; }; diff --git a/level_zero/tools/test/unit_tests/sources/metrics/test_metric_enumeration.cpp b/level_zero/tools/test/unit_tests/sources/metrics/test_metric_enumeration.cpp index 91b513ad1f..215209107a 100644 --- a/level_zero/tools/test/unit_tests/sources/metrics/test_metric_enumeration.cpp +++ b/level_zero/tools/test/unit_tests/sources/metrics/test_metric_enumeration.cpp @@ -38,7 +38,7 @@ TEST_F(MetricEnumerationTest, givenIncorrectMetricsDiscoveryDeviceWhenZetGetMetr EXPECT_EQ(metricGroupCount, 0u); } -TEST_F(MetricEnumerationTest, givenCorrectMetricDiscoverywhenLoadMetricsDiscoveryIsCalledThenReturnsSuccess) { +TEST_F(MetricEnumerationTest, givenCorrectMetricDiscoveryWhenLoadMetricsDiscoveryIsCalledThenReturnsSuccess) { EXPECT_CALL(*mockMetricEnumeration, loadMetricsDiscovery()) .Times(1); @@ -46,7 +46,7 @@ TEST_F(MetricEnumerationTest, givenCorrectMetricDiscoverywhenLoadMetricsDiscover EXPECT_EQ(mockMetricEnumeration->loadMetricsDiscovery(), ZE_RESULT_SUCCESS); } -TEST_F(MetricEnumerationTest, givenIncorrectMetricDiscoverywhenLoadMetricsDiscoveryIsCalledThenReturnsFail) { +TEST_F(MetricEnumerationTest, givenIncorrectMetricDiscoveryWhenLoadMetricsDiscoveryIsCalledThenReturnsFail) { mockMetricEnumeration->hMetricsDiscovery = nullptr; mockMetricEnumeration->openAdapterGroup = nullptr; @@ -54,6 +54,15 @@ TEST_F(MetricEnumerationTest, givenIncorrectMetricDiscoverywhenLoadMetricsDiscov EXPECT_EQ(mockMetricEnumeration->baseLoadMetricsDiscovery(), ZE_RESULT_ERROR_NOT_AVAILABLE); } +TEST_F(MetricEnumerationTest, givenIncorrectMetricDiscoveryWhenMetricGroupGetIsCalledThenReturnsErrorUnknown) { + + mockMetricEnumeration->hMetricsDiscovery = nullptr; + mockMetricEnumeration->openAdapterGroup = nullptr; + + uint32_t metricGroupCount = 0; + EXPECT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, nullptr), ZE_RESULT_ERROR_UNKNOWN); +} + TEST_F(MetricEnumerationTest, givenIncorrectMetricsDiscoveryInterfaceVersionWhenZetGetMetricGroupIsCalledThenReturnsFail) { metricsDeviceParams.Version.MajorNumber = 0; @@ -2314,7 +2323,6 @@ INSTANTIATE_TEST_CASE_P(parameterizedMetricEnumerationTestInformationTypes, TEST_F(MetricEnumerationTest, givenMetricSetWhenActivateIsCalledActivateReturnsTrue) { - // Metrics Discovery:: metric set. Mock metricsSet; MetricGroupImpTest metricGroup; @@ -2327,7 +2335,6 @@ TEST_F(MetricEnumerationTest, givenMetricSetWhenActivateIsCalledActivateReturnsT TEST_F(MetricEnumerationTest, givenMetricSetWhenActivateIsCalledActivateReturnsFalse) { - // Metrics Discovery:: metric set. Mock metricsSet; MetricGroupImpTest metricGroup; @@ -2340,7 +2347,6 @@ TEST_F(MetricEnumerationTest, givenMetricSetWhenActivateIsCalledActivateReturnsF TEST_F(MetricEnumerationTest, givenMetricSetWhenDeactivateIsCalledDeactivateReturnsTrue) { - // Metrics Discovery:: metric set. Mock metricsSet; MetricGroupImpTest metricGroup; @@ -2353,7 +2359,6 @@ TEST_F(MetricEnumerationTest, givenMetricSetWhenDeactivateIsCalledDeactivateRetu TEST_F(MetricEnumerationTest, givenMetricSetWhenDeactivateIsCalledDeactivateReturnsFalse) { - // Metrics Discovery:: metric set. Mock metricsSet; MetricGroupImpTest metricGroup; @@ -2366,7 +2371,6 @@ TEST_F(MetricEnumerationTest, givenMetricSetWhenDeactivateIsCalledDeactivateRetu TEST_F(MetricEnumerationTest, givenMetricSetWhenWaitForReportsIsCalledWaitForReportsReturnsSuccess) { - // Metrics Discovery:: metric group. Mock concurrentGroup; MetricGroupImpTest metricGroup; @@ -2380,7 +2384,6 @@ TEST_F(MetricEnumerationTest, givenMetricSetWhenWaitForReportsIsCalledWaitForRep TEST_F(MetricEnumerationTest, givenMetricSetWhenWaitForReportsIsCalledWaitForReportsReturnsNotReady) { - // Metrics Discovery:: metric group. Mock concurrentGroup; MetricGroupImpTest metricGroup; @@ -2392,5 +2395,121 @@ TEST_F(MetricEnumerationTest, givenMetricSetWhenWaitForReportsIsCalledWaitForRep EXPECT_EQ(metricGroup.waitForReports(timeout), ZE_RESULT_NOT_READY); } +TEST_F(MetricEnumerationTest, givenTimeAndBufferSizeWhenOpenIoStreamReturnsErrorThenTheMetricGroupOpenIoStreamReturnsErrorUnknown) { + + Mock concurrentGroup; + MetricGroupImpTest metricGroup; + + metricGroup.pReferenceConcurrentGroup = &concurrentGroup; + EXPECT_CALL(concurrentGroup, OpenIoStream(_, _, _, _)) + .WillRepeatedly(Return(MetricsDiscovery::CC_ERROR_GENERAL)); + + uint32_t timerPeriodNs = 1; + uint32_t oaBufferSize = 100; + + EXPECT_EQ(metricGroup.openIoStream(timerPeriodNs, oaBufferSize), ZE_RESULT_ERROR_UNKNOWN); +} + +TEST_F(MetricEnumerationTest, givenReportCountAndReportDataWhenReadIoStreamReturnsOkTheMetricGroupReadIoStreamReturnsSuccess) { + + Mock concurrentGroup; + MetricGroupImpTest metricGroup; + + metricGroup.pReferenceConcurrentGroup = &concurrentGroup; + EXPECT_CALL(concurrentGroup, ReadIoStream(_, _, _)) + .WillOnce(Return(MetricsDiscovery::CC_OK)); + + uint32_t reportCount = 1; + uint8_t reportData = 0; + + EXPECT_EQ(metricGroup.readIoStream(reportCount, reportData), ZE_RESULT_SUCCESS); +} + +TEST_F(MetricEnumerationTest, givenReportCountAndReportDataWhenReadIoStreamReturnsPendingTheMetricGroupReadIoStreamReturnsSuccess) { + + Mock concurrentGroup; + MetricGroupImpTest metricGroup; + + metricGroup.pReferenceConcurrentGroup = &concurrentGroup; + EXPECT_CALL(concurrentGroup, ReadIoStream(_, _, _)) + .WillOnce(Return(MetricsDiscovery::CC_READ_PENDING)); + + uint32_t reportCount = 1; + uint8_t reportData = 0; + + EXPECT_EQ(metricGroup.readIoStream(reportCount, reportData), ZE_RESULT_SUCCESS); +} + +TEST_F(MetricEnumerationTest, givenReportCountAndReportDataWhenReadIoStreamReturnsErrorThenMetrigGroupReadIoStreamReturnsError) { + + Mock concurrentGroup; + MetricGroupImpTest metricGroup; + + metricGroup.pReferenceConcurrentGroup = &concurrentGroup; + EXPECT_CALL(concurrentGroup, ReadIoStream(_, _, _)) + .WillOnce(Return(MetricsDiscovery::CC_ERROR_GENERAL)); + + uint32_t reportCount = 1; + uint8_t reportData = 0; + + EXPECT_EQ(metricGroup.readIoStream(reportCount, reportData), ZE_RESULT_ERROR_UNKNOWN); +} + +TEST_F(MetricEnumerationTest, givenTimeAndBufferSizeWhenCloseIoStreamIsCalledCloseAndFailThenIoStreamReturnsErrorUnknown) { + + Mock concurrentGroup; + MetricGroupImpTest metricGroup; + + metricGroup.pReferenceConcurrentGroup = &concurrentGroup; + EXPECT_CALL(concurrentGroup, CloseIoStream()) + .WillRepeatedly(Return(MetricsDiscovery::CC_ERROR_GENERAL)); + + EXPECT_EQ(metricGroup.closeIoStream(), ZE_RESULT_ERROR_UNKNOWN); +} + +TEST_F(MetricEnumerationTest, givenTTypedValueWhenCopyValueIsCalledReturnsFilledZetTypedValue) { + + MetricsDiscovery::TTypedValue_1_0 source = {}; + zet_typed_value_t destination = {}; + MetricGroupImpTest metricGroup = {}; + + for (int vType = MetricsDiscovery::VALUE_TYPE_UINT32; + vType < MetricsDiscovery::VALUE_TYPE_LAST; vType++) { + source.ValueType = static_cast(vType); + if (vType != MetricsDiscovery::VALUE_TYPE_BOOL) + source.ValueUInt64 = 0xFF; + else + source.ValueBool = true; + + metricGroup.copyValue(const_cast(source), destination); + switch (vType) { + case MetricsDiscovery::VALUE_TYPE_UINT32: + EXPECT_EQ(destination.type, ZET_VALUE_TYPE_UINT32); + EXPECT_EQ(destination.value.ui32, source.ValueUInt32); + break; + + case MetricsDiscovery::VALUE_TYPE_UINT64: + EXPECT_EQ(destination.type, ZET_VALUE_TYPE_UINT64); + EXPECT_EQ(destination.value.ui64, source.ValueUInt64); + break; + + case MetricsDiscovery::VALUE_TYPE_FLOAT: + EXPECT_EQ(destination.type, ZET_VALUE_TYPE_FLOAT32); + EXPECT_EQ(destination.value.fp32, source.ValueFloat); + break; + + case MetricsDiscovery::VALUE_TYPE_BOOL: + EXPECT_EQ(destination.type, ZET_VALUE_TYPE_BOOL8); + EXPECT_EQ(destination.value.b8, source.ValueBool); + break; + + default: + EXPECT_EQ(destination.type, ZET_VALUE_TYPE_UINT64); + EXPECT_EQ(destination.value.ui64, static_cast(0)); + break; + } + } +} + } // namespace ult } // namespace L0