package core_test
import (
+ "git.fd.io/govpp.git/examples/binapi/interface_types"
"testing"
+ . "github.com/onsi/gomega"
+
"git.fd.io/govpp.git/adapter/mock"
"git.fd.io/govpp.git/api"
"git.fd.io/govpp.git/codec"
"git.fd.io/govpp.git/core"
- "git.fd.io/govpp.git/examples/bin_api/interfaces"
- "git.fd.io/govpp.git/examples/binapi/stats"
+ "git.fd.io/govpp.git/examples/binapi/interfaces"
"git.fd.io/govpp.git/examples/binapi/vpe"
- . "github.com/onsi/gomega"
)
type testCtx struct {
Expect(err.Error()).To(ContainSubstring("nil"))
}
-func TestDoubleConnection(t *testing.T) {
- ctx := setupTest(t, false)
- defer ctx.teardownTest()
-
- conn, err := core.Connect(ctx.mockVpp)
- Expect(err).Should(HaveOccurred())
- Expect(err.Error()).To(ContainSubstring("only one connection per process"))
- Expect(conn).Should(BeNil())
-}
-
func TestAsyncConnection(t *testing.T) {
ctx := setupTest(t, false)
defer ctx.teardownTest()
ctx.conn.Disconnect()
- conn, statusChan, err := core.AsyncConnect(ctx.mockVpp)
+ conn, statusChan, err := core.AsyncConnect(ctx.mockVpp, core.DefaultMaxReconnectAttempts, core.DefaultReconnectInterval)
ctx.conn = conn
Expect(err).ShouldNot(HaveOccurred())
func TestCodec(t *testing.T) {
RegisterTestingT(t)
- msgCodec := &codec.MsgCodec{}
+ var msgCodec = codec.DefaultCodec
// request
- data, err := msgCodec.EncodeMsg(&interfaces.CreateLoopback{MacAddress: []byte{1, 2, 3, 4, 5, 6}}, 11)
+ data, err := msgCodec.EncodeMsg(&interfaces.CreateLoopback{MacAddress: interfaces.MacAddress{1, 2, 3, 4, 5, 6}}, 11)
Expect(err).ShouldNot(HaveOccurred())
Expect(data).ShouldNot(BeEmpty())
msg1 := &interfaces.CreateLoopback{}
err = msgCodec.DecodeMsg(data, msg1)
Expect(err).ShouldNot(HaveOccurred())
- Expect(msg1.MacAddress).To(BeEquivalentTo([]byte{1, 2, 3, 4, 5, 6}))
+ Expect(msg1.MacAddress).To(BeEquivalentTo(interfaces.MacAddress{1, 2, 3, 4, 5, 6}))
// reply
data, err = msgCodec.EncodeMsg(&vpe.ControlPingReply{Retval: 55}, 22)
err = msgCodec.DecodeMsg(data, msg2)
Expect(err).ShouldNot(HaveOccurred())
Expect(msg2.Retval).To(BeEquivalentTo(55))
-
- // other
- data, err = msgCodec.EncodeMsg(&stats.VnetIP4FibCounters{VrfID: 77}, 33)
- Expect(err).ShouldNot(HaveOccurred())
- Expect(data).ShouldNot(BeEmpty())
-
- msg3 := &stats.VnetIP4FibCounters{}
- err = msgCodec.DecodeMsg(data, msg3)
- Expect(err).ShouldNot(HaveOccurred())
- Expect(msg3.VrfID).To(BeEquivalentTo(77))
}
func TestCodecNegative(t *testing.T) {
RegisterTestingT(t)
- msgCodec := &codec.MsgCodec{}
+ var msgCodec = codec.DefaultCodec
// nil message for encoding
data, err := msgCodec.EncodeMsg(nil, 15)
// nil data for decoding
err = msgCodec.DecodeMsg(nil, &vpe.ControlPingReply{})
Expect(err).Should(HaveOccurred())
- Expect(err.Error()).To(ContainSubstring("EOF"))
+ Expect(err.Error()).To(ContainSubstring("panic"))
}
func TestSimpleRequestsWithSequenceNumbers(t *testing.T) {
var msgs []api.Message
for i := 0; i < 10; i++ {
- msgs = append(msgs, &interfaces.SwInterfaceDetails{SwIfIndex: uint32(i)})
+ msgs = append(msgs, &interfaces.SwInterfaceDetails{SwIfIndex: interface_types.InterfaceIndex(i)})
}
ctx.mockVpp.MockReply(msgs...)
ctx.mockVpp.MockReply(&vpe.ControlPingReply{})
}
for i := 0; i < 10; i++ {
msgs = append(msgs, mock.MsgWithContext{
- Msg: &interfaces.SwInterfaceDetails{SwIfIndex: uint32(i)},
+ Msg: &interfaces.SwInterfaceDetails{SwIfIndex: interface_types.InterfaceIndex(i)},
SeqNum: 1,
Multipart: true,
})