Skip to content

Commit c4616cb

Browse files
committed
fix: lazy load connectivity info
Initial calls to getCachedConnectivityInfo() may return an empty list if it occurs before an initial call to getConnectivityInfo(). This change will ensure that getConnectivityInfo() has been called when returning cached results.
1 parent 017c954 commit c4616cb

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/main/java/com/aws/greengrass/clientdevices/auth/iot/ConnectivityInfoProvider.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public ConnectivityInfoProvider(DeviceConfiguration deviceConfiguration,
5252
* @return list of cached connectivity info items
5353
*/
5454
public List<String> getCachedHostAddresses() {
55+
if (cachedHostAddresses.isEmpty()) {
56+
getConnectivityInfo();
57+
}
5558
return cachedHostAddresses;
5659
}
5760

@@ -68,7 +71,9 @@ public List<ConnectivityInfo> getConnectivityInfo() {
6871
try {
6972
GetConnectivityInfoResponse getConnectivityInfoResponse = clientFactory.getGreengrassV2DataClient()
7073
.getConnectivityInfo(getConnectivityInfoRequest);
71-
if (getConnectivityInfoResponse.hasConnectivityInfo()) {
74+
if (getConnectivityInfoResponse == null) {
75+
LOGGER.atWarn().log("Failed to retrieve connectivity info");
76+
} else if (getConnectivityInfoResponse.hasConnectivityInfo()) {
7277
// Filter out port and metadata since it is not needed
7378
connectivityInfoList = getConnectivityInfoResponse.connectivityInfo();
7479
cachedHostAddresses = new ArrayList<>(connectivityInfoList.stream()

src/test/java/com/aws/greengrass/clientdevices/auth/iot/ConnectivityInfoProviderTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public void setup() {
6565

6666
@SuppressWarnings("PMD.AvoidUsingHardCodedIP")
6767
@Test
68-
void GIVEN_connectivity_info_WHEN_get_connectivity_info_THEN_connectivity_info_returned() {
68+
void GIVEN_connectivity_info_WHEN_getConnectivityInfo_THEN_connectivity_info_returned() {
6969
ConnectivityInfo connectivityInfo = ConnectivityInfo.builder().hostAddress("172.8.8.10")
7070
.metadata("").id("172.8.8.10").portNumber(8883).build();
7171
ConnectivityInfo connectivityInfo1 = ConnectivityInfo.builder().hostAddress("localhost")
@@ -82,7 +82,7 @@ void GIVEN_connectivity_info_WHEN_get_connectivity_info_THEN_connectivity_info_r
8282
}
8383

8484
@Test
85-
void GIVEN_no_connectivity_info_WHEN_get_connectivity_info_THEN_no_connectivity_info_returned() {
85+
void GIVEN_no_connectivity_info_WHEN_getConnectivityInfo_THEN_no_connectivity_info_returned() {
8686
GetConnectivityInfoResponse getConnectivityInfoResponse = GetConnectivityInfoResponse.builder().build();
8787
doReturn(getConnectivityInfoResponse).when(greengrassV2DataClient)
8888
.getConnectivityInfo(any(GetConnectivityInfoRequest.class));
@@ -94,7 +94,7 @@ void GIVEN_no_connectivity_info_WHEN_get_connectivity_info_THEN_no_connectivity_
9494
}
9595

9696
@Test
97-
void GIVEN_cloudThrowValidationException_WHEN_get_connectivity_info_THEN_no_connectivity_info_returned(
97+
void GIVEN_cloudThrowValidationException_WHEN_getConnectivityInfo_THEN_no_connectivity_info_returned(
9898
ExtensionContext context) {
9999
ignoreExceptionOfType(context, ValidationException.class);
100100
when(greengrassV2DataClient.getConnectivityInfo(any(GetConnectivityInfoRequest.class)))
@@ -105,7 +105,7 @@ void GIVEN_cloudThrowValidationException_WHEN_get_connectivity_info_THEN_no_conn
105105

106106
@SuppressWarnings("PMD.AvoidUsingHardCodedIP")
107107
@Test
108-
void GIVEN_cached_connectivity_info_WHEN_get_cached_connectivity_info_THEN_connectivity_info_returned() {
108+
void GIVEN_no_cached_connectivity_info_WHEN_getCachedHostAddresses_THEN_connectivity_info_lazy_loaded() {
109109
ConnectivityInfo connectivityInfo = ConnectivityInfo.builder().hostAddress("172.8.8.10")
110110
.metadata("").id("172.8.8.10").portNumber(8883).build();
111111
ConnectivityInfo connectivityInfo1 = ConnectivityInfo.builder().hostAddress("localhost")
@@ -115,7 +115,7 @@ void GIVEN_cached_connectivity_info_WHEN_get_cached_connectivity_info_THEN_conne
115115
doReturn(getConnectivityInfoResponse).when(greengrassV2DataClient)
116116
.getConnectivityInfo(any(GetConnectivityInfoRequest.class));
117117

118-
connectivityInfoProvider.getConnectivityInfo();
118+
//connectivityInfoProvider.getConnectivityInfo();
119119
List<String> connectivityInfos = connectivityInfoProvider.getCachedHostAddresses();
120120
assertThat(connectivityInfos, containsInAnyOrder("172.8.8.10", "localhost"));
121121
}

0 commit comments

Comments
 (0)