Fix events for mock adapter
[govpp.git] / api / api_test.go
index e7592e0..64c513c 100644 (file)
@@ -144,7 +144,7 @@ func TestRequestReplyMemifCreate(t *testing.T) {
        })
        request := &memif.MemifCreate{
                Role:       10,
-               Key:        12,
+               ID:         12,
                RingSize:   8000,
                BufferSize: 50,
        }
@@ -263,16 +263,59 @@ func TestNotifications(t *testing.T) {
        ctx.mockVpp.SendMsg(0, []byte(""))
 
        // receive the notification
-       notif := (<-notifChan).(*interfaces.SwInterfaceSetFlags)
+       var notif *interfaces.SwInterfaceSetFlags
+       Eventually(func() *interfaces.SwInterfaceSetFlags {
+               select {
+               case n := <-notifChan:
+                       notif = n.(*interfaces.SwInterfaceSetFlags)
+                       return notif
+               default:
+                       return nil
+               }
+       }).ShouldNot(BeNil())
 
        // verify the received notifications
-       Expect(notif).ShouldNot(BeNil())
        Expect(notif.SwIfIndex).To(BeEquivalentTo(3), "Incorrect SwIfIndex value for SwInterfaceSetFlags")
        Expect(notif.AdminUpDown).To(BeEquivalentTo(1), "Incorrect AdminUpDown value for SwInterfaceSetFlags")
 
        ctx.ch.UnsubscribeNotification(subs)
 }
 
+func TestNotificationEvent(t *testing.T) {
+       ctx := setupTest(t)
+       defer ctx.teardownTest()
+
+       // subscribe for notification
+       notifChan := make(chan api.Message, 1)
+       subs, err := ctx.ch.SubscribeNotification(notifChan, interfaces.NewSwInterfaceEvent)
+       Expect(err).ShouldNot(HaveOccurred())
+
+       // mock the notification and force its delivery
+       ctx.mockVpp.MockReply(&interfaces.SwInterfaceEvent{
+               SwIfIndex:  2,
+               LinkUpDown: 1,
+       })
+       ctx.mockVpp.SendMsg(0, []byte(""))
+
+       // receive the notification
+       var notif *interfaces.SwInterfaceEvent
+       Eventually(func() *interfaces.SwInterfaceEvent {
+               select {
+               case n := <-notifChan:
+                       notif = n.(*interfaces.SwInterfaceEvent)
+                       return notif
+               default:
+                       return nil
+               }
+       }).ShouldNot(BeNil())
+
+       // 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")
+
+       ctx.ch.UnsubscribeNotification(subs)
+}
+
 func TestCheckMessageCompatibility(t *testing.T) {
        ctx := setupTest(t)
        defer ctx.teardownTest()