From a33d658001a3e7b9b47e151cd5625468e69307e9 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Fri, 21 Sep 2018 01:00:17 +0000 Subject: [PATCH] Use configuration file for tests instead of hardcoded kernel/qcow2 path --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ qemu-kernel_test.go | 9 +++------ test.config.go | 8 ++++++++ 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 test.config.go diff --git a/README.md b/README.md index da26ade..7143151 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,43 @@ # go-qemu-kernel + Qemu wrapper for kernel-related CI tasks + +## Usage + +TODO + +## Development + + $ go get github.com/jollheef/go-qemu-kernel + +### Generate root image + +First of all we need to generate rootfs for run qemu. + +#### GNU/Linux + + $ sudo apt install -y debootstrap qemu + $ sudo qemu-debian-img generate sid.img + +#### macOS + +Note: qemu on macOS since v2.12 (24 April 2018) supports Hypervisor.framework. + + $ brew install qemu + +Because it's a very complicated to debootstrap qemu images from macOS, +preferred way is to use Vagrant with any hypervisor. + + $ brew cask install vagrant + $ cd $GOPATH/src/github.com/jollheef/go-qemu-kernel/tools/qemu-debian-image + $ vagrant up && vagrant destroy -f + +bionic.img and bionic-vmlinuz will be created in current directory. + +### Fill configuration file + + $ $EDITOR $GOPATH/src/github.com/jollheef/go-qemu-kernel/test.config.go + +### Run tests + + $ go test -v diff --git a/qemu-kernel_test.go b/qemu-kernel_test.go index b0a6031..6832d03 100644 --- a/qemu-kernel_test.go +++ b/qemu-kernel_test.go @@ -42,8 +42,7 @@ func TestQemuSystemNew(t *testing.T) { } func TestQemuSystemStart(t *testing.T) { - // TODO check kernel path on other distros than gentoo - kernel := Kernel{Name: "Host kernel", Path: "/boot/vmlinuz-4.18.8"} + kernel := Kernel{Name: "Host kernel", Path: testConfigVmlinuz} qemu, err := NewQemuSystem(X86_64, kernel, "/bin/sh") if err != nil { t.Fatal(err) @@ -66,10 +65,8 @@ func TestGetFreeAddrPort(t *testing.T) { } func startTestQemu() (q *QemuSystem, err error) { - // FIXME hardcoded kernel path - kernel := Kernel{Name: "Host kernel", Path: "/boot/vmlinuz-4.18.8"} - // FIXME hardcoded qcow2 path - q, err = NewQemuSystem(X86_64, kernel, "/home/user/qemu/sid.img") + kernel := Kernel{Name: "Host kernel", Path: testConfigVmlinuz} + q, err = NewQemuSystem(X86_64, kernel, testConfigRootfs) if err != nil { return } diff --git a/test.config.go b/test.config.go new file mode 100644 index 0000000..036d9c3 --- /dev/null +++ b/test.config.go @@ -0,0 +1,8 @@ +// Copyright 2018 Mikhail Klementev. All rights reserved. +// Use of this source code is governed by a GPLv3 license +// (or later) that can be found in the LICENSE file. + +package qemukernel + +const testConfigVmlinuz = "tools/qemu-debian-img/vmlinuz-bionic" +const testConfigRootfs = "tools/qemu-debian-img/bionic.img"