aboutsummaryrefslogtreecommitdiffstats
path: root/ipc/ipc_test.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2015-12-23 13:38:31 +0100
committerDmitry Vyukov <dvyukov@google.com>2015-12-23 13:38:31 +0100
commite253cbc79fc20b65ce9dd965c6fe3adddac817ca (patch)
tree3a64c5a18d8b0a020c3cee24abbfe32fc468fc86 /ipc/ipc_test.go
parent071ad4e91f95f115236a639e934181c7e596f337 (diff)
csource: new package
Move C source generation into a separate package. Prog is too bloated already.
Diffstat (limited to 'ipc/ipc_test.go')
-rw-r--r--ipc/ipc_test.go42
1 files changed, 14 insertions, 28 deletions
diff --git a/ipc/ipc_test.go b/ipc/ipc_test.go
index b87bf4d2a..edb80b5f3 100644
--- a/ipc/ipc_test.go
+++ b/ipc/ipc_test.go
@@ -6,14 +6,13 @@ package ipc
import (
"bufio"
"bytes"
- "io/ioutil"
"math/rand"
"os"
- "os/exec"
"strings"
"testing"
"time"
+ "github.com/google/syzkaller/csource"
"github.com/google/syzkaller/prog"
)
@@ -22,33 +21,20 @@ func buildExecutor(t *testing.T) string {
}
func buildSource(t *testing.T, src []byte) string {
- srcf, err := ioutil.TempFile("", "syzkaller")
+ tmp, err := csource.WriteTempFile(src)
if err != nil {
- t.Fatalf("failed to create temp file: %v", err)
+ t.Fatalf("%v", err)
}
- srcf.Close()
- os.Remove(srcf.Name())
- name := srcf.Name() + ".c"
- if err := ioutil.WriteFile(name, src, 0600); err != nil {
- t.Fatalf("failed to write temp file: %v", err)
- }
- defer os.Remove(name)
- return buildProgram(t, name)
+ defer os.Remove(tmp)
+ return buildProgram(t, tmp)
}
func buildProgram(t *testing.T, src string) string {
- bin, err := ioutil.TempFile("", "syzkaller")
- if err != nil {
- t.Fatalf("failed to create temp file: %v", err)
- }
- bin.Close()
- out, err := exec.Command("gcc", src, "-o", bin.Name(), "-lpthread", "-static", "-O1", "-g").CombinedOutput()
+ bin, err := csource.Build(src)
if err != nil {
- os.Remove(bin.Name())
- data, _ := ioutil.ReadFile(src)
- t.Fatalf("failed to build program:\n%s\n%s", data, out)
+ t.Fatalf("%v", err)
}
- return bin.Name()
+ return bin
}
func initTest(t *testing.T) (rand.Source, int) {
@@ -73,7 +59,7 @@ func TestEmptyProg(t *testing.T) {
defer env.Close()
p := new(prog.Prog)
- output, strace, cov, failed, hanged, err := env.Exec(p)
+ output, strace, cov, _, failed, hanged, err := env.Exec(p)
if err != nil {
t.Fatalf("failed to run executor: %v", err)
}
@@ -102,7 +88,7 @@ func TestStrace(t *testing.T) {
defer env.Close()
p := new(prog.Prog)
- _, strace, _, failed, hanged, err := env.Exec(p)
+ _, strace, _, _, failed, hanged, err := env.Exec(p)
if err != nil {
t.Fatalf("failed to run executor: %v", err)
}
@@ -129,7 +115,7 @@ func TestExecute(t *testing.T) {
for i := 0; i < iters/len(flags); i++ {
p := prog.Generate(rs, 10, nil)
- _, _, _, _, _, err := env.Exec(p)
+ _, _, _, _, _, _, err := env.Exec(p)
if err != nil {
t.Fatalf("failed to run executor: %v", err)
}
@@ -163,12 +149,12 @@ func TestCompare(t *testing.T) {
rs, iters := initTest(t)
for i := 0; i < iters; i++ {
p := prog.Generate(rs, 10, nil)
- _, strace1, _, _, _, err := env1.Exec(p)
+ _, strace1, _, _, _, _, err := env1.Exec(p)
if err != nil {
t.Fatalf("failed to run executor: %v", err)
}
- src := p.WriteCSource()
+ src := csource.Write(p, csource.Options{})
cprog := buildSource(t, src)
defer os.Remove(cprog)
@@ -178,7 +164,7 @@ func TestCompare(t *testing.T) {
}
defer env2.Close() // yes, that's defer in a loop
- _, strace2, _, _, _, err := env2.Exec(nil)
+ _, strace2, _, _, _, _, err := env2.Exec(nil)
if err != nil {
t.Fatalf("failed to run c binary: %v", err)
}