| // Copyright 2017 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 mgrconfig |
| |
| import ( |
| "path/filepath" |
| "testing" |
| |
| "github.com/google/syzkaller/pkg/config" |
| "github.com/google/syzkaller/vm/gce" |
| "github.com/google/syzkaller/vm/qemu" |
| ) |
| |
| func TestCanned(t *testing.T) { |
| files, err := filepath.Glob(filepath.Join("testdata", "*.cfg")) |
| if err != nil || len(files) == 0 { |
| t.Fatalf("failed to read input files: %v", err) |
| } |
| for _, file := range files { |
| t.Run(file, func(t *testing.T) { |
| cfg := new(Config) |
| if err := config.LoadFile(file, cfg); err != nil { |
| t.Fatal(err) |
| } |
| var vmCfg interface{} |
| switch cfg.Type { |
| case "qemu": |
| vmCfg = new(qemu.Config) |
| case "gce": |
| vmCfg = new(gce.Config) |
| default: |
| t.Fatalf("unknown VM type: %v", cfg.Type) |
| } |
| if err := config.LoadData(cfg.VM, vmCfg); err != nil { |
| t.Fatalf("failed to load %v config: %v", cfg.Type, err) |
| } |
| }) |
| } |
| } |
| |
| func TestMatchSyscall(t *testing.T) { |
| tests := []struct { |
| pattern string |
| call string |
| result bool |
| }{ |
| {"foo", "foo", true}, |
| {"foo", "bar", false}, |
| {"foo", "foo$BAR", true}, |
| {"foo*", "foo", true}, |
| {"foo*", "foobar", true}, |
| {"foo*", "foo$BAR", true}, |
| {"foo$*", "foo", false}, |
| {"foo$*", "foo$BAR", true}, |
| } |
| for i, test := range tests { |
| res := matchSyscall(test.call, test.pattern) |
| if res != test.result { |
| t.Errorf("#%v: pattern=%q call=%q want=%v got=%v", |
| i, test.pattern, test.call, test.result, res) |
| } |
| } |
| } |