blob: 6d4329a0f807d705ef9666d8c69e2a99bab4fbbe [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_VIRTUALIZATION_LIB_GUEST_INTERACTION_TEST_INTEGRATION_TEST_LIB_H_
#define SRC_VIRTUALIZATION_LIB_GUEST_INTERACTION_TEST_INTEGRATION_TEST_LIB_H_
#include <fuchsia/virtualization/cpp/fidl.h>
#include "src/lib/testing/loop_fixture/real_loop_fixture.h"
#include "src/virtualization/tests/lib/fake_netstack.h"
// The host will copy kTestScriptSource to kGuestScriptDestination on the
// guest. The host will then ask the guest to exec kGuestScriptDestination
// and feed kTestScriptInput to the guest process's stdin. The script will
// will echo kTestStdout to stdout, kTestStderr to stderr, and kTestScriptInput
// to kGuestFileOutputLocation. The host will
// download the file to kHostOuputCopyLocation.
static constexpr char kTestScriptSource[] = "/pkg/data/test_script.sh";
static constexpr char kGuestScriptDestination[] = "/root/input/test_script.sh";
static constexpr char kTestStdout[] = "stdout";
static constexpr char kTestStderr[] = "stderr";
static constexpr char kTestScriptInput[] = "hello world\n";
static constexpr char kGuestFileOutputLocation[] = "/root/output/script_output.txt";
static constexpr char kHostOuputCopyLocation[] = "/tmp/copy";
class GuestInteractionTest : public gtest::RealLoopFixture {
protected:
void SetUp() override;
void TearDown() override;
void GetHostVsockEndpoint(
fidl::InterfaceRequest<::fuchsia::virtualization::HostVsockEndpoint> endpoint);
private:
std::optional<component_testing::RealmRoot> realm_root_;
fuchsia::virtualization::DebianGuestManagerSyncPtr guest_manager_;
fuchsia::virtualization::GuestPtr guest_;
FakeNetstack fake_netstack_;
};
#endif // SRC_VIRTUALIZATION_LIB_GUEST_INTERACTION_TEST_INTEGRATION_TEST_LIB_H_