diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-09-12 17:12:12 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-09-12 17:38:54 +0200 |
| commit | 01622de2d0ec3b6cc18aef5bcbd5e76dd634116e (patch) | |
| tree | 3bac8083af4a8cd50b641f68deebcc1851bfdad3 | |
| parent | 7aa6bd6859a419bfb445a3621a14124fd7cecced (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.go | 34 | ||||
| -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.go | 2 |
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) } |
