aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-09-12 17:12:12 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-09-12 17:38:54 +0200
commit01622de2d0ec3b6cc18aef5bcbd5e76dd634116e (patch)
tree3bac8083af4a8cd50b641f68deebcc1851bfdad3
parent7aa6bd6859a419bfb445a3621a14124fd7cecced (diff)
pkg/host: move machine info functionality from syz-fuzzer
It's better to keep functionality in packages rather than in main. It makes it reusable and better organized. Move machine info functionality to pkg/host and do some cosmetic refactoring.
-rw-r--r--pkg/host/machine_info.go34
-rw-r--r--pkg/host/machine_info_linux.go (renamed from syz-fuzzer/machine_info.go)35
-rw-r--r--pkg/host/machine_info_test.go (renamed from syz-fuzzer/machine_info_test.go)8
-rw-r--r--syz-fuzzer/fuzzer.go2
4 files changed, 45 insertions, 34 deletions
diff --git a/pkg/host/machine_info.go b/pkg/host/machine_info.go
new file mode 100644
index 000000000..7a7cd2612
--- /dev/null
+++ b/pkg/host/machine_info.go
@@ -0,0 +1,34 @@
+// Copyright 2020 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package host
+
+import (
+ "bytes"
+ "fmt"
+ "os"
+ "strings"
+)
+
+func CollectMachineInfo() ([]byte, error) {
+ buf := new(bytes.Buffer)
+ for _, pair := range machineInfoFuncs {
+ fmt.Fprintf(buf, "[%s]\n", pair.name)
+ err := pair.fn(buf)
+ if err != nil {
+ if !os.IsNotExist(err) {
+ return nil, err
+ }
+ fmt.Fprintf(buf, "%v\n", err)
+ }
+ fmt.Fprintf(buf, "%v\n\n", strings.Repeat("-", 80))
+ }
+ return buf.Bytes(), nil
+}
+
+var machineInfoFuncs []machineInfoFunc
+
+type machineInfoFunc struct {
+ name string
+ fn func(*bytes.Buffer) error
+}
diff --git a/syz-fuzzer/machine_info.go b/pkg/host/machine_info_linux.go
index 040655e62..da1ee481a 100644
--- a/syz-fuzzer/machine_info.go
+++ b/pkg/host/machine_info_linux.go
@@ -1,7 +1,7 @@
// Copyright 2020 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
-package main
+package host
import (
"bufio"
@@ -10,41 +10,14 @@ import (
"io/ioutil"
"os"
"path/filepath"
- "runtime"
"strings"
)
-func CollectMachineInfo() ([]byte, error) {
- if runtime.GOOS != "linux" {
- return nil, nil
- }
-
- type machineInfoFunc struct {
- name string
- fn func(*bytes.Buffer) error
- }
-
- allMachineInfo := []machineInfoFunc{
+func init() {
+ machineInfoFuncs = []machineInfoFunc{
{"CPU Info", readCPUInfo},
{"KVM", readKVMInfo},
}
-
- buffer := new(bytes.Buffer)
-
- for _, pair := range allMachineInfo {
- fmt.Fprintf(buffer, "[%s]\n", pair.name)
- err := pair.fn(buffer)
- if err != nil {
- if os.IsNotExist(err) {
- buffer.WriteString(err.Error() + "\n")
- } else {
- return nil, err
- }
- }
- fmt.Fprintf(buffer, "-----------------------------------\n\n")
- }
-
- return buffer.Bytes(), nil
}
func readCPUInfo(buffer *bytes.Buffer) error {
@@ -143,7 +116,7 @@ func readKVMInfo(buffer *bytes.Buffer) error {
fmt.Fprintf(buffer, "\t%s: ", keyName)
buffer.Write(data)
}
- buffer.WriteString("\n")
+ buffer.WriteByte('\n')
}
return nil
}
diff --git a/syz-fuzzer/machine_info_test.go b/pkg/host/machine_info_test.go
index 71633ca5b..49ef93fe0 100644
--- a/syz-fuzzer/machine_info_test.go
+++ b/pkg/host/machine_info_test.go
@@ -1,16 +1,20 @@
// Copyright 2020 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
-package main
+package host
import (
"bufio"
"bytes"
+ "runtime"
"strings"
"testing"
)
func TestMachineInfoLinux(t *testing.T) {
+ if runtime.GOOS != "linux" {
+ t.Skip()
+ }
result, err := CollectMachineInfo()
if err != nil {
t.Fatal(err)
@@ -116,7 +120,7 @@ D: d
scanner := bufio.NewScanner(strings.NewReader(input))
buffer := new(bytes.Buffer)
scanCPUInfo(buffer, scanner)
- result := bufio.NewScanner(strings.NewReader(buffer.String()))
+ result := bufio.NewScanner(buffer)
idx := 0
for result.Scan() {
diff --git a/syz-fuzzer/fuzzer.go b/syz-fuzzer/fuzzer.go
index 3218d9b88..ae9a5af59 100644
--- a/syz-fuzzer/fuzzer.go
+++ b/syz-fuzzer/fuzzer.go
@@ -181,7 +181,7 @@ func main() {
runtime.MemProfileRate = 0
}
- machineInfo, err := CollectMachineInfo()
+ machineInfo, err := host.CollectMachineInfo()
if err != nil {
log.Fatalf("failed to collect machine information: %v", err)
}