You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.6 KiB
72 lines
1.6 KiB
package weed_server
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb"
|
|
"github.com/seaweedfs/seaweedfs/weed/storage"
|
|
)
|
|
|
|
func TestMaintenanceMode(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
pb *volume_server_pb.VolumeServerState
|
|
want bool
|
|
wantCheckErr string
|
|
}{
|
|
{
|
|
name: "non-initialized state",
|
|
pb: nil,
|
|
want: false,
|
|
wantCheckErr: "",
|
|
},
|
|
{
|
|
name: "maintenance mode disabled",
|
|
pb: &volume_server_pb.VolumeServerState{
|
|
Maintenance: false,
|
|
},
|
|
want: false,
|
|
wantCheckErr: "",
|
|
},
|
|
{
|
|
name: "maintenance mode enabled",
|
|
pb: &volume_server_pb.VolumeServerState{
|
|
Maintenance: true,
|
|
},
|
|
want: true,
|
|
wantCheckErr: "volume server test_1234 is in maintenance mode",
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
vs := VolumeServer{
|
|
store: &storage.Store{
|
|
Id: "test_1234",
|
|
State: &storage.State{
|
|
FilePath: "/some/path.pb",
|
|
Pb: tc.pb,
|
|
},
|
|
},
|
|
}
|
|
|
|
if got, want := vs.MaintenanceMode(), tc.want; got != want {
|
|
t.Errorf("MaintenanceMode() returned %v, want %v", got, want)
|
|
}
|
|
|
|
err, wantErrStr := vs.CheckMaintenanceMode(), tc.wantCheckErr
|
|
if err != nil {
|
|
if wantErrStr == "" {
|
|
t.Errorf("CheckMaintenanceMode() returned error %v, want nil", err)
|
|
}
|
|
if errStr := err.Error(); errStr != wantErrStr {
|
|
t.Errorf("CheckMaintenanceMode() returned error %q, want %q", errStr, wantErrStr)
|
|
}
|
|
} else {
|
|
if wantErrStr != "" {
|
|
t.Errorf("CheckMaintenanceMode() returned no error, want %q", wantErrStr)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|