tests: Implemented more tests for fs-v1*.go (#2686)

This commit is contained in:
Anis Elleuch
2016-09-16 21:06:49 +01:00
committed by Harshavardhana
parent 7d37dea449
commit b89a1cd482
10 changed files with 803 additions and 24 deletions

View File

@@ -17,7 +17,9 @@
package cmd
import (
"bytes"
"os"
"path/filepath"
"testing"
)
@@ -64,3 +66,93 @@ func TestHasExtendedHeader(t *testing.T) {
}
}
}
// TestReadFsMetadata - readFSMetadata testing with a healthy and faulty disk
func TestReadFSMetadata(t *testing.T) {
disk := filepath.Join(os.TempDir(), "minio-"+nextSuffix())
defer removeAll(disk)
obj, err := newFSObjects(disk)
if err != nil {
t.Fatal("Unexpected err: ", err)
}
fs := obj.(fsObjects)
bucketName := "bucket"
objectName := "object"
if err = obj.MakeBucket(bucketName); err != nil {
t.Fatal("Unexpected err: ", err)
}
if _, err = obj.PutObject(bucketName, objectName, int64(len("abcd")), bytes.NewReader([]byte("abcd")),
map[string]string{"X-Amz-Meta-AppId": "a"}); err != nil {
t.Fatal("Unexpected err: ", err)
}
// Construct the full path of fs.json
fsPath := "buckets/" + bucketName + "/" + objectName + "/fs.json"
// Regular fs metadata reading, no errors expected
if _, err = readFSMetadata(fs.storage, ".minio.sys", fsPath); err != nil {
t.Fatal("Unexpected error ", err)
}
// Corrupted fs.json
if err = fs.storage.AppendFile(".minio.sys", fsPath, []byte{'a'}); err != nil {
t.Fatal("Unexpected error ", err)
}
if _, err = readFSMetadata(fs.storage, ".minio.sys", fsPath); err == nil {
t.Fatal("Should fail", err)
}
// Test with corrupted disk
fsStorage := fs.storage.(*posix)
naughty := newNaughtyDisk(fsStorage, nil, errFaultyDisk)
fs.storage = naughty
if _, err = readFSMetadata(fs.storage, ".minio.sys", fsPath); errorCause(err) != errFaultyDisk {
t.Fatal("Should fail", err)
}
}
// TestWriteFsMetadata - tests of writeFSMetadata with healthy and faulty disks
func TestWriteFSMetadata(t *testing.T) {
disk := filepath.Join(os.TempDir(), "minio-"+nextSuffix())
defer removeAll(disk)
obj, err := newFSObjects(disk)
if err != nil {
t.Fatal("Unexpected err: ", err)
}
fs := obj.(fsObjects)
bucketName := "bucket"
objectName := "object"
if err = obj.MakeBucket(bucketName); err != nil {
t.Fatal("Unexpected err: ", err)
}
if _, err = obj.PutObject(bucketName, objectName, int64(len("abcd")), bytes.NewReader([]byte("abcd")),
map[string]string{"X-Amz-Meta-AppId": "a"}); err != nil {
t.Fatal("Unexpected err: ", err)
}
// Construct the complete path of fs.json
fsPath := "buckets/" + bucketName + "/" + objectName + "/fs.json"
// Fs metadata reading, no errors expected (healthy disk)
fsMeta, err := readFSMetadata(fs.storage, ".minio.sys", fsPath)
if err != nil {
t.Fatal("Unexpected error ", err)
}
// Reading metadata with a corrupted disk
fsStorage := fs.storage.(*posix)
for i := 1; i <= 2; i++ {
naughty := newNaughtyDisk(fsStorage, map[int]error{i: errFaultyDisk, i + 1: errFaultyDisk}, nil)
fs.storage = naughty
if err = writeFSMetadata(fs.storage, ".minio.sys", fsPath, fsMeta); errorCause(err) != errFaultyDisk {
t.Fatal("Unexpected error", i, err)
}
}
}