Fix race condition in cisco telemetry tests (#5979)

This commit is contained in:
Daniel Nelson 2019-06-12 10:11:23 -07:00 committed by GitHub
parent 968714054a
commit 5de7bdf906
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 12 deletions

View File

@ -62,6 +62,13 @@ func (m *mockGNMIServer) Subscribe(server gnmi.GNMI_SubscribeServer) error {
require.Equal(m.t, metadata.Get("username"), []string{"theuser"}) require.Equal(m.t, metadata.Get("username"), []string{"theuser"})
require.Equal(m.t, metadata.Get("password"), []string{"thepassword"}) require.Equal(m.t, metadata.Get("password"), []string{"thepassword"})
// Must read request before sending a response; even though we don't check
// the request itself currently.
_, err := server.Recv()
if err != nil {
panic(err)
}
switch m.scenario { switch m.scenario {
case 0: case 0:
return fmt.Errorf("testerror") return fmt.Errorf("testerror")
@ -91,7 +98,8 @@ func (m *mockGNMIServer) Subscribe(server gnmi.GNMI_SubscribeServer) error {
} }
func TestGNMIError(t *testing.T) { func TestGNMIError(t *testing.T) {
listener, _ := net.Listen("tcp", "127.0.0.1:0") listener, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
server := grpc.NewServer() server := grpc.NewServer()
acc := &testutil.Accumulator{} acc := &testutil.Accumulator{}
gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 0, server: server, acc: acc}) gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 0, server: server, acc: acc})
@ -100,8 +108,11 @@ func TestGNMIError(t *testing.T) {
Username: "theuser", Password: "thepassword", Encoding: "proto", Username: "theuser", Password: "thepassword", Encoding: "proto",
Redial: internal.Duration{Duration: 1 * time.Second}} Redial: internal.Duration{Duration: 1 * time.Second}}
require.Nil(t, c.Start(acc)) require.NoError(t, c.Start(acc))
go server.Serve(listener) go func() {
err := server.Serve(listener)
require.NoError(t, err)
}()
acc.WaitError(1) acc.WaitError(1)
c.Stop() c.Stop()
server.Stop() server.Stop()
@ -157,7 +168,8 @@ func mockGNMINotification() *gnmi.Notification {
} }
func TestGNMIMultiple(t *testing.T) { func TestGNMIMultiple(t *testing.T) {
listener, _ := net.Listen("tcp", "127.0.0.1:0") listener, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
server := grpc.NewServer() server := grpc.NewServer()
acc := &testutil.Accumulator{} acc := &testutil.Accumulator{}
gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 1, server: server, acc: acc}) gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 1, server: server, acc: acc})
@ -168,9 +180,11 @@ func TestGNMIMultiple(t *testing.T) {
Subscriptions: []Subscription{{Name: "alias", Origin: "type", Path: "/model", SubscriptionMode: "sample"}}, Subscriptions: []Subscription{{Name: "alias", Origin: "type", Path: "/model", SubscriptionMode: "sample"}},
} }
require.Nil(t, c.Start(acc)) require.NoError(t, c.Start(acc))
go func() {
go server.Serve(listener) err := server.Serve(listener)
require.NoError(t, err)
}()
acc.Wait(4) acc.Wait(4)
c.Stop() c.Stop()
server.Stop() server.Stop()
@ -195,7 +209,8 @@ func TestGNMIMultiple(t *testing.T) {
} }
func TestGNMIMultipleRedial(t *testing.T) { func TestGNMIMultipleRedial(t *testing.T) {
listener, _ := net.Listen("tcp", "127.0.0.1:0") listener, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
server := grpc.NewServer() server := grpc.NewServer()
acc := &testutil.Accumulator{} acc := &testutil.Accumulator{}
gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 2, server: server, acc: acc}) gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 2, server: server, acc: acc})
@ -206,9 +221,11 @@ func TestGNMIMultipleRedial(t *testing.T) {
Subscriptions: []Subscription{{Name: "alias", Origin: "type", Path: "/model", SubscriptionMode: "sample"}}, Subscriptions: []Subscription{{Name: "alias", Origin: "type", Path: "/model", SubscriptionMode: "sample"}},
} }
require.Nil(t, c.Start(acc)) require.NoError(t, c.Start(acc))
go func() {
go server.Serve(listener) err := server.Serve(listener)
require.NoError(t, err)
}()
acc.Wait(2) acc.Wait(2)
server.Stop() server.Stop()
@ -216,7 +233,10 @@ func TestGNMIMultipleRedial(t *testing.T) {
server = grpc.NewServer() server = grpc.NewServer()
gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 3, server: server, acc: acc}) gnmi.RegisterGNMIServer(server, &mockGNMIServer{t: t, scenario: 3, server: server, acc: acc})
go server.Serve(listener) go func() {
err := server.Serve(listener)
require.NoError(t, err)
}()
acc.Wait(4) acc.Wait(4)
c.Stop() c.Stop()
server.Stop() server.Stop()