[guest][integration] Add Linux virtio-rng tests
TEST=guest_integration_tests
Change-Id: If99905db2d598299c6602f3774012a9fe1d63180
diff --git a/bin/guest/integration_tests/main.cc b/bin/guest/integration_tests/main.cc
index 98f0c8b..da0211c 100644
--- a/bin/guest/integration_tests/main.cc
+++ b/bin/guest/integration_tests/main.cc
@@ -13,13 +13,38 @@
using ::testing::HasSubstr;
static constexpr char kVirtioRngUtilCmx[] = "meta/virtio_rng_test_util.cmx";
+static constexpr char kLinuxTestUtilDir[] = "/testutils";
+
+class ZirconSingleCpuGuestTest : public GuestTest<ZirconSingleCpuGuestTest> {
+ public:
+ static bool LaunchInfo(fuchsia::guest::LaunchInfo* launch_info) {
+ launch_info->url = kZirconGuestUrl;
+ launch_info->args.push_back("--virtio-gpu=false");
+ launch_info->args.push_back("--cpus=1");
+ launch_info->args.push_back("--cmdline-add=kernel.serial=none");
+ return true;
+ }
+
+ static bool SetUpGuest() {
+ if (WaitForAppmgrReady() != ZX_OK) {
+ ADD_FAILURE() << "Failed to wait for appmgr";
+ return false;
+ }
+ return true;
+ }
+};
+
+TEST_F(ZirconSingleCpuGuestTest, LaunchGuest) {
+ std::string result;
+ EXPECT_EQ(Execute("echo \"test\"", &result), ZX_OK);
+ EXPECT_EQ(result, "test\n");
+}
class ZirconGuestTest : public GuestTest<ZirconGuestTest> {
public:
static bool LaunchInfo(fuchsia::guest::LaunchInfo* launch_info) {
launch_info->url = kZirconGuestUrl;
launch_info->args.push_back("--virtio-gpu=false");
- launch_info->args.push_back("--cpus=1");
launch_info->args.push_back("--cmdline-add=kernel.serial=none");
return true;
}
@@ -45,18 +70,27 @@
EXPECT_THAT(result, HasSubstr("PASS"));
}
-class ZirconMultiprocessorGuestTest
- : public GuestTest<ZirconMultiprocessorGuestTest> {
+class LinuxSingleCpuGuestTest : public GuestTest<LinuxSingleCpuGuestTest> {
public:
static bool LaunchInfo(fuchsia::guest::LaunchInfo* launch_info) {
- launch_info->url = kZirconGuestUrl;
+ launch_info->url = kLinuxGuestUrl;
launch_info->args.push_back("--virtio-gpu=false");
- launch_info->args.push_back("--cmdline-add=kernel.serial=none");
+ launch_info->args.push_back("--cpus=1");
+ launch_info->args.push_back(
+ "--cmdline=loglevel=0 console=hvc0 root=/dev/vda rw");
+ return true;
+ }
+
+ static bool SetUpGuest() {
+ if (WaitForShellReady() != ZX_OK) {
+ ADD_FAILURE() << "Failed to wait for shell";
+ return false;
+ }
return true;
}
};
-TEST_F(ZirconMultiprocessorGuestTest, LaunchGuest) {
+TEST_F(LinuxSingleCpuGuestTest, LaunchGuest) {
std::string result;
EXPECT_EQ(Execute("echo \"test\"", &result), ZX_OK);
EXPECT_EQ(result, "test\n");
@@ -67,7 +101,6 @@
static bool LaunchInfo(fuchsia::guest::LaunchInfo* launch_info) {
launch_info->url = kLinuxGuestUrl;
launch_info->args.push_back("--virtio-gpu=false");
- launch_info->args.push_back("--cpus=1");
launch_info->args.push_back(
"--cmdline=loglevel=0 console=hvc0 root=/dev/vda rw");
return true;
@@ -88,28 +121,10 @@
EXPECT_EQ(result, "test\n");
}
-class LinuxMultiprocessorGuestTest
- : public GuestTest<LinuxMultiprocessorGuestTest> {
- public:
- static bool LaunchInfo(fuchsia::guest::LaunchInfo* launch_info) {
- launch_info->url = kLinuxGuestUrl;
- launch_info->args.push_back("--virtio-gpu=false");
- launch_info->args.push_back(
- "--cmdline=loglevel=0 console=hvc0 root=/dev/vda rw");
- return true;
- }
-
- static bool SetUpGuest() {
- if (WaitForShellReady() != ZX_OK) {
- ADD_FAILURE() << "Failed to wait for shell";
- return false;
- }
- return true;
- }
-};
-
-TEST_F(LinuxMultiprocessorGuestTest, LaunchGuest) {
+TEST_F(LinuxGuestTest, VirtioRng) {
+ std::string cmd =
+ fxl::StringPrintf("%s/%s", kLinuxTestUtilDir, "virtio_rng_test_util");
std::string result;
- EXPECT_EQ(Execute("echo \"test\"", &result), ZX_OK);
- EXPECT_EQ(result, "test\n");
-}
+ EXPECT_EQ(Execute(cmd, &result), ZX_OK);
+ EXPECT_THAT(result, HasSubstr("PASS"));
+}
\ No newline at end of file