Merge pull request #176 from mlaventure/top-kill-test
Add test for the kill/signal operations
This commit is contained in:
commit
dd9c474c6c
1 changed files with 91 additions and 0 deletions
|
@ -2,6 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/docker/containerd/api/grpc/types"
|
"github.com/docker/containerd/api/grpc/types"
|
||||||
|
@ -134,3 +135,93 @@ func (cs *ContainerdSuite) TestStartBusyboxSleep(t *check.C) {
|
||||||
t.Fatal("Container took more than 6 seconds to exit")
|
t.Fatal("Container took more than 6 seconds to exit")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cs *ContainerdSuite) TestStartBusyboxTopKill(t *check.C) {
|
||||||
|
bundleName := "busybox-top"
|
||||||
|
if err := CreateBusyboxBundle(bundleName, []string{"top"}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
containerId := "top"
|
||||||
|
c, err := cs.StartContainer("top", bundleName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
<-time.After(1 * time.Second)
|
||||||
|
|
||||||
|
err = cs.KillContainer(containerId)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, evt := range []types.Event{
|
||||||
|
{
|
||||||
|
Type: "start-container",
|
||||||
|
Id: containerId,
|
||||||
|
Status: 0,
|
||||||
|
Pid: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Type: "exit",
|
||||||
|
Id: containerId,
|
||||||
|
Status: 128 + uint32(syscall.SIGKILL),
|
||||||
|
Pid: "init",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
ch := c.GetEventsChannel()
|
||||||
|
select {
|
||||||
|
case e := <-ch:
|
||||||
|
evt.Timestamp = e.Timestamp
|
||||||
|
|
||||||
|
t.Assert(*e, checker.Equals, evt)
|
||||||
|
case <-time.After(2 * time.Second):
|
||||||
|
t.Fatal("Container took more than 2 seconds to terminate")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cs *ContainerdSuite) TestStartBusyboxTopSignalSigterm(t *check.C) {
|
||||||
|
bundleName := "busybox-top"
|
||||||
|
if err := CreateBusyboxBundle(bundleName, []string{"top"}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
containerId := "top"
|
||||||
|
c, err := cs.StartContainer("top", bundleName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
<-time.After(1 * time.Second)
|
||||||
|
|
||||||
|
err = cs.SignalContainer(containerId, uint32(syscall.SIGTERM))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, evt := range []types.Event{
|
||||||
|
{
|
||||||
|
Type: "start-container",
|
||||||
|
Id: containerId,
|
||||||
|
Status: 0,
|
||||||
|
Pid: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Type: "exit",
|
||||||
|
Id: containerId,
|
||||||
|
Status: 128 + uint32(syscall.SIGTERM),
|
||||||
|
Pid: "init",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
ch := c.GetEventsChannel()
|
||||||
|
select {
|
||||||
|
case e := <-ch:
|
||||||
|
evt.Timestamp = e.Timestamp
|
||||||
|
|
||||||
|
t.Assert(*e, checker.Equals, evt)
|
||||||
|
case <-time.After(2 * time.Second):
|
||||||
|
t.Fatal("Container took more than 2 seconds to terminate")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue