dotcloud/docker

View on GitHub
cmd/dockerd/trap/testfiles/main.go

Summary

Maintainability
A
0 mins
Test Coverage
package main

import (
    "os"
    "syscall"
    "time"

    "github.com/docker/docker/cmd/dockerd/trap"
)

func main() {
    sigmap := map[string]os.Signal{
        "TERM": syscall.SIGTERM,
        "QUIT": syscall.SIGQUIT,
        "INT":  os.Interrupt,
    }
    trap.Trap(func() {
        time.Sleep(time.Second)
        os.Exit(99)
    })
    go func() {
        p, err := os.FindProcess(os.Getpid())
        if err != nil {
            panic(err)
        }
        s := os.Getenv("SIGNAL_TYPE")
        multiple := os.Getenv("IF_MULTIPLE")
        switch s {
        case "TERM", "INT":
            if multiple == "1" {
                for {
                    p.Signal(sigmap[s])
                }
            } else {
                p.Signal(sigmap[s])
            }
        case "QUIT":
            p.Signal(sigmap[s])
        }
    }()
    time.Sleep(2 * time.Second)
}