From b25b37ad602f33edd9813f85b888dd5dbb7b45c1 Mon Sep 17 00:00:00 2001 From: Bernadette Date: Mon, 19 Feb 2024 13:44:54 -0600 Subject: [PATCH 1/4] scanner health fix --- .../common/DeviceAvailabilityService.java | 12 +++++-- .../common/DeviceAvailabilityServiceTest.java | 36 +++++++++++++------ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java b/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java index 04bc838..6e879af 100644 --- a/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java +++ b/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java @@ -111,14 +111,14 @@ public DeviceHealth findDevStatus(String devName) { switch (devName){ case "flatbedscanner": if(deviceAvailabilitySingleton.getScannerManager() != null) { - healthStatus = deviceAvailabilitySingleton.getScannerManager().getStatus().get(0).getHealthStatus(); + healthStatus = getScannerHealthStatus(deviceAvailabilitySingleton, "FLATBED"); } else { LOGGER.trace("Failed to Connect to " + devName); } break; case "handscanner": if(deviceAvailabilitySingleton.getScannerManager() != null) { - healthStatus = deviceAvailabilitySingleton.getScannerManager().getStatus().get(1).getHealthStatus(); + healthStatus = getScannerHealthStatus(deviceAvailabilitySingleton, "HANDHELD"); } else { LOGGER.trace("Failed to Connect to " + devName); } @@ -150,6 +150,14 @@ public DeviceHealth findDevStatus(String devName) { return healthStatus; } + public DeviceHealth getScannerHealthStatus(DeviceAvailabilitySingleton deviceAvailabilitySingleton, String scannerName) { + for(DeviceHealthResponse deviceHealthResponse: deviceAvailabilitySingleton.getScannerManager().getStatus()) { + if(deviceHealthResponse.getDeviceName().equals(scannerName)) { + return deviceHealthResponse.getHealthStatus(); + } + } + return new DeviceHealthResponse(scannerName, DeviceHealth.NOTREADY).getHealthStatus(); + } public void subscribeToDeviceError(SseEmitter sseEmitter) throws IOException { sseEmitter.onCompletion(() -> this.deviceErrorClientList.remove(sseEmitter)); diff --git a/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java b/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java index 00d3967..7eac207 100644 --- a/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java +++ b/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java @@ -75,30 +75,46 @@ void Test_findDevStatus_Scale() { void Test_findDevStatus_FlatbedScanner() { //arrange List devReady = new ArrayList<>(); - devReady.add(new DeviceHealthResponse("Flatbed", DeviceHealth.READY)); - devReady.add(new DeviceHealthResponse("HandScanner", DeviceHealth.READY)); - - //act + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); deviceAvailabilitySingleton.setScannerManager(mockScannerManager); + when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); + //act + DeviceHealth actual = deviceAvailabilityService.findDevStatus("flatbedscanner"); //assert - when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); - assertEquals(DeviceHealth.READY, deviceAvailabilityService.findDevStatus("flatbedscanner")); + assertEquals(DeviceHealth.READY, actual); } @Test void Test_findDevStatus_HandScanner() { //arrange List devReady = new ArrayList<>(); - devReady.add(new DeviceHealthResponse("Flatbed", DeviceHealth.READY)); - devReady.add(new DeviceHealthResponse("HandScanner", DeviceHealth.READY)); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); + deviceAvailabilitySingleton.setScannerManager(mockScannerManager); + when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); + //act - deviceAvailabilitySingleton.setScannerManager(mockScannerManager); + DeviceHealth actual = deviceAvailabilityService.findDevStatus("handscanner"); //assert + assertEquals(DeviceHealth.READY, actual); + } + + @Test + void Test_findDevStatus_HandheldScanner_missing() { + //arrange + List devReady = new ArrayList<>(); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + deviceAvailabilitySingleton.setScannerManager(mockScannerManager); when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); - assertEquals(DeviceHealth.READY, deviceAvailabilityService.findDevStatus("handscanner")); + + //act + DeviceHealth actual = deviceAvailabilityService.findDevStatus("handscanner"); + //assert + assertEquals(DeviceHealth.NOTREADY, actual); } @Test From df2754ed047ba579f36939405a41f23ce2d3ec9b Mon Sep 17 00:00:00 2001 From: Bernadette Date: Mon, 19 Feb 2024 14:15:44 -0600 Subject: [PATCH 2/4] move logic to manager --- .../common/DeviceAvailabilityService.java | 13 +---- .../components/scanner/ScannerManager.java | 10 ++++ .../common/DeviceAvailabilityServiceTest.java | 32 +++---------- .../scanner/ScannerManagerTest.java | 48 ++++++++++++++++++- 4 files changed, 66 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java b/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java index 6e879af..780cff5 100644 --- a/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java +++ b/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java @@ -111,14 +111,14 @@ public DeviceHealth findDevStatus(String devName) { switch (devName){ case "flatbedscanner": if(deviceAvailabilitySingleton.getScannerManager() != null) { - healthStatus = getScannerHealthStatus(deviceAvailabilitySingleton, "FLATBED"); + healthStatus = deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("FLATBED"); } else { LOGGER.trace("Failed to Connect to " + devName); } break; case "handscanner": if(deviceAvailabilitySingleton.getScannerManager() != null) { - healthStatus = getScannerHealthStatus(deviceAvailabilitySingleton, "HANDHELD"); + healthStatus = deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("HANDHELD"); } else { LOGGER.trace("Failed to Connect to " + devName); } @@ -150,15 +150,6 @@ public DeviceHealth findDevStatus(String devName) { return healthStatus; } - public DeviceHealth getScannerHealthStatus(DeviceAvailabilitySingleton deviceAvailabilitySingleton, String scannerName) { - for(DeviceHealthResponse deviceHealthResponse: deviceAvailabilitySingleton.getScannerManager().getStatus()) { - if(deviceHealthResponse.getDeviceName().equals(scannerName)) { - return deviceHealthResponse.getHealthStatus(); - } - } - return new DeviceHealthResponse(scannerName, DeviceHealth.NOTREADY).getHealthStatus(); - } - public void subscribeToDeviceError(SseEmitter sseEmitter) throws IOException { sseEmitter.onCompletion(() -> this.deviceErrorClientList.remove(sseEmitter)); sseEmitter.onTimeout(() -> this.deviceErrorClientList.remove(sseEmitter)); diff --git a/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java b/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java index 6589a75..18e61fc 100644 --- a/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java +++ b/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java @@ -1,5 +1,6 @@ package com.target.devicemanager.components.scanner; +import com.target.devicemanager.common.DeviceAvailabilitySingleton; import com.target.devicemanager.common.entities.*; import com.target.devicemanager.components.scanner.entities.Barcode; import com.target.devicemanager.components.scanner.entities.ScannerError; @@ -214,6 +215,15 @@ public List getStatus() { } } + public DeviceHealth getScannerHealthStatus(String scannerName) { + for(DeviceHealthResponse deviceHealthResponse: getStatus()) { + if(deviceHealthResponse.getDeviceName().equals(scannerName)) { + return deviceHealthResponse.getHealthStatus(); + } + } + return new DeviceHealthResponse(scannerName, DeviceHealth.NOTREADY).getHealthStatus(); + } + private void disableScanners() throws InterruptedException { LOGGER.trace("disableScanners(in)"); List> taskList = new ArrayList<>(); diff --git a/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java b/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java index 7eac207..07405f1 100644 --- a/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java +++ b/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java @@ -74,47 +74,29 @@ void Test_findDevStatus_Scale() { @Test void Test_findDevStatus_FlatbedScanner() { //arrange - List devReady = new ArrayList<>(); - devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); - devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); + DeviceHealth expected = new DeviceHealthResponse("FLATBED", DeviceHealth.NOTREADY).getHealthStatus(); deviceAvailabilitySingleton.setScannerManager(mockScannerManager); - when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); + when(deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("FLATBED")).thenReturn(expected); //act DeviceHealth actual = deviceAvailabilityService.findDevStatus("flatbedscanner"); + //assert - assertEquals(DeviceHealth.READY, actual); + assertEquals(expected, actual); } @Test void Test_findDevStatus_HandScanner() { //arrange - List devReady = new ArrayList<>(); - devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); - devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); + DeviceHealth expected = new DeviceHealthResponse("HANDHELD", DeviceHealth.READY).getHealthStatus(); deviceAvailabilitySingleton.setScannerManager(mockScannerManager); - when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); - + when(deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("HANDHELD")).thenReturn(expected); //act DeviceHealth actual = deviceAvailabilityService.findDevStatus("handscanner"); //assert - assertEquals(DeviceHealth.READY, actual); - } - - @Test - void Test_findDevStatus_HandheldScanner_missing() { - //arrange - List devReady = new ArrayList<>(); - devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); - deviceAvailabilitySingleton.setScannerManager(mockScannerManager); - when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); - - //act - DeviceHealth actual = deviceAvailabilityService.findDevStatus("handscanner"); - //assert - assertEquals(DeviceHealth.NOTREADY, actual); + assertEquals(expected, actual); } @Test diff --git a/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java b/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java index 4b3484a..f716406 100644 --- a/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java +++ b/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java @@ -1,5 +1,6 @@ package com.target.devicemanager.components.scanner; +import com.target.devicemanager.common.DeviceAvailabilitySingleton; import com.target.devicemanager.common.entities.DeviceError; import com.target.devicemanager.common.entities.DeviceException; import com.target.devicemanager.common.entities.DeviceHealth; @@ -13,6 +14,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; @@ -108,7 +110,7 @@ public void testInitialize() { reconnectResults = new ArrayList<>(); reconnectResults.add(mockFuture); scannerManager = new ScannerManager(scannerDevices, mockScannerLock); - scannerManagerCache = new ScannerManager(scannerDevices, mockScannerLock, mockCacheManager, mockExecutor, reconnectResults, true); + scannerManagerCache = Mockito.spy(new ScannerManager(scannerDevices, mockScannerLock, mockCacheManager, mockExecutor, reconnectResults, true)); } @Test @@ -555,4 +557,48 @@ public void getStatus_WhenCacheNull_WhenDeviceOnline() { //assert assertEquals(expectedList.toString(), deviceHealthResponseList.toString()); } + + @Test + void getScannerHealthStatus_FlatbedScanner() { + //arrange + List devReady = new ArrayList<>(); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); + Mockito.doReturn(devReady).when(scannerManagerCache).getStatus(); + + //act + DeviceHealth actual = scannerManagerCache.getScannerHealthStatus("HANDHELD"); + + //assert + assertEquals(DeviceHealth.READY, actual); + } + + @Test + void getScannerHealthStatus_HandScanner() { + //arrange + List devReady = new ArrayList<>(); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); + Mockito.doReturn(devReady).when(scannerManagerCache).getStatus(); + + //act + DeviceHealth actual = scannerManagerCache.getScannerHealthStatus("HANDHELD"); + + //assert + assertEquals(DeviceHealth.READY, actual); + } + + @Test + void getScannerHealthStatus_HandheldScanner_missing() { + //arrange + List devReady = new ArrayList<>(); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + Mockito.doReturn(devReady).when(scannerManagerCache).getStatus(); + + //act + DeviceHealth actual = scannerManagerCache.getScannerHealthStatus("HANDHELD"); + + //assert + assertEquals(DeviceHealth.NOTREADY, actual); + } } From 496a6c0c4428089e14a4cd9746327d676535b2a8 Mon Sep 17 00:00:00 2001 From: Bernadette Date: Mon, 19 Feb 2024 14:16:57 -0600 Subject: [PATCH 3/4] remove unused imports: --- .../target/devicemanager/components/scanner/ScannerManager.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java b/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java index 18e61fc..d1c18b2 100644 --- a/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java +++ b/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java @@ -1,6 +1,5 @@ package com.target.devicemanager.components.scanner; -import com.target.devicemanager.common.DeviceAvailabilitySingleton; import com.target.devicemanager.common.entities.*; import com.target.devicemanager.components.scanner.entities.Barcode; import com.target.devicemanager.components.scanner.entities.ScannerError; From cb827ed3a21fc5ec82f16409417d93ca2128be00 Mon Sep 17 00:00:00 2001 From: Bernadette Date: Mon, 19 Feb 2024 14:18:25 -0600 Subject: [PATCH 4/4] remove unused imports --- .../devicemanager/components/scanner/ScannerManagerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java b/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java index f716406..12557a8 100644 --- a/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java +++ b/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java @@ -1,6 +1,5 @@ package com.target.devicemanager.components.scanner; -import com.target.devicemanager.common.DeviceAvailabilitySingleton; import com.target.devicemanager.common.entities.DeviceError; import com.target.devicemanager.common.entities.DeviceException; import com.target.devicemanager.common.entities.DeviceHealth;