Skip to content

Commit

Permalink
Merge "[FAB-3904] Improve fabric/core test coverage"
Browse files Browse the repository at this point in the history
  • Loading branch information
christo4ferris authored and Gerrit Code Review committed May 17, 2017
2 parents dbc62f8 + 4441eb2 commit 9eb72a7
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 63 deletions.
2 changes: 1 addition & 1 deletion core/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func (*ServerAdmin) StopServer(context.Context, *empty.Empty) (*pb.ServerStatus,
pidFile := config.GetPath("peer.fileSystemPath") + "/peer.pid"
log.Debugf("Remove pid file %s", pidFile)
os.Remove(pidFile)
defer os.Exit(0)
defer os.Exit(1)
return status, nil
}

Expand Down
54 changes: 50 additions & 4 deletions core/admin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,55 @@ limitations under the License.

package core

import "testing"
import (
"context"
"testing"

func TestServer_Status(t *testing.T) {
t.Skip("TBD")
//performHandshake(t, peerClientConn)
"github.com/golang/protobuf/ptypes/empty"
"github.com/hyperledger/fabric/common/flogging"
"github.com/hyperledger/fabric/core/testutil"
pb "github.com/hyperledger/fabric/protos/peer"
"github.com/stretchr/testify/assert"
)

var adminServer *ServerAdmin

func init() {
adminServer = NewAdminServer()
testutil.SetupTestConfig()
}

func TestGetStatus(t *testing.T) {
response, err := adminServer.GetStatus(context.Background(), &empty.Empty{})
assert.NotNil(t, response, "Response should have been set")
assert.Nil(t, err, "Error should have been nil")
}

func TestStartServer(t *testing.T) {
response, err := adminServer.StartServer(context.Background(), &empty.Empty{})
assert.NotNil(t, response, "Response should have been set")
assert.Nil(t, err, "Error should have been nil")
}

func TestLoggingCalls(t *testing.T) {
flogging.MustGetLogger("test")
flogging.SetPeerStartupModulesMap()

logResponse, err := adminServer.GetModuleLogLevel(context.Background(), &pb.LogLevelRequest{LogModule: "test"})
assert.NotNil(t, logResponse, "logResponse should have been set")
assert.Equal(t, flogging.DefaultLevel(), logResponse.LogLevel, "log level should have been the default")
assert.Nil(t, err, "Error should have been nil")

logResponse, err = adminServer.SetModuleLogLevel(context.Background(), &pb.LogLevelRequest{LogModule: "test", LogLevel: "debug"})
assert.NotNil(t, logResponse, "logResponse should have been set")
assert.Equal(t, "DEBUG", logResponse.LogLevel, "log level should have been set to debug")
assert.Nil(t, err, "Error should have been nil")

_, err = adminServer.RevertLogLevels(context.Background(), &empty.Empty{})
assert.Nil(t, err, "Error should have been nil")

logResponse, err = adminServer.GetModuleLogLevel(context.Background(), &pb.LogLevelRequest{LogModule: "test"})
assert.NotNil(t, logResponse, "logResponse should have been set")
assert.Equal(t, flogging.DefaultLevel(), logResponse.LogLevel, "log level should have been the default")
assert.Nil(t, err, "Error should have been nil")
}
37 changes: 37 additions & 0 deletions core/config_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
Copyright IBM Corp. 2017 All Rights Reserved.
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 core

import (
"testing"

"github.com/stretchr/testify/assert"
)

func TestConfig(t *testing.T) {
// initialize configuration cached with security still disabled
configurationCached = true
assert.False(t, SecurityEnabled(), "security should not be enabled")

// reset configuration cached
configurationCached = false
assert.True(t, SecurityEnabled(), "security should be enabled")

cacheConfiguration()
assert.True(t, SecurityEnabled(), "security should still be enabled")

}
78 changes: 20 additions & 58 deletions core/fsm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,108 +20,70 @@ import (
"testing"

"github.com/looplab/fsm"
"github.com/stretchr/testify/assert"
)

func simulateConn(tb testing.TB) {
peerConn := NewPeerConnectionFSM("10.10.10.10:7051")

err := peerConn.FSM.Event("HELLO")
if err != nil {
tb.Error(err)
}
assert.Nil(tb, err, "Error should have been nil")

err = peerConn.FSM.Event("DISCONNECT")
if err != nil {
tb.Error(err)
}

assert.Nil(tb, err, "Error should have been nil")
}

func TestFSM_PeerConnection(t *testing.T) {
peerConn := NewPeerConnectionFSM("10.10.10.10:7051")
assert.Equal(t, peerConn.FSM.Current(), "created", "Expected to be in created state, got: %s", peerConn.FSM.Current())

err := peerConn.FSM.Event("HELLO")
if err != nil {
t.Error(err)
}
if peerConn.FSM.Current() != "established" {
t.Error("Expected to be in establised state")
}

err = peerConn.FSM.Event("DISCONNECT")
if err != nil {
t.Error(err)
}
}
assert.Nil(t, err, "Error should have been nil")
assert.Equal(t, peerConn.FSM.Current(), "established", "Expected to be in established state, got: %s", peerConn.FSM.Current())

func TestFSM_PeerConnection2(t *testing.T) {
peerConn := NewPeerConnectionFSM("10.10.10.10:7051")

err := peerConn.FSM.Event("HELLO")
if err != nil {
t.Error(err)
}
if peerConn.FSM.Current() != "established" {
t.Error("Expected to be in establised state")
}
err = peerConn.FSM.Event("PING")
assert.NotNil(t, err, "Expected bad state message")
assert.Equal(t, peerConn.FSM.Current(), "established", "Expected to be in established state, got: %s", peerConn.FSM.Current())

err = peerConn.FSM.Event("DISCONNECT")
if err != nil {
t.Error(err)
}
assert.Nil(t, err, "Error should have been nil")
assert.Equal(t, peerConn.FSM.Current(), "closed", "Expected to be in closed state, got: %s", peerConn.FSM.Current())
}

func TestFSM_PeerConnection_BadState_1(t *testing.T) {
peerConn := NewPeerConnectionFSM("10.10.10.10:7051")

// Try to move from created state
err := peerConn.FSM.Event("GET_PEERS")
if err == nil {
t.Error("Expected bad state message")
}
assert.NotNil(t, err, "Expected bad state message")

err = peerConn.FSM.Event("PING")
if err == nil {
t.Error("Expected bad state message")
}
assert.NotNil(t, err, "Expected bad state message")

err = peerConn.FSM.Event("DISCONNECT")
if err != nil {
t.Error(err)
}

assert.Nil(t, err, "Error should have been nil")
}

func TestFSM_PeerConnection_BadState_2(t *testing.T) {
peerConn := NewPeerConnectionFSM("10.10.10.10:7051")

// Try to move from created state
err := peerConn.FSM.Event("GET_PEERS")
if err == nil {
t.Error("Expected bad state message")
}
assert.NotNil(t, err, "Expected bad state message")

err = peerConn.FSM.Event("PING")
if err == nil {
t.Error("Expected bad state message")
}
assert.NotNil(t, err, "Expected bad state message")
}

func TestFSM_PeerConnection_BadEvent(t *testing.T) {
peerConn := NewPeerConnectionFSM("10.10.10.10:7051")

// Try to move from created state
err := peerConn.FSM.Event("UNDEFINED_EVENT")
if err == nil {
t.Error("Expected bad event message")
} else {
// Make sure expected error type
if _, ok := err.(*fsm.UnknownEventError); !ok {
t.Error("expected only 'fsm.UnknownEventError'")
}
t.Logf("Received expected error: %s", err)
}

assert.NotNil(t, err, "Expected bad state message")
// Make sure expected error type
_, ok := err.(*fsm.UnknownEventError)
assert.True(t, ok, "expected only 'fsm.UnknownEventError'")
}

func Benchmark_FSM(b *testing.B) {
Expand Down

0 comments on commit 9eb72a7

Please sign in to comment.