Improve crashTest

This commit is contained in:
Guillaume J. Charmes 2013-04-28 07:10:58 -07:00
parent 76a1a7cf5b
commit cdc2657ee9

View file

@ -1,7 +1,6 @@
package main
import (
"bufio"
"fmt"
"io"
"log"
@ -17,7 +16,7 @@ var DOCKER_PATH string = path.Join(os.Getenv("DOCKERPATH"), "docker")
// WARNING: this crashTest will 1) crash your host, 2) remove all containers
func runDaemon() (*exec.Cmd, error) {
os.Remove("/var/run/docker.pid")
exec.Command("rm", "-rf", "/var/lib/docker/containers")
exec.Command("rm", "-rf", "/var/lib/docker/containers").Run()
cmd := exec.Command(DOCKER_PATH, "-d")
outPipe, err := cmd.StdoutPipe()
if err != nil {
@ -86,10 +85,10 @@ func crashTest() error {
if err != nil {
return err
}
inPipe, err := cmd.StdinPipe()
if err != nil {
return err
}
// inPipe, err := cmd.StdinPipe()
// if err != nil {
// return err
// }
if err := cmd.Start(); err != nil {
return err
}
@ -97,27 +96,34 @@ func crashTest() error {
io.Copy(os.Stdout, outPipe)
}()
// Expecting error, do not check
inPipe.Write([]byte("hello world!!!!!\n"))
go inPipe.Write([]byte("hello world!!!!!\n"))
go inPipe.Write([]byte("hello world!!!!!\n"))
inPipe.Close()
// inPipe.Write([]byte("hello world!!!!!\n"))
// go inPipe.Write([]byte("hello world!!!!!\n"))
// go inPipe.Write([]byte("hello world!!!!!\n"))
// inPipe.Close()
go func() error {
r := bufio.NewReader(outPipe)
if out, err := r.ReadString('\n'); err != nil {
return err
} else if out == "hello world\n" {
log.Printf("%d", i)
if conn != nil {
fmt.Fprintf(conn, "%d\n", totalTestCount)
}
i++
totalTestCount++
}
return nil
}()
// go func() error {
// r := bufio.NewReader(outPipe)
// if out, err := r.ReadString('\n'); err != nil {
// return err
// } else if out == "hello world\n" {
// log.Printf("%d", i)
// if conn != nil {
// fmt.Fprintf(conn, "%d\n", totalTestCount)
// }
// i++
// totalTestCount++
// }
// return nil
// }()
if err := cmd.Wait(); err != nil {
return err
} else {
log.Printf("%d", i)
if conn != nil {
fmt.Fprintf(conn, "%d\n", totalTestCount)
}
i++
totalTestCount++
}
outPipe.Close()
return nil