1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
/*
* Copyright (C) 2017-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/os_interface/debug_env_reader.h"
#include "shared/test/unit_test/helpers/variable_backup.h"
#include "opencl/test/unit_test/mocks/mock_io_functions.h"
#include "test.h"
#include <memory>
#include <unordered_map>
namespace NEO {
class DebugEnvReaderTests : public ::testing::Test {
public:
void SetUp() override {
evr = SettingsReader::createOsReader(false, "");
EXPECT_NE(nullptr, evr);
}
void TearDown() override {
delete evr;
}
SettingsReader *evr = nullptr;
};
TEST_F(DebugEnvReaderTests, IfVariableIsSetReturnSetValue) {
int32_t ret;
std::string retString;
std::string defaultString = "Default Value";
std::string setString = "Expected Value";
const char *testingVariableName = "TestingVariable";
const char *testingVariableValue = "1234";
{
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
std::unordered_map<std::string, std::string> mockableEnvs = {{testingVariableName, testingVariableValue}};
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
ret = evr->getSetting(testingVariableName, 1);
EXPECT_EQ(1u, IoFunctions::mockGetenvCalled);
EXPECT_EQ(1234, ret);
}
{
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
std::unordered_map<std::string, std::string> mockableEnvs = {{testingVariableName, setString.c_str()}};
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
retString = evr->getSetting("TestingVariable", defaultString);
EXPECT_EQ(1u, IoFunctions::mockGetenvCalled);
EXPECT_EQ(0, retString.compare(setString));
}
{
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
std::unordered_map<std::string, std::string> mockableEnvs = {};
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
ret = evr->getSetting("TestingVariable", 1);
EXPECT_EQ(1u, IoFunctions::mockGetenvCalled);
EXPECT_EQ(1, ret);
}
}
TEST_F(DebugEnvReaderTests, IfVariableIsNotSetReturnDefaultValue) {
int32_t ret;
std::string retString;
std::string defaultString = "Default Value";
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
std::unordered_map<std::string, std::string> mockableEnvs = {};
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
ret = evr->getSetting("TestingVariable", 1);
EXPECT_EQ(1u, IoFunctions::mockGetenvCalled);
EXPECT_EQ(1, ret);
retString = evr->getSetting("TestingVariable", defaultString);
EXPECT_EQ(2u, IoFunctions::mockGetenvCalled);
EXPECT_EQ(0, retString.compare(defaultString));
}
TEST_F(DebugEnvReaderTests, CheckBoolEnvVariable) {
bool ret;
bool defaultValue = true;
bool expectedValue = false;
{
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
std::unordered_map<std::string, std::string> mockableEnvs = {{"TestingVariable", "0"}};
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
ret = evr->getSetting("TestingVariable", defaultValue);
EXPECT_EQ(1u, IoFunctions::mockGetenvCalled);
EXPECT_EQ(expectedValue, ret);
}
{
VariableBackup<uint32_t> mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0);
std::unordered_map<std::string, std::string> mockableEnvs = {};
VariableBackup<std::unordered_map<std::string, std::string> *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs);
ret = evr->getSetting("TestingVariable", defaultValue);
EXPECT_EQ(1u, IoFunctions::mockGetenvCalled);
EXPECT_EQ(defaultValue, ret);
}
}
TEST_F(DebugEnvReaderTests, appSpecificLacationReturnClCacheLocation) {
std::string appSpecific;
appSpecific = "cl_cache_dir";
EXPECT_EQ(appSpecific, evr->appSpecificLocation(appSpecific));
}
TEST_F(DebugEnvReaderTests, givenEnvironmentVariableReaderWhenCreateOsReaderWithStringThenNotNullPointer) {
std::unique_ptr<SettingsReader> evr(SettingsReader::createOsReader(false, ""));
EXPECT_NE(nullptr, evr);
}
} // namespace NEO
|