mirror of
https://github.com/dennwc/btrfs
synced 2025-01-10 00:59:23 +00:00
98 lines
1.8 KiB
Go
98 lines
1.8 KiB
Go
package btrfs
|
|
|
|
import (
|
|
"github.com/dennwc/btrfs/test"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
const sizeDef = 256 * 1024 * 1024
|
|
|
|
func TestOpen(t *testing.T) {
|
|
dir, closer := btrfstest.New(t, sizeDef)
|
|
defer closer()
|
|
fs, err := Open(dir, true)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = fs.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestIsSubvolume(t *testing.T) {
|
|
dir, closer := btrfstest.New(t, sizeDef)
|
|
defer closer()
|
|
|
|
isSubvol := func(path string, expect bool) {
|
|
ok, err := IsSubVolume(path)
|
|
if err != nil {
|
|
t.Errorf("failed to check subvolume %v: %v", path, err)
|
|
return
|
|
} else if ok != expect {
|
|
t.Errorf("unexpected result for %v", path)
|
|
}
|
|
}
|
|
mkdir := func(path string) {
|
|
path = filepath.Join(dir, path)
|
|
if err := os.MkdirAll(path, 0755); err != nil {
|
|
t.Fatalf("cannot create dir %v: %v", path, err)
|
|
}
|
|
isSubvol(path, false)
|
|
}
|
|
|
|
mksub := func(path string) {
|
|
path = filepath.Join(dir, path)
|
|
if err := CreateSubVolume(path); err != nil {
|
|
t.Fatalf("cannot create subvolume %v: %v", path, err)
|
|
}
|
|
isSubvol(path, true)
|
|
}
|
|
|
|
mksub("v1")
|
|
|
|
mkdir("v1/d2")
|
|
mksub("v1/v2")
|
|
|
|
mkdir("v1/d2/d3")
|
|
mksub("v1/d2/v3")
|
|
|
|
mkdir("v1/v2/d3")
|
|
mksub("v1/v2/v3")
|
|
|
|
mkdir("d1")
|
|
|
|
mkdir("d1/d2")
|
|
mksub("d1/v2")
|
|
|
|
mkdir("d1/d2/d3")
|
|
mksub("d1/d2/v3")
|
|
|
|
mkdir("d1/v2/d3")
|
|
mksub("d1/v2/v3")
|
|
}
|
|
|
|
func TestCompression(t *testing.T) {
|
|
dir, closer := btrfstest.New(t, sizeDef)
|
|
defer closer()
|
|
fs, err := Open(dir, true)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer fs.Close()
|
|
if err := fs.CreateSubVolume("sub"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
path := filepath.Join(dir, "sub")
|
|
|
|
if err := SetCompression(path, LZO); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if c, err := GetCompression(path); err != nil {
|
|
t.Fatal(err)
|
|
} else if c != LZO {
|
|
t.Fatalf("unexpected compression returned: %q", string(c))
|
|
}
|
|
}
|