Controller rpc tests (#2709)
* Test code for controller-handler operations: * Heal operations * List operation * Switch to "testing" lib, moving away from gocheck * Minor refactors * Remove extra call to initGracefulShutdown * Remove dead code in mainControl: Dead code found by the TestControlMain() test function that always passes. * Add tests for control-*-main.gomaster
parent
559ad38b8c
commit
32f097b4d6
@ -0,0 +1,143 @@ |
|||||||
|
/* |
||||||
|
* Minio Cloud Storage, (C) 2016 Minio, Inc. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
|
||||||
|
package cmd |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
|
||||||
|
"github.com/minio/cli" |
||||||
|
) |
||||||
|
|
||||||
|
// Test to call healControl() in control-heal-main.go
|
||||||
|
func TestControlHealMain(t *testing.T) { |
||||||
|
// create cli app for testing
|
||||||
|
app := cli.NewApp() |
||||||
|
app.Commands = []cli.Command{controlCmd} |
||||||
|
|
||||||
|
// start test server
|
||||||
|
testServer := StartTestServer(t, "XL") |
||||||
|
|
||||||
|
// schedule cleanup at the end
|
||||||
|
defer testServer.Stop() |
||||||
|
|
||||||
|
// fetch http server endpoint
|
||||||
|
url := testServer.Server.URL |
||||||
|
|
||||||
|
// create args to call
|
||||||
|
args := []string{"./minio", "control", "heal", url} |
||||||
|
|
||||||
|
// run app
|
||||||
|
err := app.Run(args) |
||||||
|
if err != nil { |
||||||
|
t.Errorf("Control-Heal-Main test failed with - %s", err.Error()) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Test to call lockControl() in control-lock-main.go
|
||||||
|
func TestControlLockMain(t *testing.T) { |
||||||
|
// create cli app for testing
|
||||||
|
app := cli.NewApp() |
||||||
|
app.Commands = []cli.Command{controlCmd} |
||||||
|
|
||||||
|
// start test server
|
||||||
|
testServer := StartTestServer(t, "XL") |
||||||
|
|
||||||
|
// schedule cleanup at the end
|
||||||
|
defer testServer.Stop() |
||||||
|
|
||||||
|
// enabling lock instrumentation.
|
||||||
|
globalDebugLock = true |
||||||
|
// initializing the locks.
|
||||||
|
initNSLock(false) |
||||||
|
// set debug lock info to `nil` so that other tests do not see
|
||||||
|
// such modified env settings.
|
||||||
|
defer func() { |
||||||
|
globalDebugLock = false |
||||||
|
nsMutex.debugLockMap = nil |
||||||
|
}() |
||||||
|
|
||||||
|
// fetch http server endpoint
|
||||||
|
url := testServer.Server.URL |
||||||
|
|
||||||
|
// create args to call
|
||||||
|
args := []string{"./minio", "control", "lock", url} |
||||||
|
|
||||||
|
// run app
|
||||||
|
err := app.Run(args) |
||||||
|
if err != nil { |
||||||
|
t.Errorf("Control-Lock-Main test failed with - %s", err.Error()) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Test to call shutdownControl() in control-shutdown-main.go
|
||||||
|
func TestControlShutdownMain(t *testing.T) { |
||||||
|
// create cli app for testing
|
||||||
|
app := cli.NewApp() |
||||||
|
app.Commands = []cli.Command{controlCmd} |
||||||
|
|
||||||
|
// start test server
|
||||||
|
testServer := StartTestServer(t, "XL") |
||||||
|
|
||||||
|
// schedule cleanup at the end
|
||||||
|
defer testServer.Stop() |
||||||
|
|
||||||
|
// fetch http server endpoint
|
||||||
|
url := testServer.Server.URL |
||||||
|
|
||||||
|
// create a dummy exit function
|
||||||
|
testExitFn := func(exitCode int) { |
||||||
|
if exitCode != int(exitSuccess) { |
||||||
|
t.Errorf("Control-Shutdown-Main test failed - server exited with non-success error code - %d", |
||||||
|
exitCode) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// initialize the shutdown signal listener
|
||||||
|
err := initGracefulShutdown(testExitFn) |
||||||
|
if err != nil { |
||||||
|
t.Fatalf("Control-Shutdown-Main test failed in initGracefulShutdown() - %s", |
||||||
|
err.Error()) |
||||||
|
} |
||||||
|
|
||||||
|
// create args to call
|
||||||
|
args := []string{"./minio", "control", "shutdown", url} |
||||||
|
|
||||||
|
// run app
|
||||||
|
err = app.Run(args) |
||||||
|
if err != nil { |
||||||
|
t.Errorf("Control-Shutdown-Main test failed with - %s", |
||||||
|
err.Error()) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// NOTE: This test practically always passes, but its the only way to
|
||||||
|
// execute mainControl in a test situation
|
||||||
|
func TestControlMain(t *testing.T) { |
||||||
|
// create cli app for testing
|
||||||
|
app := cli.NewApp() |
||||||
|
app.Commands = []cli.Command{controlCmd} |
||||||
|
|
||||||
|
// create args to call
|
||||||
|
args := []string{"./minio", "control"} |
||||||
|
|
||||||
|
// run app
|
||||||
|
err := app.Run(args) |
||||||
|
if err != nil { |
||||||
|
t.Errorf("Control-Main test failed with - %s", |
||||||
|
err.Error()) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue