X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=core%2Fchannel_test.go;h=d06e2b3fd8e316323f3428e617642452822ed1c0;hb=c7ae74a95d1bd6fefcbb061f5f045c60c11e32fc;hp=ba761b36aeefb8a5a65e43c6644a58b6cbef83c3;hpb=c4522fe10317b1729a0820dc880afc78c663f64d;p=govpp.git diff --git a/core/channel_test.go b/core/channel_test.go index ba761b3..d06e2b3 100644 --- a/core/channel_test.go +++ b/core/channel_test.go @@ -18,14 +18,14 @@ import ( "testing" "time" + . "github.com/onsi/gomega" + "git.fd.io/govpp.git/adapter/mock" + "git.fd.io/govpp.git/api" + "git.fd.io/govpp.git/examples/binapi/interface_types" "git.fd.io/govpp.git/examples/binapi/interfaces" "git.fd.io/govpp.git/examples/binapi/memif" - "git.fd.io/govpp.git/examples/binapi/tap" "git.fd.io/govpp.git/examples/binapi/vpe" - - "git.fd.io/govpp.git/api" - . "github.com/onsi/gomega" ) type testCtx struct { @@ -56,93 +56,6 @@ func (ctx *testCtx) teardownTest() { ctx.conn.Disconnect() } -func TestRequestReplyTapConnect(t *testing.T) { - ctx := setupTest(t) - defer ctx.teardownTest() - - // mock reply - ctx.mockVpp.MockReply(&tap.TapConnectReply{ - SwIfIndex: 1, - }) - - request := &tap.TapConnect{ - TapName: []byte("test-tap-name"), - UseRandomMac: 1, - } - reply := &tap.TapConnectReply{} - - err := ctx.ch.SendRequest(request).ReceiveReply(reply) - Expect(err).ShouldNot(HaveOccurred()) - Expect(reply.Retval).To(BeEquivalentTo(0), - "Incorrect Retval value for TapConnectReply") - Expect(reply.SwIfIndex).To(BeEquivalentTo(1), - "Incorrect SwIfIndex value for TapConnectReply") -} - -func TestRequestReplyTapModify(t *testing.T) { - ctx := setupTest(t) - defer ctx.teardownTest() - - // mock reply - ctx.mockVpp.MockReply(&tap.TapModifyReply{ - SwIfIndex: 2, - }) - - request := &tap.TapModify{ - TapName: []byte("test-tap-modify"), - UseRandomMac: 1, - CustomDevInstance: 1, - } - reply := &tap.TapModifyReply{} - - err := ctx.ch.SendRequest(request).ReceiveReply(reply) - Expect(err).ShouldNot(HaveOccurred()) - Expect(reply.Retval).To(BeEquivalentTo(0), - "Incorrect Retval value for TapModifyReply") - Expect(reply.SwIfIndex).To(BeEquivalentTo(2), - "Incorrect SwIfIndex value for TapModifyReply") -} - -func TestRequestReplyTapDelete(t *testing.T) { - ctx := setupTest(t) - defer ctx.teardownTest() - - // mock reply - ctx.mockVpp.MockReply(&tap.TapDeleteReply{}) - - request := &tap.TapDelete{ - SwIfIndex: 3, - } - reply := &tap.TapDeleteReply{} - - err := ctx.ch.SendRequest(request).ReceiveReply(reply) - Expect(err).ShouldNot(HaveOccurred()) - Expect(reply.Retval).To(BeEquivalentTo(0), - "Incorrect Retval value for TapDeleteReply") -} - -func TestRequestReplySwInterfaceTapDump(t *testing.T) { - ctx := setupTest(t) - defer ctx.teardownTest() - - // mock reply - byteName := []byte("dev-name-test") - ctx.mockVpp.MockReply(&tap.SwInterfaceTapDetails{ - SwIfIndex: 25, - DevName: byteName, - }) - - request := &tap.SwInterfaceTapDump{} - reply := &tap.SwInterfaceTapDetails{} - - err := ctx.ch.SendRequest(request).ReceiveReply(reply) - Expect(err).ShouldNot(HaveOccurred()) - Expect(reply.SwIfIndex).To(BeEquivalentTo(25), - "Incorrect SwIfIndex value for SwInterfaceTapDetails") - Expect(reply.DevName).ToNot(BeEquivalentTo(byteName), - "Incorrect DevName value for SwInterfaceTapDetails") -} - func TestRequestReplyMemifCreate(t *testing.T) { ctx := setupTest(t) defer ctx.teardownTest() @@ -191,7 +104,7 @@ func TestRequestReplyMemifDetails(t *testing.T) { // mock reply ctx.mockVpp.MockReply(&memif.MemifDetails{ SwIfIndex: 25, - IfName: []byte("memif-name"), + IfName: "memif-name", Role: 0, }) @@ -208,35 +121,6 @@ func TestRequestReplyMemifDetails(t *testing.T) { "Incorrect Role value for MemifDetails") } -func TestMultiRequestReplySwInterfaceTapDump(t *testing.T) { - ctx := setupTest(t) - defer ctx.teardownTest() - - // mock reply - var msgs []api.Message - for i := 1; i <= 10; i++ { - msgs = append(msgs, &tap.SwInterfaceTapDetails{ - SwIfIndex: uint32(i), - DevName: []byte("dev-name-test"), - }) - } - ctx.mockVpp.MockReply(msgs...) - ctx.mockVpp.MockReply(&ControlPingReply{}) - - reqCtx := ctx.ch.SendMultiRequest(&tap.SwInterfaceTapDump{}) - cnt := 0 - for { - msg := &tap.SwInterfaceTapDetails{} - stop, err := reqCtx.ReceiveReply(msg) - if stop { - break - } - Expect(err).ShouldNot(HaveOccurred()) - cnt++ - } - Expect(cnt).To(BeEquivalentTo(10)) -} - func TestMultiRequestReplySwInterfaceMemifDump(t *testing.T) { ctx := setupTest(t) defer ctx.teardownTest() @@ -245,7 +129,7 @@ func TestMultiRequestReplySwInterfaceMemifDump(t *testing.T) { var msgs []api.Message for i := 1; i <= 10; i++ { msgs = append(msgs, &memif.MemifDetails{ - SwIfIndex: uint32(i), + SwIfIndex: interface_types.InterfaceIndex(i), }) } ctx.mockVpp.MockReply(msgs...) @@ -276,8 +160,8 @@ func TestNotificationEvent(t *testing.T) { // mock event and force its delivery ctx.mockVpp.MockReply(&interfaces.SwInterfaceEvent{ - SwIfIndex: 2, - LinkUpDown: 1, + SwIfIndex: 2, + Flags: interface_types.IF_STATUS_API_FLAG_LINK_UP, }) ctx.mockVpp.SendMsg(0, []byte("")) @@ -295,7 +179,7 @@ func TestNotificationEvent(t *testing.T) { // verify the received notifications Expect(notif.SwIfIndex).To(BeEquivalentTo(2), "Incorrect SwIfIndex value for SwInterfaceSetFlags") - Expect(notif.LinkUpDown).To(BeEquivalentTo(1), "Incorrect LinkUpDown value for SwInterfaceSetFlags") + Expect(notif.Flags).To(BeEquivalentTo(interface_types.IF_STATUS_API_FLAG_LINK_UP), "Incorrect LinkUpDown value for SwInterfaceSetFlags") err = sub.Unsubscribe() Expect(err).ShouldNot(HaveOccurred()) @@ -330,15 +214,15 @@ func TestSetReplyTimeoutMultiRequest(t *testing.T) { ctx.mockVpp.MockReply( &interfaces.SwInterfaceDetails{ SwIfIndex: 1, - InterfaceName: []byte("if-name-test"), + InterfaceName: "if-name-test", }, &interfaces.SwInterfaceDetails{ SwIfIndex: 2, - InterfaceName: []byte("if-name-test"), + InterfaceName: "if-name-test", }, &interfaces.SwInterfaceDetails{ SwIfIndex: 3, - InterfaceName: []byte("if-name-test"), + InterfaceName: "if-name-test", }, ) ctx.mockVpp.MockReply(&ControlPingReply{}) @@ -404,8 +288,8 @@ func TestMultiRequestDouble(t *testing.T) { for i := 1; i <= 3; i++ { msgs = append(msgs, mock.MsgWithContext{ Msg: &interfaces.SwInterfaceDetails{ - SwIfIndex: uint32(i), - InterfaceName: []byte("if-name-test"), + SwIfIndex: interface_types.InterfaceIndex(i), + InterfaceName: "if-name-test", }, Multipart: true, SeqNum: 1, @@ -417,8 +301,8 @@ func TestMultiRequestDouble(t *testing.T) { msgs = append(msgs, mock.MsgWithContext{ Msg: &interfaces.SwInterfaceDetails{ - SwIfIndex: uint32(i), - InterfaceName: []byte("if-name-test"), + SwIfIndex: interface_types.InterfaceIndex(i), + InterfaceName: "if-name-test", }, Multipart: true, SeqNum: 2, @@ -479,16 +363,16 @@ func TestReceiveReplyAfterTimeout(t *testing.T) { }, // normal reply for next request mock.MsgWithContext{ - Msg: &tap.TapConnectReply{}, + Msg: &interfaces.SwInterfaceSetFlagsReply{}, SeqNum: 3, }, ) - req := &tap.TapConnect{ - TapName: []byte("test-tap-name"), - UseRandomMac: 1, + req := &interfaces.SwInterfaceSetFlags{ + SwIfIndex: 1, + Flags: interface_types.IF_STATUS_API_FLAG_ADMIN_UP, } - reply := &tap.TapConnectReply{} + reply := &interfaces.SwInterfaceSetFlagsReply{} // should succeed err = ctx.ch.SendRequest(req).ReceiveReply(reply) @@ -543,8 +427,8 @@ func TestReceiveReplyAfterTimeoutMultiRequest(t *testing.T) { for i := 1; i <= 3; i++ { msgs = append(msgs, mock.MsgWithContext{ Msg: &interfaces.SwInterfaceDetails{ - SwIfIndex: uint32(i), - InterfaceName: []byte("if-name-test"), + SwIfIndex: interface_types.InterfaceIndex(i), + InterfaceName: "if-name-test", }, Multipart: true, SeqNum: 2, @@ -554,13 +438,13 @@ func TestReceiveReplyAfterTimeoutMultiRequest(t *testing.T) { ctx.mockVpp.MockReplyWithContext(msgs...) // normal reply for next request - ctx.mockVpp.MockReplyWithContext(mock.MsgWithContext{Msg: &tap.TapConnectReply{}, SeqNum: 3}) + ctx.mockVpp.MockReplyWithContext(mock.MsgWithContext{Msg: &interfaces.SwInterfaceSetFlagsReply{}, SeqNum: 3}) - req := &tap.TapConnect{ - TapName: []byte("test-tap-name"), - UseRandomMac: 1, + req := &interfaces.SwInterfaceSetFlags{ + SwIfIndex: 1, + Flags: interface_types.IF_STATUS_API_FLAG_ADMIN_UP, } - reply := &tap.TapConnectReply{} + reply := &interfaces.SwInterfaceSetFlagsReply{} // should succeed err = ctx.ch.SendRequest(req).ReceiveReply(reply) @@ -582,5 +466,5 @@ func TestInvalidMessageID(t *testing.T) { // second should fail with error invalid message ID err = ctx.ch.SendRequest(&ControlPing{}).ReceiveReply(&ControlPingReply{}) Expect(err).Should(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("invalid message ID")) + Expect(err.Error()).To(ContainSubstring("unexpected message")) }