diff --git a/contrib/crashTest.go b/contrib/crashTest.go deleted file mode 100644 index 6da89bf887..0000000000 --- a/contrib/crashTest.go +++ /dev/null @@ -1,125 +0,0 @@ -package main - -import ( - "fmt" - "io" - "log" - "net" - "os" - "os/exec" - "path" - "time" -) - -var DOCKERPATH = 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").Run() - cmd := exec.Command(DOCKERPATH, "-d") - outPipe, err := cmd.StdoutPipe() - if err != nil { - return nil, err - } - errPipe, err := cmd.StderrPipe() - if err != nil { - return nil, err - } - if err := cmd.Start(); err != nil { - return nil, err - } - go func() { - io.Copy(os.Stdout, outPipe) - }() - go func() { - io.Copy(os.Stderr, errPipe) - }() - return cmd, nil -} - -func crashTest() error { - if err := exec.Command("/bin/bash", "-c", "while true; do true; done").Start(); err != nil { - return err - } - - var endpoint string - if ep := os.Getenv("TEST_ENDPOINT"); ep == "" { - endpoint = "192.168.56.1:7979" - } else { - endpoint = ep - } - - c := make(chan bool) - var conn io.Writer - - go func() { - conn, _ = net.Dial("tcp", endpoint) - c <- false - }() - go func() { - time.Sleep(2 * time.Second) - c <- true - }() - <-c - - restartCount := 0 - totalTestCount := 1 - for { - daemon, err := runDaemon() - if err != nil { - return err - } - restartCount++ - // time.Sleep(5000 * time.Millisecond) - var stop bool - go func() error { - stop = false - for i := 0; i < 100 && !stop; { - func() error { - cmd := exec.Command(DOCKERPATH, "run", "ubuntu", "echo", fmt.Sprintf("%d", totalTestCount)) - i++ - totalTestCount++ - outPipe, err := cmd.StdoutPipe() - if err != nil { - return err - } - inPipe, err := cmd.StdinPipe() - if err != nil { - return err - } - if err := cmd.Start(); err != nil { - return err - } - if conn != nil { - go io.Copy(conn, 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() - - if err := cmd.Wait(); err != nil { - return err - } - outPipe.Close() - return nil - }() - } - return nil - }() - time.Sleep(20 * time.Second) - stop = true - if err := daemon.Process.Kill(); err != nil { - return err - } - } -} - -func main() { - if err := crashTest(); err != nil { - log.Println(err) - } -}