| | |
| | | using namespace license::os; |
| | | using namespace std; |
| | | |
| | | // To test if virtualization is detected correctly define an env variable VIRT_ENV |
| | | // To test if virtualization is detected correctly define an env variable VIRTUAL_ENV |
| | | // otherwise the test is skipped |
| | | BOOST_AUTO_TEST_CASE(test_virtualization) { |
| | | const char *env = getenv("VIRTUAL_ENV"); |
| | | os::ExecutionEnvironment exec_env; |
| | | bool docker = false; |
| | | if (env != nullptr) { |
| | | LCC_API_VIRTUALIZATION_SUMMARY virt = exec_env.virtualization(); |
| | | if (strcmp(env, "CONTAINER") == 0 || (docker = (strcmp(env, "DOCKER") == 0))) { |
| | | BOOST_CHECK_MESSAGE(virt == LCC_API_VIRTUALIZATION_SUMMARY::CONTAINER, "container detected"); |
| | | string required_virtualization(env); |
| | | os::ExecutionEnvironment exec_env; |
| | | LCC_API_VIRTUALIZATION_SUMMARY detected_virt = exec_env.virtualization(); |
| | | if (required_virtualization == "CONTAINER" || (docker = (required_virtualization == "DOCKER"))) { |
| | | BOOST_CHECK_MESSAGE(detected_virt == LCC_API_VIRTUALIZATION_SUMMARY::CONTAINER, "container detected"); |
| | | BOOST_CHECK_MESSAGE(exec_env.is_container(), "container detected"); |
| | | if (docker) { |
| | | BOOST_CHECK_MESSAGE(exec_env.is_docker(), "docker detected"); |
| | | } |
| | | } else if (strcmp(env, "VM") == 0) { |
| | | BOOST_CHECK_MESSAGE(virt == LCC_API_VIRTUALIZATION_SUMMARY::VM, "VM detected"); |
| | | } else if (required_virtualization == "VM") { |
| | | BOOST_CHECK_MESSAGE(detected_virt == LCC_API_VIRTUALIZATION_SUMMARY::VM, "VM detected"); |
| | | BOOST_CHECK_MESSAGE(!exec_env.is_container(), "VM is not a container"); |
| | | BOOST_CHECK_MESSAGE(!exec_env.is_docker(), "VM is not a docker"); |
| | | } else if (strcmp(env, "NONE") == 0) { |
| | | BOOST_CHECK_EQUAL(virt, LCC_API_VIRTUALIZATION_SUMMARY::NONE); |
| | | BOOST_CHECK_MESSAGE(exec_env.virtualization_detail() != LCC_API_VIRTUALIZATION_DETAIL::BARE_TO_METAL, |
| | | "It is not run bare to metal."); |
| | | } else if (required_virtualization == "NONE") { |
| | | BOOST_CHECK_EQUAL(detected_virt, LCC_API_VIRTUALIZATION_SUMMARY::NONE); |
| | | BOOST_CHECK_MESSAGE(!exec_env.is_container(), "not a container"); |
| | | BOOST_CHECK_MESSAGE(!exec_env.is_docker(), "not a docker"); |
| | | BOOST_CHECK_MESSAGE(exec_env.virtualization_detail() == LCC_API_VIRTUALIZATION_DETAIL::BARE_TO_METAL, |
| | | "running bare to metal."); |
| | | } else { |
| | | BOOST_FAIL(string("value ") + env + " not supported: VM,DOCKER,CONTAINER,NONE"); |
| | | } |