300 lines
8.9 KiB
Go
300 lines
8.9 KiB
Go
package config
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
const (
|
|
foobar = "foobar"
|
|
nodev = "nodev"
|
|
trueString = "true"
|
|
s100 = "100"
|
|
s200 = "200"
|
|
)
|
|
|
|
func searchOptions(options []string, value string) bool {
|
|
for _, s := range options {
|
|
if strings.Contains(s, value) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func TestAufsOptions(t *testing.T) {
|
|
var (
|
|
doptions []string
|
|
options OptionsConfig
|
|
)
|
|
doptions = GetGraphDriverOptions("aufs", options)
|
|
if len(doptions) != 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
// Make sure legacy mountopt still works
|
|
options = OptionsConfig{}
|
|
options.MountOpt = foobar
|
|
doptions = GetGraphDriverOptions("aufs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "mountopt=foobar") {
|
|
t.Fatalf("Expected to find 'foobar' options, got %v", doptions)
|
|
}
|
|
|
|
// Make sure Aufs ignores other drivers mountpoints takes presedence
|
|
options.Zfs.MountOpt = nodev
|
|
doptions = GetGraphDriverOptions("aufs", options)
|
|
if searchOptions(doptions, "mountopt=nodev") {
|
|
t.Fatalf("Expected to find 'nodev' options, got %v", doptions)
|
|
}
|
|
|
|
// Make sure AufsMountOpt takes precedence
|
|
options.Aufs.MountOpt = nodev
|
|
doptions = GetGraphDriverOptions("aufs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "mountopt=nodev") {
|
|
t.Fatalf("Expected to find 'nodev' options, got %v", doptions)
|
|
}
|
|
}
|
|
|
|
func TestBtrfsOptions(t *testing.T) {
|
|
var (
|
|
doptions []string
|
|
options OptionsConfig
|
|
)
|
|
doptions = GetGraphDriverOptions("btrfs", options)
|
|
if len(doptions) != 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
// Make sure legacy mountopt still works
|
|
options = OptionsConfig{}
|
|
options.Btrfs.MinSpace = s100
|
|
doptions = GetGraphDriverOptions("btrfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, s100) {
|
|
t.Fatalf("Expected to find %q options, got %v", s100, doptions)
|
|
}
|
|
|
|
options = OptionsConfig{}
|
|
options.Size = s200
|
|
doptions = GetGraphDriverOptions("btrfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, s200) {
|
|
t.Fatalf("Expected to find size %q options, got %v", s200, doptions)
|
|
}
|
|
// Make sure Btrfs.Size takes precedence
|
|
options.Btrfs.Size = s100
|
|
doptions = GetGraphDriverOptions("btrfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, s100) {
|
|
t.Fatalf("Expected to find size %q, got %v", s100, doptions)
|
|
}
|
|
}
|
|
|
|
func TestOverlayOptions(t *testing.T) {
|
|
var (
|
|
doptions []string
|
|
options OptionsConfig
|
|
)
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) != 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
options.Vfs.IgnoreChownErrors = trueString
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) != 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
options.Overlay.IgnoreChownErrors = trueString
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 1 options, got %v", doptions)
|
|
}
|
|
options.Overlay.IgnoreChownErrors = "false"
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
|
|
// Make sure legacy IgnoreChownErrors still works
|
|
options = OptionsConfig{}
|
|
options.IgnoreChownErrors = trueString
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 1 options, got %v", doptions)
|
|
}
|
|
// Make sure legacy mountopt still works
|
|
options = OptionsConfig{}
|
|
options.MountOpt = foobar
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "mountopt=foobar") {
|
|
t.Fatalf("Expected to find 'foobar' options, got %v", doptions)
|
|
}
|
|
|
|
// Make sure Overlay ignores other drivers mountpoints takes presedence
|
|
options.Zfs.MountOpt = nodev
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if searchOptions(doptions, "mountopt=nodev") {
|
|
t.Fatalf("Expected to find 'nodev' options, got %v", doptions)
|
|
}
|
|
|
|
// Make sure OverlayMountOpt takes precedence
|
|
options.Overlay.MountOpt = nodev
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "mountopt=nodev") {
|
|
t.Fatalf("Expected to find 'nodev' options, got %v", doptions)
|
|
}
|
|
|
|
// Make sure mount_program takes precedence
|
|
options.MountProgram = "/usr/bin/root_overlay"
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "mount_program=/usr/bin/root_overlay") {
|
|
t.Fatalf("Expected to find 'root_overlay' options, got %v", doptions)
|
|
}
|
|
options.Overlay.MountProgram = "/usr/bin/fuse_overlay"
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "mount_program=/usr/bin/fuse_overlay") {
|
|
t.Fatalf("Expected to find 'fuse_overlay' options, got %v", doptions)
|
|
}
|
|
options.Overlay.SkipMountHome = "true"
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "skip_mount_home") {
|
|
t.Fatalf("Expected to find 'skip_mount_home' options, got %v", doptions)
|
|
}
|
|
|
|
options.Overlay.UseComposefs = "true"
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected > 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "use_composefs") {
|
|
t.Fatalf("Expected to find 'use_composefs' options, got %v", doptions)
|
|
}
|
|
|
|
// Make sure legacy mountopt still works
|
|
options = OptionsConfig{}
|
|
options.SkipMountHome = "true"
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, "skip_mount_home") {
|
|
t.Fatalf("Expected to find 'skip_mount_home' options, got %v", doptions)
|
|
}
|
|
|
|
options.Size = s200
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, s200) {
|
|
t.Fatalf("Expected to find size %q options, got %v", s200, doptions)
|
|
}
|
|
// Make sure Overlay.Size takes precedence
|
|
options.Overlay.Size = s100
|
|
doptions = GetGraphDriverOptions("overlay", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, s100) {
|
|
t.Fatalf("Expected to find size %q, got %v", s100, doptions)
|
|
}
|
|
}
|
|
|
|
func TestVfsOptions(t *testing.T) {
|
|
var (
|
|
doptions []string
|
|
options OptionsConfig
|
|
)
|
|
doptions = GetGraphDriverOptions("vfs", options)
|
|
if len(doptions) != 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
options.Overlay.IgnoreChownErrors = trueString
|
|
doptions = GetGraphDriverOptions("vfs", options)
|
|
if len(doptions) != 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
options.Vfs.IgnoreChownErrors = trueString
|
|
doptions = GetGraphDriverOptions("vfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 1 options, got %v", doptions)
|
|
}
|
|
// Make sure legacy IgnoreChownErrors still works
|
|
options = OptionsConfig{}
|
|
options.IgnoreChownErrors = trueString
|
|
doptions = GetGraphDriverOptions("vfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 1 options, got %v", doptions)
|
|
}
|
|
}
|
|
|
|
func TestZfsOptions(t *testing.T) {
|
|
var (
|
|
doptions []string
|
|
options OptionsConfig
|
|
)
|
|
doptions = GetGraphDriverOptions("zfs", options)
|
|
if len(doptions) != 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
// Make sure legacy mountopt still works
|
|
options = OptionsConfig{}
|
|
options.Zfs.Name = foobar
|
|
doptions = GetGraphDriverOptions("zfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, options.Zfs.Name) {
|
|
t.Fatalf("Expected to find 'foobar' options, got %v", doptions)
|
|
}
|
|
// Make sure Zfs ignores other drivers mountpoints takes presedence
|
|
options.Aufs.MountOpt = nodev
|
|
doptions = GetGraphDriverOptions("zfs", options)
|
|
if searchOptions(doptions, "mountopt=nodev") {
|
|
t.Fatalf("Expected Not to find 'nodev' options, got %v", doptions)
|
|
}
|
|
|
|
options.Size = s200
|
|
doptions = GetGraphDriverOptions("zfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, s200) {
|
|
t.Fatalf("Expected to find size %q options, got %v", s200, doptions)
|
|
}
|
|
// Make sure Zfs.Size takes precedence
|
|
options.Zfs.Size = s100
|
|
doptions = GetGraphDriverOptions("zfs", options)
|
|
if len(doptions) == 0 {
|
|
t.Fatalf("Expected 0 options, got %v", doptions)
|
|
}
|
|
if !searchOptions(doptions, s100) {
|
|
t.Fatalf("Expected to find size %q, got %v", s100, doptions)
|
|
}
|
|
}
|