acloud: check kvm support or not and provide guidience.

show how to deal with the same error of rmmod: ERROR: Module kvm_intel is not currently loade

Bug: 196194537
Test: acloud-dev setup --host --force on cloudtop and workstation.
Change-Id: Ica50776b692de173a9666c6ed52ad3e503a4fca4
diff --git a/setup/host_setup_runner_test.py b/setup/host_setup_runner_test.py
index 3123562..bc2e8ef 100644
--- a/setup/host_setup_runner_test.py
+++ b/setup/host_setup_runner_test.py
@@ -15,6 +15,7 @@
 import os
 import platform
 import shutil
+import subprocess
 import tempfile
 import unittest
 
@@ -48,12 +49,14 @@
 
     def testShouldRunFalse(self):
         """Test ShouldRun returns False."""
+        self.Patch(CuttlefishHostSetup, "_IsSupportedKvm", return_value=True)
         self.Patch(utils, "CheckUserInGroups", return_value=True)
         self.Patch(CuttlefishHostSetup, "_CheckLoadedModules", return_value=True)
         self.assertFalse(self.CuttlefishHostSetup.ShouldRun())
 
     def testShouldRunTrue(self):
         """Test ShouldRun returns True."""
+        self.Patch(CuttlefishHostSetup, "_IsSupportedKvm", return_value=True)
         # 1. Checking groups fails.
         self.Patch(
             utils, "CheckUserInGroups", return_value=False)
@@ -67,6 +70,28 @@
         self.assertTrue(self.CuttlefishHostSetup.ShouldRun())
 
     # pylint: disable=protected-access
+    def testIsSupportedKvm(self):
+        """Test _IsSupportedKvm."""
+        fake_success_message = (
+            "  QEMU: Checking for hardware virtualization                                 : PASS\n"
+            "  QEMU: Checking if device /dev/kvm exists                                   : PASS\n"
+            "  QEMU: Checking if device /dev/kvm is accessible                            : PASS\n")
+        fake_fail_message = (
+            "  QEMU: Checking for hardware virtualization                                 : FAIL"
+            "(Only emulated CPUs are available, performance will be significantly limited)\n"
+            "  QEMU: Checking if device /dev/vhost-net exists                             : PASS\n"
+            "  QEMU: Checking if device /dev/net/tun exists                               : PASS\n")
+        popen = mock.Mock(returncode=None)
+        popen.poll.return_value = None
+        popen.communicate.return_value = (fake_success_message, "stderr")
+        self.Patch(subprocess, "Popen", return_value=popen)
+        self.assertTrue(self.CuttlefishHostSetup._IsSupportedKvm())
+
+        popen.communicate.return_value = (fake_fail_message, "stderr")
+        self.Patch(subprocess, "Popen", return_value=popen)
+        self.assertFalse(self.CuttlefishHostSetup._IsSupportedKvm())
+
+    # pylint: disable=protected-access
     def testCheckLoadedModules(self):
         """Test _CheckLoadedModules."""
         self.Patch(