Merge pull request #4708 from kzys/enable-criu
Re-enable CRIU tests by not using overlayfs snapshotter
This commit is contained in:
commit
e0c94bb269
16
.github/workflows/ci.yml
vendored
16
.github/workflows/ci.yml
vendored
@ -322,6 +322,22 @@ jobs:
|
||||
sudo GOPATH=$GOPATH GOPROXY=$GOPROXY TEST_RUNTIME=$TEST_RUNTIME RUNC_FLAVOR=$RUNC_FLAVOR TESTFLAGS_PARALLEL=1 make integration EXTRA_TESTFLAGS=-no-criu
|
||||
working-directory: src/github.com/containerd/containerd
|
||||
|
||||
# CRIU wouldn't work with overlay snapshotter yet.
|
||||
# See https://github.com/containerd/containerd/pull/4708#issuecomment-724322294.
|
||||
- name: CRIU Integration
|
||||
env:
|
||||
GOPROXY: direct
|
||||
TEST_RUNTIME: ${{ matrix.runtime }}
|
||||
RUNC_FLAVOR: ${{ matrix.runc }}
|
||||
# crun doesn't have "checkpoint" command.
|
||||
if: ${{ matrix.runc == 'runc' }}
|
||||
run: |
|
||||
sudo GOPATH=$GOPATH GOPROXY=$GOPROXY \
|
||||
TEST_RUNTIME=$TEST_RUNTIME RUNC_FLAVOR=$RUNC_FLAVOR TESTFLAGS_PARALLEL=1 \
|
||||
TEST_SNAPSHOTTER=native \
|
||||
make integration EXTRA_TESTFLAGS='-run TestCheckpoint'
|
||||
working-directory: src/github.com/containerd/containerd
|
||||
|
||||
- name: CRI Integration Test
|
||||
env:
|
||||
TEST_RUNTIME: ${{ matrix.runtime }}
|
||||
|
@ -50,6 +50,7 @@ var (
|
||||
noCriu bool
|
||||
supportsCriu bool
|
||||
testNamespace = "testing"
|
||||
testSnapshotter = DefaultSnapshotter
|
||||
ctrdStdioFilePath string
|
||||
|
||||
ctrd = &daemon{}
|
||||
@ -132,11 +133,30 @@ func TestMain(m *testing.M) {
|
||||
|
||||
// allow comparison with containerd under test
|
||||
log.G(ctx).WithFields(logrus.Fields{
|
||||
"version": version.Version,
|
||||
"revision": version.Revision,
|
||||
"runtime": os.Getenv("TEST_RUNTIME"),
|
||||
"version": version.Version,
|
||||
"revision": version.Revision,
|
||||
"runtime": os.Getenv("TEST_RUNTIME"),
|
||||
"snapshotter": os.Getenv("TEST_SNAPSHOTTER"),
|
||||
}).Info("running tests against containerd")
|
||||
|
||||
snapshotter := DefaultSnapshotter
|
||||
if ss := os.Getenv("TEST_SNAPSHOTTER"); ss != "" {
|
||||
snapshotter = ss
|
||||
}
|
||||
|
||||
ns, ok := namespaces.Namespace(ctx)
|
||||
if !ok {
|
||||
fmt.Fprintln(os.Stderr, "error getting namespace")
|
||||
os.Exit(1)
|
||||
}
|
||||
err = client.NamespaceService().SetLabel(ctx, ns, defaults.DefaultSnapshotterNSLabel, snapshotter)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "error setting %s's default snapshotter as %s: %s\n", ns, snapshotter, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
testSnapshotter = snapshotter
|
||||
|
||||
// pull a seed image
|
||||
log.G(ctx).WithField("image", testImage).Info("start to pull seed image")
|
||||
if _, err = client.Pull(ctx, testImage, WithPullUnpack); err != nil {
|
||||
@ -285,7 +305,7 @@ func TestImagePullWithDiscardContent(t *testing.T) {
|
||||
t.Fatalf("there is no layers in the target image(parent: %v)", img.Target())
|
||||
}
|
||||
var (
|
||||
sn = client.SnapshotService("")
|
||||
sn = client.SnapshotService(testSnapshotter)
|
||||
chain []digest.Digest
|
||||
)
|
||||
for i, dgst := range layers {
|
||||
|
@ -414,7 +414,7 @@ func TestCheckpointLeaveRunning(t *testing.T) {
|
||||
<-statusC
|
||||
}
|
||||
|
||||
func TestCRWithImagePath(t *testing.T) {
|
||||
func TestCheckpointRestoreWithImagePath(t *testing.T) {
|
||||
if !supportsCriu {
|
||||
t.Skip("system does not have criu installed")
|
||||
}
|
||||
|
@ -193,11 +193,15 @@ func (p *Init) createCheckpointedState(r *CreateConfig, pidFile *pidFile) error
|
||||
ParentPath: r.ParentCheckpoint,
|
||||
},
|
||||
PidFile: pidFile.Path(),
|
||||
IO: p.io.IO(),
|
||||
NoPivot: p.NoPivotRoot,
|
||||
Detach: true,
|
||||
NoSubreaper: true,
|
||||
}
|
||||
|
||||
if p.io != nil {
|
||||
opts.IO = p.io.IO()
|
||||
}
|
||||
|
||||
p.initState = &createdCheckpointState{
|
||||
p: p,
|
||||
opts: opts,
|
||||
|
@ -49,7 +49,7 @@ func NewContainer(ctx context.Context, platform stdio.Platform, r *task.CreateTa
|
||||
}
|
||||
|
||||
var opts options.Options
|
||||
if r.Options != nil {
|
||||
if r.Options != nil && r.Options.GetTypeUrl() != "" {
|
||||
v, err := typeurl.UnmarshalAny(r.Options)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
Loading…
Reference in New Issue
Block a user