blob: 35ae289615fa41796e4a737f266fdf46b0e5a6b3 [file] [log] [blame]
// Copyright 2020 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.
package main
import (
"os"
"path/filepath"
"strings"
"testing"
"go.fuchsia.dev/fuchsia/tools/emulator"
"go.fuchsia.dev/fuchsia/tools/emulator/emulatortest"
)
func TestEnableDebuggingSyscalls(t *testing.T) {
exDir := execDir(t)
distro := emulatortest.UnpackFrom(t, filepath.Join(exDir, "test_data"), emulator.DistributionParams{
Emulator: emulator.Qemu,
})
arch := distro.TargetCPU()
device := emulator.DefaultVirtualDevice(string(arch))
device.Initrd = "zircon-r" // zedboot zbi.
device.KernelArgs = append(device.KernelArgs, "kernel.enable-debugging-syscalls=true ", "kernel.enable-serial-syscalls=true")
stdout, stderr := distro.RunNonInteractive(
"/boot/bin/syscall-check",
filepath.Join(exDir, "test_data", "tools", "minfs"),
filepath.Join(exDir, "test_data", "tools", "zbi"),
device,
)
ensureContains(t, stdout, "zx_debug_read: enabled")
ensureContains(t, stdout, "zx_debug_send_command: enabled")
ensureContains(t, stdout, "zx_debug_write: enabled")
ensureContains(t, stdout, "zx_ktrace_control: enabled")
ensureContains(t, stdout, "zx_ktrace_read: enabled")
ensureContains(t, stdout, "zx_ktrace_write: enabled")
ensureContains(t, stdout, "zx_mtrace_control: enabled")
ensureContains(t, stdout, "zx_process_write_memory: enabled")
ensureContains(t, stdout, "zx_system_mexec: enabled")
ensureContains(t, stdout, "zx_system_mexec_payload_get: enabled")
ensureContains(t, stdout, "zx_thread_write_state: enabled")
if stderr != "" {
t.Fatal(stderr)
}
}
func execDir(t *testing.T) string {
ex, err := os.Executable()
if err != nil {
t.Fatal(err)
}
return filepath.Dir(ex)
}
func ensureContains(t *testing.T, output string, lookFor string) {
if !strings.Contains(output, lookFor) {
t.Fatalf("output did not contain '%s'", lookFor)
}
}