mirror of https://github.com/minio/minio.git
fix testcases to init nslock properly (#5429)
This commit is contained in:
parent
2d19663fef
commit
2dd117f647
|
@ -18,27 +18,38 @@ package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestListLocksInfo - Test for listLocksInfo.
|
// TestListLocksInfo - Test for listLocksInfo.
|
||||||
func TestListLocksInfo(t *testing.T) {
|
func TestListLocksInfo(t *testing.T) {
|
||||||
// Initialize globalNSMutex to validate listing of lock
|
// reset global variables to start afresh.
|
||||||
// instrumentation information.
|
resetTestGlobals()
|
||||||
|
// Initialize minio server config.
|
||||||
|
rootPath, err := newTestConfig(globalMinioDefaultRegion)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(rootPath)
|
||||||
|
// Initializing new XL objectLayer.
|
||||||
|
objAPI, _, xlErr := initTestXLObjLayer()
|
||||||
|
if xlErr != nil {
|
||||||
|
t.Fatalf("failed to init object layer")
|
||||||
|
}
|
||||||
|
// Make objLayer available to all internal services via globalObjectAPI.
|
||||||
|
globalObjLayerMutex.Lock()
|
||||||
|
globalObjectAPI = objAPI
|
||||||
|
globalObjLayerMutex.Unlock()
|
||||||
|
// Set globalIsXL to indicate that the setup uses an erasure code backend.
|
||||||
|
// initialize NSLock.
|
||||||
isDistXL := false
|
isDistXL := false
|
||||||
initNSLock(isDistXL)
|
initNSLock(isDistXL)
|
||||||
objAPI := newObjectLayerFn()
|
|
||||||
if objAPI == nil {
|
|
||||||
t.Errorf("Failed to initialize object layer")
|
|
||||||
}
|
|
||||||
var nsMutex *nsLockMap
|
var nsMutex *nsLockMap
|
||||||
switch objAPI.(type) {
|
|
||||||
case *fsObjects:
|
nsMutex = objAPI.(*xlObjects).nsMutex
|
||||||
nsMutex = objAPI.(*fsObjects).nsMutex
|
|
||||||
case *xlObjects:
|
|
||||||
nsMutex = objAPI.(*xlObjects).nsMutex
|
|
||||||
}
|
|
||||||
|
|
||||||
// Acquire a few locks to populate lock instrumentation.
|
// Acquire a few locks to populate lock instrumentation.
|
||||||
// Take 10 read locks on bucket1/prefix1/obj1
|
// Take 10 read locks on bucket1/prefix1/obj1
|
||||||
|
|
|
@ -39,6 +39,8 @@ func TestGetSource(t *testing.T) {
|
||||||
|
|
||||||
// Tests functionality provided by namespace lock.
|
// Tests functionality provided by namespace lock.
|
||||||
func TestNamespaceLockTest(t *testing.T) {
|
func TestNamespaceLockTest(t *testing.T) {
|
||||||
|
isDistXL := false
|
||||||
|
initNSLock(isDistXL)
|
||||||
// List of test cases.
|
// List of test cases.
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
lk func(s1, s2, s3 string, t time.Duration) bool
|
lk func(s1, s2, s3 string, t time.Duration) bool
|
||||||
|
@ -155,7 +157,8 @@ func TestNamespaceLockTest(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNamespaceLockTimedOut(t *testing.T) {
|
func TestNamespaceLockTimedOut(t *testing.T) {
|
||||||
|
isDistXL := false
|
||||||
|
initNSLock(isDistXL)
|
||||||
// Get write lock
|
// Get write lock
|
||||||
if !globalNSMutex.Lock("my-bucket", "my-object", "abc", 60*time.Second) {
|
if !globalNSMutex.Lock("my-bucket", "my-object", "abc", 60*time.Second) {
|
||||||
t.Fatalf("Failed to acquire lock")
|
t.Fatalf("Failed to acquire lock")
|
||||||
|
@ -199,7 +202,8 @@ func TestNamespaceLockTimedOut(t *testing.T) {
|
||||||
|
|
||||||
// Tests functionality to forcefully unlock locks.
|
// Tests functionality to forcefully unlock locks.
|
||||||
func TestNamespaceForceUnlockTest(t *testing.T) {
|
func TestNamespaceForceUnlockTest(t *testing.T) {
|
||||||
|
isDistXL := false
|
||||||
|
initNSLock(isDistXL)
|
||||||
// Create lock.
|
// Create lock.
|
||||||
lock := globalNSMutex.NewNSLock("bucket", "object")
|
lock := globalNSMutex.NewNSLock("bucket", "object")
|
||||||
if lock.GetLock(newDynamicTimeout(60*time.Second, time.Second)) != nil {
|
if lock.GetLock(newDynamicTimeout(60*time.Second, time.Second)) != nil {
|
||||||
|
|
Loading…
Reference in New Issue