1 /*
2  * Copyright (C) 2020-2021 Intel Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  */
7 
8 #include "shared/source/execution_environment/root_device_environment.h"
9 #include "shared/source/os_interface/device_factory.h"
10 #include "shared/source/os_interface/os_interface.h"
11 #include "shared/test/common/test_macros/test.h"
12 
13 #include "level_zero/core/test/unit_tests/fixtures/device_fixture.h"
14 #include "level_zero/tools/source/sysman/sysman.h"
15 #include "level_zero/tools/test/unit_tests/sources/sysman/mocks/mock_sysman_env_vars.h"
16 
17 #include "sysman/windows/os_sysman_imp.h"
18 
19 extern bool sysmanUltsEnable;
20 
21 using ::testing::_;
22 using namespace NEO;
23 
24 namespace L0 {
25 namespace ult {
26 
27 class PublicWddmSysmanImp : public L0::WddmSysmanImp {
28   public:
29     using WddmSysmanImp::pKmdSysManager;
30 };
31 
32 class SysmanDeviceFixture : public DeviceFixture, public SysmanEnabledFixture {
33   public:
SetUp()34     void SetUp() override {
35         if (!sysmanUltsEnable) {
36             GTEST_SKIP();
37         }
38         DeviceFixture::SetUp();
39         neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[device->getRootDeviceIndex()]->osInterface = std::make_unique<NEO::OSInterface>();
40 
41         SysmanEnabledFixture::SetUp();
42         device->setSysmanHandle(L0::SysmanDeviceHandleContext::init(device->toHandle()));
43         pSysmanDevice = device->getSysmanHandle();
44         pSysmanDeviceImp = static_cast<SysmanDeviceImp *>(pSysmanDevice);
45         pOsSysman = pSysmanDeviceImp->pOsSysman;
46         pWddmSysmanImp = static_cast<PublicWddmSysmanImp *>(pOsSysman);
47     }
48 
TearDown()49     void TearDown() override {
50         if (!sysmanUltsEnable) {
51             GTEST_SKIP();
52         }
53         SysmanEnabledFixture::TearDown();
54         DeviceFixture::TearDown();
55     }
56 
57     SysmanDevice *pSysmanDevice = nullptr;
58     SysmanDeviceImp *pSysmanDeviceImp = nullptr;
59     OsSysman *pOsSysman = nullptr;
60     PublicWddmSysmanImp *pWddmSysmanImp = nullptr;
61 };
62 
63 } // namespace ult
64 } // namespace L0
65