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