From 4508c70ba686df65b79174dbfea3840f998c05d1 Mon Sep 17 00:00:00 2001
From: Gabriele Contini <contini.mailing@gmail.com>
Date: 周日, 26 4月 2020 19:22:44 +0800
Subject: [PATCH] better vm detection

---
 src/library/os/execution_environment_common.cpp |   22 +++++++++++++---------
 test/library/os/execution_environment_test.cpp  |    2 +-
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/library/os/execution_environment_common.cpp b/src/library/os/execution_environment_common.cpp
index 034fef0..636119e 100644
--- a/src/library/os/execution_environment_common.cpp
+++ b/src/library/os/execution_environment_common.cpp
@@ -24,14 +24,15 @@
 	{"VBOX", VIRTUALBOX}};
 
 const unordered_map<string, LCC_API_VIRTUALIZATION_DETAIL> vm_vendors{{"VMWARE", VMWARE},
-															  {"MICROSOFT", HV},
-															  {"VITRUAL MACHINE", V_OTHER},
+																	  {"MICROSOFT", HV},
+																	  {"VITRUAL MACHINE", V_OTHER},
 																	  {"INNOTEK GMBH", VIRTUALBOX},
-															  {"POWERVM", V_OTHER},
-															  {"BOCHS", V_OTHER},
-															  {"KVM", KVM}};
+																	  {"POWERVM", V_OTHER},
+																	  {"BOCHS", V_OTHER},
+																	  {"KVM", KVM}};
 
-static LCC_API_VIRTUALIZATION_DETAIL find_in_map(const unordered_map<string, LCC_API_VIRTUALIZATION_DETAIL>& map, const string& data) {
+static LCC_API_VIRTUALIZATION_DETAIL find_in_map(const unordered_map<string, LCC_API_VIRTUALIZATION_DETAIL>& map,
+												 const string& data) {
 	for (auto it : map) {
 		if (data.find(it.first) != string::npos) {
 			return it.second;
@@ -67,8 +68,10 @@
 			}
 		}
 	}
-	if (result == BARE_TO_METAL && m_cpu_info.is_hypervisor_set()) {
-		result = V_OTHER;
+	if (result == BARE_TO_METAL) {
+		if (m_cpu_info.is_hypervisor_set() || is_cloud()) {
+			result = V_OTHER;
+		}
 	}
 	return result;
 }
@@ -88,7 +91,8 @@
 		if (bios_vendor.find("SEABIOS") != string::npos || bios_description.find("ALIBABA") != string::npos ||
 			sys_vendor.find("ALIBABA") != string::npos) {
 			result = ALI_CLOUD;
-		} else if (sys_vendor.find("GOOGLE") != string::npos || bios_description.find("GOOGLE") != string::npos) {
+		} else if (sys_vendor.find("GOOGLE") != string::npos ||
+				   bios_description.find("GOOGLECOMPUTEENGINE") != string::npos) {
 			result = GOOGLE_CLOUD;
 		} else if (bios_vendor.find("AWS") != string::npos || bios_description.find("AMAZON") != string::npos ||
 				   sys_vendor.find("AWS") != string::npos) {
diff --git a/test/library/os/execution_environment_test.cpp b/test/library/os/execution_environment_test.cpp
index a058cd0..14a2abc 100644
--- a/test/library/os/execution_environment_test.cpp
+++ b/test/library/os/execution_environment_test.cpp
@@ -1,4 +1,4 @@
-#define BOOST_TEST_MODULE network_test
+#define BOOST_TEST_MODULE execution_environment_test
 #include <string>
 #include <iostream>
 #include <boost/test/unit_test.hpp>

--
Gitblit v1.9.1