diff options
author | Jakob Unterwurzacher | 2018-03-25 21:02:33 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2018-03-25 21:06:10 +0200 |
commit | db778aae7db844e77b602816a4fd0aeab5d6857e (patch) | |
tree | 1544087ce9fb32926a276781507c2604b366e113 /tests/xattr | |
parent | 1ed3d51df1750d5472b1349222c352171f1e8d64 (diff) |
fusefrontend: handle empty xattrs efficiently
We handle empty files by storing an actual empty file
on disk. Handle xattrs similarily and encrypt the
empty value to the empty value.
Diffstat (limited to 'tests/xattr')
-rw-r--r-- | tests/xattr/xattr_integration_test.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/xattr/xattr_integration_test.go b/tests/xattr/xattr_integration_test.go index 1e081c2..58d62d9 100644 --- a/tests/xattr/xattr_integration_test.go +++ b/tests/xattr/xattr_integration_test.go @@ -66,6 +66,60 @@ func TestXattrSetGetRm(t *testing.T) { } } +func TestXattrSetEmpty(t *testing.T) { + attr := "user.foo" + fn := test_helpers.DefaultPlainDir + "/TestXattrSetEmpty1" + err := ioutil.WriteFile(fn, nil, 0700) + if err != nil { + t.Fatalf("creating empty file failed: %v", err) + } + // Make sure it does not exist already + _, err = xattr.Get(fn, attr) + if err == nil { + t.Fatal("we should have got an error here") + } + // Set empty value + err = xattr.Set(fn, attr, nil) + if err != nil { + t.Fatal(err) + } + // Read back + val, err := xattr.Get(fn, attr) + if err != nil { + t.Fatal(err) + } + if len(val) != 0 { + t.Errorf("wrong length: want=0 have=%d", len(val)) + } + // Overwrite empty value with something + val1 := []byte("xyz123") + err = xattr.Set(fn, attr, val1) + if err != nil { + t.Fatal(err) + } + // Read back + val2, err := xattr.Get(fn, attr) + if err != nil { + t.Fatal(err) + } + if !bytes.Equal(val1, val2) { + t.Fatalf("wrong readback value: %v != %v", val1, val2) + } + // Overwrite something with empty value + err = xattr.Set(fn, attr, nil) + if err != nil { + t.Fatal(err) + } + // Read back + val, err = xattr.Get(fn, attr) + if err != nil { + t.Fatal(err) + } + if len(val) != 0 { + t.Errorf("wrong length: want=0 have=%d", len(val2)) + } +} + func TestXattrList(t *testing.T) { fn := test_helpers.DefaultPlainDir + "/TestXattrList" err := ioutil.WriteFile(fn, nil, 0700) |