Skip to content

Commit

Permalink
Merge pull request #40 from thaJeztah/remove_gotest_tools
Browse files Browse the repository at this point in the history
Rewrite test to not depend on gotest.tools
  • Loading branch information
fuweid committed Mar 22, 2021
2 parents 7427b78 + 6866099 commit 0e92c22
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 28 deletions.
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,4 @@ require (
github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible
github.com/pkg/errors v0.9.1
gotest.tools/v3 v3.0.3
)
1 change: 0 additions & 1 deletion plugin/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"github.com/pkg/errors"
)


// Config represents configuration for the zfs plugin
type Config struct {
// Root directory for the plugin
Expand Down
83 changes: 57 additions & 26 deletions zfs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import (
"github.com/containerd/continuity/testutil/loopback"
zfs "github.com/mistifyio/go-zfs"
"github.com/pkg/errors"
"gotest.tools/v3/assert"
)

func newTestZpool() (string, func() error, error) {
Expand Down Expand Up @@ -106,74 +105,106 @@ func TestZFSUsage(t *testing.T) {

// Create temporary directory
root, err := ioutil.TempDir("", "TestZFSUsage-")
assert.NilError(t, err)
if err != nil {
t.Error(err)
}
defer os.RemoveAll(root)

// Create the snapshotter
z, closer, err := newSnapshotter()(ctx, root)
assert.NilError(t, err)
if err != nil {
t.Error(err)
}
defer closer() //nolint:errcheck

// Prepare empty base layer
target := filepath.Join(root, "prepare-1")
_, err = z.Prepare(ctx, target, "")
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

emptyLayerUsage, err := z.Usage(ctx, target)
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

// Check that the empty layer has non-zero size from metadata
assert.Assert(t, emptyLayerUsage.Size > 0)
if emptyLayerUsage.Size <= 0 {
t.Errorf("expected layer2Usage.Size to be > 0, got: %d", emptyLayerUsage.Size)
}

err = z.Commit(ctx, filepath.Join(root, "layer-1"), target)
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

// Create a child layer with a 1MB file
var (
oneMB int64 = 1048576 // 1MB
baseApplier = fstest.Apply(fstest.CreateRandomFile("/a", 12345679, oneMB, 0777))
const (
oneMB int64 = 1048576 // 1MB
twoMB int64 = 2097152 // 2MB
)

// Create a child layer with a 1MB file
baseApplier := fstest.Apply(fstest.CreateRandomFile("/a", 12345679, oneMB, 0777))

target = filepath.Join(root, "prepare-2")
mounts, err := z.Prepare(ctx, target, filepath.Join(root, "layer-1"))
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

err = mount.WithTempMount(ctx, mounts, baseApplier.Apply)
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

// Commit the second layer
err = z.Commit(ctx, filepath.Join(root, "layer-2"), target)
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

layer2Usage, err := z.Usage(ctx, filepath.Join(root, "layer-2"))
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

// Should be at least 1 MB + fs metadata
assert.Check(t, layer2Usage.Size > oneMB,
"%d > %d", layer2Usage.Size, oneMB)
if layer2Usage.Size <= oneMB {
t.Errorf("expected layer2Usage.Size to be > %d, got: %d", oneMB, layer2Usage.Size)
}

// Create another child layer with a 2MB file
var twoMB int64 = 2097152 // 2MB
baseApplier = fstest.Apply(fstest.CreateRandomFile("/b", 12345679, twoMB, 0777))

target = filepath.Join(root, "prepare-3")
mounts, err = z.Prepare(ctx, target, filepath.Join(root, "layer-2"))
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

err = mount.WithTempMount(ctx, mounts, baseApplier.Apply)
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

err = z.Commit(ctx, filepath.Join(root, "layer-3"), target)
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

layer3Usage, err := z.Usage(ctx, filepath.Join(root, "layer-3"))
assert.NilError(t, err)
if err != nil {
t.Error(err)
}

// Should be at least 2 MB + fs metadata
assert.Check(t, layer3Usage.Size > twoMB,
"%d > %d", layer3Usage.Size, twoMB)
if layer3Usage.Size <= twoMB {
t.Errorf("expected layer3Usage.Size to be > %d, got: %d", twoMB, layer3Usage.Size)
}

// Should not include the parent snapshot's usage
assert.Check(t, layer3Usage.Size < (layer2Usage.Size+twoMB),
"%d < %d", layer3Usage.Size, (layer2Usage.Size + twoMB))
if layer3Usage.Size >= (layer2Usage.Size + twoMB) {
t.Errorf("expected layer3Usage.Size to be < %d, got: %d", layer2Usage.Size+twoMB, layer3Usage.Size)
}
}

0 comments on commit 0e92c22

Please sign in to comment.