[VOL-3548] Differentiate between OLT gRPC channel
disconnect and device reboot
Change-Id: Id52a3cf7b1a69f20e8b061d0655015857fa19ae5
diff --git a/internal/pkg/core/device_handler_test.go b/internal/pkg/core/device_handler_test.go
index 9770f15..012ce51 100644
--- a/internal/pkg/core/device_handler_test.go
+++ b/internal/pkg/core/device_handler_test.go
@@ -1192,3 +1192,62 @@
})
}
}
+
+func TestDeviceHandler_TestReconcileStatus(t *testing.T) {
+
+ // olt disconnect (not reboot)
+ dh1 := newMockDeviceHandler()
+ dh1.adapterPreviouslyConnected = false
+ dh1.agentPreviouslyConnected = true
+
+ // adapter restart
+ dh2 := newMockDeviceHandler()
+ dh2.Client = &mocks.MockOpenoltClient{}
+ dh2.adapterPreviouslyConnected = true
+ dh2.agentPreviouslyConnected = true
+
+ // first connection or olt restart
+ dh3 := newMockDeviceHandler()
+ dh3.Client = &mocks.MockOpenoltClient{}
+ dh3.adapterPreviouslyConnected = false
+ dh3.agentPreviouslyConnected = false
+
+ // olt and adapter restart at the same time (first case)
+ dh4 := newMockDeviceHandler()
+ dh4.Client = &mocks.MockOpenoltClient{}
+ dh4.adapterPreviouslyConnected = true
+ dh4.agentPreviouslyConnected = false
+
+ // adapter restart and olt disconnect at the same time
+ dh5 := newMockDeviceHandler()
+ dh5.Client = &mocks.MockOpenoltClient{}
+ dh5.adapterPreviouslyConnected = true
+ dh5.agentPreviouslyConnected = true
+
+ tests := []struct {
+ name string
+ devicehandler *DeviceHandler
+ expectedRestart bool
+ wantErr bool
+ }{
+ {"dostateup-1", dh1, true, false},
+ {"dostateup-2", dh2, false, false},
+ {"dostateup-3", dh3, false, false},
+ {"dostateup-4", dh4, true, false},
+ {"dostateup-5", dh5, false, false},
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
+ defer cancel()
+ if err := tt.devicehandler.doStateUp(ctx); (err != nil) != tt.wantErr {
+ t.Logf("DeviceHandler.doStateUp() error = %v, wantErr %v", err, tt.wantErr)
+ }
+ tt.devicehandler.stopCollector <- true //stop the stat collector invoked from doStateUp
+ isRestarted := tt.devicehandler.Client.(*mocks.MockOpenoltClient).IsRestarted
+ if tt.expectedRestart != isRestarted {
+ t.Errorf("olt-reboot-failed expected= %v, got= %v", tt.expectedRestart, isRestarted)
+ }
+ })
+ }
+}