From c9e514e425b74bef15181abedecb3cd86ca21136 Mon Sep 17 00:00:00 2001 From: Carsten Otto Date: Sat, 27 Nov 2021 11:56:13 +0100 Subject: [PATCH] add get-blockheight to status controller --- .../cotto/lndmanagej/service/OwnNodeService.java | 4 ++++ .../lndmanagej/service/OwnNodeServiceTest.java | 14 ++++++++++++++ .../lndmanagej/controller/StatusControllerIT.java | 7 +++++++ .../lndmanagej/controller/StatusController.java | 6 ++++++ .../controller/StatusControllerTest.java | 7 +++++++ 5 files changed, 38 insertions(+) diff --git a/backend/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java b/backend/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java index 2a5ed8a0..47742f38 100644 --- a/backend/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java +++ b/backend/src/main/java/de/cotto/lndmanagej/service/OwnNodeService.java @@ -24,6 +24,10 @@ public class OwnNodeService { return Boolean.TRUE.equals(syncedToChainCache.get("")); } + public int getBlockHeight() { + return grpcGetInfo.getBlockHeight().orElseThrow(); + } + private boolean isSyncedToChainWithoutCache() { return grpcGetInfo.isSyncedToChain().orElse(false); } diff --git a/backend/src/test/java/de/cotto/lndmanagej/service/OwnNodeServiceTest.java b/backend/src/test/java/de/cotto/lndmanagej/service/OwnNodeServiceTest.java index cd212906..8450ee1d 100644 --- a/backend/src/test/java/de/cotto/lndmanagej/service/OwnNodeServiceTest.java +++ b/backend/src/test/java/de/cotto/lndmanagej/service/OwnNodeServiceTest.java @@ -7,9 +7,11 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import java.util.NoSuchElementException; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -37,4 +39,16 @@ class OwnNodeServiceTest { when(grpcGetInfo.isSyncedToChain()).thenReturn(Optional.empty()); assertThat(ownNodeService.isSyncedToChain()).isFalse(); } + + @Test + void getBlockHeight() { + when(grpcGetInfo.getBlockHeight()).thenReturn(Optional.of(123_456)); + assertThat(ownNodeService.getBlockHeight()).isEqualTo(123_456); + } + + @Test + void getBlockHeight_empty() { + when(grpcGetInfo.getBlockHeight()).thenReturn(Optional.empty()); + assertThatExceptionOfType(NoSuchElementException.class).isThrownBy(ownNodeService::getBlockHeight); + } } \ No newline at end of file diff --git a/web/src/integrationTest/java/de/cotto/lndmanagej/controller/StatusControllerIT.java b/web/src/integrationTest/java/de/cotto/lndmanagej/controller/StatusControllerIT.java index f2287f46..2925446d 100644 --- a/web/src/integrationTest/java/de/cotto/lndmanagej/controller/StatusControllerIT.java +++ b/web/src/integrationTest/java/de/cotto/lndmanagej/controller/StatusControllerIT.java @@ -46,6 +46,13 @@ class StatusControllerIT { .andExpect(content().string("true")); } + @Test + void getBlockHeight() throws Exception { + when(ownNodeService.getBlockHeight()).thenReturn(123_456); + mockMvc.perform(get(PREFIX + "/block-height")) + .andExpect(content().string("123456")); + } + @Test void getPubkeysForOpenChannels() throws Exception { when(channelService.getOpenChannels()).thenReturn(Set.of(LOCAL_OPEN_CHANNEL_TO_NODE_3, LOCAL_OPEN_CHANNEL)); diff --git a/web/src/main/java/de/cotto/lndmanagej/controller/StatusController.java b/web/src/main/java/de/cotto/lndmanagej/controller/StatusController.java index 2bf90609..10fab574 100644 --- a/web/src/main/java/de/cotto/lndmanagej/controller/StatusController.java +++ b/web/src/main/java/de/cotto/lndmanagej/controller/StatusController.java @@ -37,6 +37,12 @@ public class StatusController { return ownNodeService.isSyncedToChain(); } + @GetMapping("/block-height") + public int getBlockHeight() { + mark("getBlockHeight"); + return ownNodeService.getBlockHeight(); + } + @GetMapping("/open-channels/pubkeys") public PubkeysDto getPubkeysForOpenChannels() { mark("getPubkeysForOpenChannels"); diff --git a/web/src/test/java/de/cotto/lndmanagej/controller/StatusControllerTest.java b/web/src/test/java/de/cotto/lndmanagej/controller/StatusControllerTest.java index 4f93f7c1..72e74fc9 100644 --- a/web/src/test/java/de/cotto/lndmanagej/controller/StatusControllerTest.java +++ b/web/src/test/java/de/cotto/lndmanagej/controller/StatusControllerTest.java @@ -83,4 +83,11 @@ class StatusControllerTest { when(channelService.getAllLocalChannels()).thenReturn(Stream.of(CLOSED_CHANNEL_2, CLOSED_CHANNEL)); assertThat(statusController.getPubkeysForAllChannels().pubkeys()).containsExactly(PUBKEY_2.toString()); } + + @Test + void getBlockHeight() { + when(ownNodeService.getBlockHeight()).thenReturn(123_456); + assertThat(statusController.getBlockHeight()).isEqualTo(123_456); + verify(metrics).mark(argThat(name -> name.endsWith(".getBlockHeight"))); + } } \ No newline at end of file