Skip to content

Commit

Permalink
Grab changes form moby/moby/graphdriver for overlay quota support
Browse files Browse the repository at this point in the history
This led to lots of packages being updated from moby
I tried not to pull in the snap driver stuff.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
  • Loading branch information
rhatdan committed Sep 7, 2017
1 parent 72ed4e3 commit 30e8fa4
Show file tree
Hide file tree
Showing 33 changed files with 1,128 additions and 352 deletions.
227 changes: 151 additions & 76 deletions drivers/aufs/aufs.go

Large diffs are not rendered by default.

117 changes: 71 additions & 46 deletions drivers/aufs/aufs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ import (
"sync"
"testing"

"github.com/containers/storage/drivers"
"path/filepath"

"github.com/containers/storage/daemon/graphdriver"
"github.com/containers/storage/pkg/archive"
"github.com/containers/storage/pkg/reexec"
"github.com/containers/storage/pkg/stringid"
"github.com/pkg/errors"
)

var (
Expand All @@ -31,7 +32,7 @@ func init() {
func testInit(dir string, t testing.TB) graphdriver.Driver {
d, err := Init(dir, nil, nil, nil)
if err != nil {
if errors.Cause(err) == graphdriver.ErrNotSupported {
if err == graphdriver.ErrNotSupported {
t.Skip(err)
} else {
t.Fatal(err)
Expand All @@ -57,7 +58,7 @@ func TestNewDriver(t *testing.T) {
d := testInit(tmp, t)
defer os.RemoveAll(tmp)
if d == nil {
t.Fatalf("Driver should not be nil")
t.Fatal("Driver should not be nil")
}
}

Expand Down Expand Up @@ -102,7 +103,7 @@ func TestCreateNewDir(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}
}
Expand All @@ -111,7 +112,7 @@ func TestCreateNewDirStructure(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -132,7 +133,7 @@ func TestRemoveImage(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -148,7 +149,10 @@ func TestRemoveImage(t *testing.T) {

for _, p := range paths {
if _, err := os.Stat(path.Join(tmp, p, "1")); err == nil {
t.Fatalf("Error should not be nil because dirs with id 1 should be delted: %s", p)
t.Fatalf("Error should not be nil because dirs with id 1 should be deleted: %s", p)
}
if _, err := os.Stat(path.Join(tmp, p, "1-removing")); err == nil {
t.Fatalf("Error should not be nil because dirs with id 1-removing should be deleted: %s", p)
}
}
}
Expand All @@ -157,7 +161,7 @@ func TestGetWithoutParent(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -184,7 +188,7 @@ func TestCleanupWithDir(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -197,7 +201,7 @@ func TestMountedFalseResponse(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -207,19 +211,19 @@ func TestMountedFalseResponse(t *testing.T) {
}

if response != false {
t.Fatalf("Response if dir id 1 is mounted should be false")
t.Fatal("Response if dir id 1 is mounted should be false")
}
}

func TestMountedTrueReponse(t *testing.T) {
func TestMountedTrueResponse(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)
defer d.Cleanup()

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}
if err := d.Create("2", "1", "", nil); err != nil {
if err := d.Create("2", "1", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -234,18 +238,18 @@ func TestMountedTrueReponse(t *testing.T) {
}

if response != true {
t.Fatalf("Response if dir id 2 is mounted should be true")
t.Fatal("Response if dir id 2 is mounted should be true")
}
}

func TestMountWithParent(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}
if err := d.Create("2", "1", "", nil); err != nil {
if err := d.Create("2", "1", nil); err != nil {
t.Fatal(err)
}

Expand Down Expand Up @@ -273,10 +277,10 @@ func TestRemoveMountedDir(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}
if err := d.Create("2", "1", "", nil); err != nil {
if err := d.Create("2", "1", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -300,7 +304,7 @@ func TestRemoveMountedDir(t *testing.T) {
}

if !mounted {
t.Fatalf("Dir id 2 should be mounted")
t.Fatal("Dir id 2 should be mounted")
}

if err := d.Remove("2"); err != nil {
Expand All @@ -312,16 +316,16 @@ func TestCreateWithInvalidParent(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "storage", "", nil); err == nil {
t.Fatalf("Error should not be nil with parent does not exist")
if err := d.Create("1", "docker", nil); err == nil {
t.Fatal("Error should not be nil with parent does not exist")
}
}

func TestGetDiff(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.CreateReadWrite("1", "", "", nil); err != nil {
if err := d.CreateReadWrite("1", "", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -347,18 +351,19 @@ func TestGetDiff(t *testing.T) {
t.Fatal(err)
}
if a == nil {
t.Fatalf("Archive should not be nil")
t.Fatal("Archive should not be nil")
}
}

func TestChanges(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}
if err := d.CreateReadWrite("2", "1", "", nil); err != nil {

if err := d.CreateReadWrite("2", "1", nil); err != nil {
t.Fatal(err)
}

Expand Down Expand Up @@ -404,7 +409,7 @@ func TestChanges(t *testing.T) {
t.Fatalf("Change kind should be ChangeAdd got %s", change.Kind)
}

if err := d.CreateReadWrite("3", "2", "", nil); err != nil {
if err := d.CreateReadWrite("3", "2", nil); err != nil {
t.Fatal(err)
}
mntPoint, err = d.Get("3", "")
Expand All @@ -425,7 +430,7 @@ func TestChanges(t *testing.T) {
t.Fatal(err)
}

changes, err = d.Changes("3", "")
changes, err = d.Changes("3", "2")
if err != nil {
t.Fatal(err)
}
Expand All @@ -449,7 +454,7 @@ func TestDiffSize(t *testing.T) {
d := newDriver(t)
defer os.RemoveAll(tmp)

if err := d.CreateReadWrite("1", "", "", nil); err != nil {
if err := d.CreateReadWrite("1", "", nil); err != nil {
t.Fatal(err)
}

Expand Down Expand Up @@ -491,7 +496,7 @@ func TestChildDiffSize(t *testing.T) {
defer os.RemoveAll(tmp)
defer d.Cleanup()

if err := d.CreateReadWrite("1", "", "", nil); err != nil {
if err := d.CreateReadWrite("1", "", nil); err != nil {
t.Fatal(err)
}

Expand Down Expand Up @@ -527,11 +532,11 @@ func TestChildDiffSize(t *testing.T) {
t.Fatalf("Expected size to be %d got %d", size, diffSize)
}

if err := d.Create("2", "1", "", nil); err != nil {
if err := d.Create("2", "1", nil); err != nil {
t.Fatal(err)
}

diffSize, err = d.DiffSize("2", "")
diffSize, err = d.DiffSize("2", "1")
if err != nil {
t.Fatal(err)
}
Expand All @@ -546,12 +551,12 @@ func TestExists(t *testing.T) {
defer os.RemoveAll(tmp)
defer d.Cleanup()

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}

if d.Exists("none") {
t.Fatal("id name should not exist in the driver")
t.Fatal("id none should not exist in the driver")
}

if !d.Exists("1") {
Expand All @@ -564,7 +569,7 @@ func TestStatus(t *testing.T) {
defer os.RemoveAll(tmp)
defer d.Cleanup()

if err := d.Create("1", "", "", nil); err != nil {
if err := d.Create("1", "", nil); err != nil {
t.Fatal(err)
}

Expand Down Expand Up @@ -593,7 +598,7 @@ func TestApplyDiff(t *testing.T) {
defer os.RemoveAll(tmp)
defer d.Cleanup()

if err := d.CreateReadWrite("1", "", "", nil); err != nil {
if err := d.CreateReadWrite("1", "", nil); err != nil {
t.Fatal(err)
}

Expand All @@ -619,10 +624,10 @@ func TestApplyDiff(t *testing.T) {
t.Fatal(err)
}

if err := d.Create("2", "", "", nil); err != nil {
if err := d.Create("2", "", nil); err != nil {
t.Fatal(err)
}
if err := d.Create("3", "2", "", nil); err != nil {
if err := d.Create("3", "2", nil); err != nil {
t.Fatal(err)
}

Expand Down Expand Up @@ -672,7 +677,7 @@ func testMountMoreThan42Layers(t *testing.T, mountPath string) {
}
current = hash(current)

if err := d.CreateReadWrite(current, parent, "", nil); err != nil {
if err := d.CreateReadWrite(current, parent, nil); err != nil {
t.Logf("Current layer %d", i)
t.Error(err)
}
Expand Down Expand Up @@ -744,25 +749,25 @@ func BenchmarkConcurrentAccess(b *testing.B) {
defer os.RemoveAll(tmp)
defer d.Cleanup()

numConcurent := 256
numConcurrent := 256
// create a bunch of ids
var ids []string
for i := 0; i < numConcurent; i++ {
for i := 0; i < numConcurrent; i++ {
ids = append(ids, stringid.GenerateNonCryptoID())
}

if err := d.Create(ids[0], "", "", nil); err != nil {
if err := d.Create(ids[0], "", nil); err != nil {
b.Fatal(err)
}

if err := d.Create(ids[1], ids[0], "", nil); err != nil {
if err := d.Create(ids[1], ids[0], nil); err != nil {
b.Fatal(err)
}

parent := ids[1]
ids = append(ids[2:])

chErr := make(chan error, numConcurent)
chErr := make(chan error, numConcurrent)
var outerGroup sync.WaitGroup
outerGroup.Add(len(ids))
b.StartTimer()
Expand All @@ -771,7 +776,7 @@ func BenchmarkConcurrentAccess(b *testing.B) {
for _, id := range ids {
go func(id string) {
defer outerGroup.Done()
if err := d.Create(id, parent, "", nil); err != nil {
if err := d.Create(id, parent, nil); err != nil {
b.Logf("Create %s failed", id)
chErr <- err
return
Expand Down Expand Up @@ -800,3 +805,23 @@ func BenchmarkConcurrentAccess(b *testing.B) {
}
}
}

func TestInitStaleCleanup(t *testing.T) {
if err := os.MkdirAll(tmp, 0755); err != nil {
t.Fatal(err)
}
defer os.RemoveAll(tmp)

for _, d := range []string{"diff", "mnt"} {
if err := os.MkdirAll(filepath.Join(tmp, d, "123-removing"), 0755); err != nil {
t.Fatal(err)
}
}

testInit(tmp, t)
for _, d := range []string{"diff", "mnt"} {
if _, err := os.Stat(filepath.Join(tmp, d, "123-removing")); err == nil {
t.Fatal("cleanup failed")
}
}
}
2 changes: 1 addition & 1 deletion drivers/aufs/dirs.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func loadIds(root string) ([]string, error) {
//
// If there are no lines in the file then the id has no parent
// and an empty slice is returned.
func getParentIds(root, id string) ([]string, error) {
func getParentIDs(root, id string) ([]string, error) {
f, err := os.Open(path.Join(root, "layers", id))
if err != nil {
return nil, err
Expand Down
Loading

0 comments on commit 30e8fa4

Please sign in to comment.