From 4467a957a498b93dbcaefbad97df24b43dfbc99d Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周日, 08 3月 2020 22:16:09 +0800
Subject: [PATCH] fix tests

---
 src/library/os/windows/execution_environment.cpp |   61 +++++++++++++++++++++---------
 1 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/src/library/os/windows/execution_environment.cpp b/src/library/os/windows/execution_environment.cpp
index 86513d5..f5a0fb8 100644
--- a/src/library/os/windows/execution_environment.cpp
+++ b/src/library/os/windows/execution_environment.cpp
@@ -1,39 +1,64 @@
-/*
- * virtualization.cpp
- *
- *  Created on: Dec 15, 2019
- *      Author: GC
- */
+#include <paths.h>
 #include <sys/stat.h>
+#include <unistd.h>
 #include <fstream>
 #include <iostream>
 #include <stdio.h>
-#include <string>
+#include <string.h>
+#include <dirent.h>
+#include <sys/utsname.h>
 
 #include "isvm/BIOSReader.h"
 #include "isvm/Native.h"
 #include "../../base/base.h"
-#include "../../base/StringUtils.h"
 #include "../cpu_info.hpp"
 #include "../execution_environment.hpp"
 
 namespace license {
-namespace os {
 using namespace std;
 
-ExecutionEnvironment::ExecutionEnvironment() {
+
+
+VIRTUALIZATION ExecutionEnvironment::getVirtualization() {
+	VIRTUALIZATION result;
+	CpuInfo cpuInfo;
+	bool isContainer = false;
+	if (isContainer) {
+		result = CONTAINER;
+	} else if (cpuInfo.cpu_virtual() || is_cloud()) {
+		result = VM;
+	} else {
+		result = NONE;
+	}
+	return result;
+}
+
+bool ExecutionEnvironment::is_cloud() { return getCloudProvider() != ON_PREMISE; }
+
+bool ExecutionEnvironment::is_docker() { return false; }
+
+CLOUD_PROVIDER ExecutionEnvironment::getCloudProvider() {
 	if (InitEntryPoints()) {
 		BIOSReader reader;
 		SystemInformation info = reader.readSystemInfo();
-		sys_vendor = toupper_copy(info.Manufacturer);
-		bios_vendor = toupper_copy(info.ProductName);
-		bios_description = toupper_copy(info.SysVersion) + toupper_copy(info.family);
+
+		const char *vmVendors[] = {
+			"VMware", "Microsoft Corporation", "Virtual Machine", "innotek GmbH", "PowerVM", "Bochs", "KVM"};
+
+		const int count = _countof(vmVendors);
+		for (int i = 0; i != count; ++i) {
+			const char *vendor = vmVendors[i];
+
+			if (std::string::npos != info.Manufacturer.find(vendor) ||
+				std::string::npos != info.ProductName.find(vendor) ||
+				std::string::npos != info.SerialNum.find(vendor)) {
+				std::cout << "Inside virual machine!";
+				return 1;
+			}
+		}
+	} else {
+		return -1;
 	}
 }
 
-//TODO
-bool ExecutionEnvironment::is_docker() const { return false; }
-//TODO
-bool ExecutionEnvironment::is_container() const { return is_docker(); }
-}  // namespace os
 }  // namespace license

--
Gitblit v1.9.1