gcontini
2020-04-25 36093433d67c2eb2c2a7b86ff4ffb9138e1f1869
test/library/os/execution_environment_test.cpp
@@ -16,28 +16,33 @@
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");
      }