From fc90b57ecc291f220972914e3729d2a4e468ecb6 Mon Sep 17 00:00:00 2001 From: Ed Warnicke Date: Wed, 19 Feb 2020 11:11:19 -0600 Subject: [PATCH] Update mechanisms test to use null and testerror chain elements Signed-off-by: Ed Warnicke --- .../common/mechanisms/server_test.go | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/pkg/networkservice/common/mechanisms/server_test.go b/pkg/networkservice/common/mechanisms/server_test.go index 11c50e182..8337d733d 100644 --- a/pkg/networkservice/common/mechanisms/server_test.go +++ b/pkg/networkservice/common/mechanisms/server_test.go @@ -22,7 +22,6 @@ import ( "io/ioutil" - "github.com/golang/protobuf/ptypes/empty" "github.com/networkservicemesh/api/pkg/api/networkservice" "github.com/networkservicemesh/api/pkg/api/networkservice/mechanisms/cls" "github.com/networkservicemesh/api/pkg/api/networkservice/mechanisms/kernel" @@ -35,28 +34,16 @@ import ( "github.com/networkservicemesh/sdk/pkg/networkservice/common/mechanisms" "github.com/networkservicemesh/sdk/pkg/networkservice/core/chain" + "github.com/networkservicemesh/sdk/pkg/networkservice/test/null" + "github.com/networkservicemesh/sdk/pkg/networkservice/test/testerror" ) -type mockMechanismServer struct{} - -func NewMockServer() networkservice.NetworkServiceServer { - return &mockMechanismServer{} -} - -func (m *mockMechanismServer) Request(ctx context.Context, request *networkservice.NetworkServiceRequest) (*networkservice.Connection, error) { - return request.GetConnection(), nil -} - -func (m *mockMechanismServer) Close(ctx context.Context, conn *networkservice.Connection) (*empty.Empty, error) { - return &empty.Empty{}, nil -} - func server() networkservice.NetworkServiceServer { return chain.NewNetworkServiceServer(mechanisms.NewServer(map[string]networkservice.NetworkServiceServer{ - memif.MECHANISM: NewMockServer(), - kernel.MECHANISM: NewMockServer(), - srv6.MECHANISM: NewMockServer(), - vxlan.MECHANISM: NewMockServer(), + memif.MECHANISM: null.NewServer(), + kernel.MECHANISM: null.NewServer(), + srv6.MECHANISM: null.NewServer(), + vxlan.MECHANISM: null.NewServer(), })) } @@ -102,27 +89,29 @@ func permuteOverMechanismPreferenceOrder(request *networkservice.NetworkServiceR func TestSelectMechanism(t *testing.T) { logrus.SetOutput(ioutil.Discard) + server := server() for _, request := range permuteOverMechanismPreferenceOrder(request()) { assert.Nil(t, request.GetConnection().GetMechanism(), "SelectMechanismContract requires request.GetConnection().GetMechanism() nil") assert.Greater(t, len(request.GetMechanismPreferences()), 0, "serverBasicMechanismContract requires len(request.GetMechanismPreferences()) > 0") - conn, err := server().Request(context.Background(), request) + conn, err := server.Request(context.Background(), request) assert.Nil(t, err) assert.NotNil(t, conn) assert.NotNil(t, conn.GetMechanism()) assert.Equal(t, request.GetMechanismPreferences()[0].GetCls(), conn.GetMechanism().GetCls(), "Unexpected response to request %+v", request) assert.Equal(t, request.GetMechanismPreferences()[0].GetType(), conn.GetMechanism().GetType(), "Unexpected response to request %+v", request) - _, err = server().Close(context.Background(), conn) + _, err = server.Close(context.Background(), conn) assert.Nil(t, err) } } func TestDontSelectMechanismIfSet(t *testing.T) { logrus.SetOutput(ioutil.Discard) + server := server() for _, request := range permuteOverMechanismPreferenceOrder(request()) { request.Connection = &networkservice.Connection{Mechanism: request.GetMechanismPreferences()[len(request.GetMechanismPreferences())-1]} assert.NotNil(t, request.GetConnection().GetMechanism()) assert.Greater(t, len(request.GetMechanismPreferences()), 0, "serverBasicMechanismContract requires len(request.GetMechanismPreferences()) > 0") - conn, err := server().Request(context.Background(), request) + conn, err := server.Request(context.Background(), request) assert.Nil(t, err) assert.NotNil(t, conn) assert.Equal(t, request.GetConnection().GetMechanism(), conn.GetMechanism()) @@ -155,3 +144,20 @@ func TestUnsupportedMechanism(t *testing.T) { _, err = server().Close(context.Background(), &networkservice.Connection{Mechanism: &networkservice.Mechanism{Cls: "NOT_A_CLS", Type: "NOT_A_TYPE"}}) assert.NotNil(t, err) } + +func TestDownstreamError(t *testing.T) { + logrus.SetOutput(ioutil.Discard) + request := request() + request.GetConnection().Mechanism = &networkservice.Mechanism{ + Cls: cls.LOCAL, + Type: memif.MECHANISM, + } + server := chain.NewNetworkServiceServer(mechanisms.NewServer(map[string]networkservice.NetworkServiceServer{ + memif.MECHANISM: testerror.NewServer(), + })) + conn, err := server.Request(context.Background(), request) + assert.Nil(t, conn) + assert.NotNil(t, err) + _, err = server.Close(context.Background(), &networkservice.Connection{Mechanism: &networkservice.Mechanism{Cls: "NOT_A_CLS", Type: "NOT_A_TYPE"}}) + assert.NotNil(t, err) +}