From cb8e2a88720abb3d0b12bc03f6e911b7a2705bd1 Mon Sep 17 00:00:00 2001 From: blavenie <benoit.lavenier@e-is.pro> Date: Fri, 15 Sep 2017 17:22:57 +0200 Subject: [PATCH] - Fix unit test - better log prefix on websocket server --- .../core/client/model/bma/NetworkPeering.java | 11 ++++++- .../service/local/NetworkServiceImpl.java | 31 ++++++++++++++++--- .../service/local/NetworkServiceTest.java | 2 +- .../websocket/WebSocketServer.java | 12 +++---- 4 files changed, 43 insertions(+), 13 deletions(-) diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/NetworkPeering.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/NetworkPeering.java index 560a70e0..06d93e5d 100644 --- a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/NetworkPeering.java +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/NetworkPeering.java @@ -34,7 +34,7 @@ public class NetworkPeering implements Serializable { private String currency; private String block; private String signature; - + private String status; private String raw; @@ -82,6 +82,14 @@ public class NetworkPeering implements Serializable { this.pubkey = pubkey; } + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + @JsonIgnore public String getRaw() { return raw; @@ -104,6 +112,7 @@ public class NetworkPeering implements Serializable { "currency=" + currency + "\n" + "pubkey=" + pubkey + "\n" + "signature=" + signature + "\n" + + "status=" + status + "\n" + "block=" + block + "\n"; for(Endpoint endpoint : endpoints) { s += endpoint.toString() + "\n"; diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java index 9d016080..1bf7c5ca 100644 --- a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java @@ -41,6 +41,7 @@ import org.duniter.core.exception.TechnicalException; import org.duniter.core.util.*; import org.duniter.core.util.CollectionUtils; import org.duniter.core.util.concurrent.CompletableFutures; +import org.duniter.core.util.http.InetAddressUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -173,8 +174,14 @@ public class NetworkServiceImpl extends BaseRemoteServiceImpl implements Network peer = mainPeer; } + // Exclude peer with only a local IPv4 address + else if (InetAddressUtils.isLocalIPv4Address(peer.getHost())) { + return null; + } + return asyncRefreshPeer(peer, memberUids, pool); }) + .filter(Objects::nonNull) .collect(Collectors.toList()); }); } @@ -434,14 +441,28 @@ public class NetworkServiceImpl extends BaseRemoteServiceImpl implements Network if (CollectionUtils.isEmpty(leaves)) return new ArrayList<>(); // should never occur + List<Peer> result = new ArrayList<>(); + // If less than 100 node, get it in ONE call if (leaves.size() < 100) { - return networkRemoteService.getPeers(peer); + List<Peer> peers = networkRemoteService.getPeers(peer); + + if (CollectionUtils.isNotEmpty(peers)) { + for (Peer peerEp : peers) { + // Filter on endpoints - fix #18 + if (CollectionUtils.isEmpty(filterEndpoints) + || StringUtils.isBlank(peerEp.getApi()) + || filterEndpoints.contains(peerEp.getApi())) { + String hash = ServiceLocator.instance().getCryptoService().hash(peerEp.computeKey()); // compute the hash + peerEp.setHash(hash); + result.add(peerEp); + } + } + } } // Get it by multiple call on /network/peering?leaf= - List<Peer> result = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(leaves)) { + else { int offset = 0; int count = Constants.Config.MAX_SAME_REQUEST_COUNT; while (offset < leaves.size()) { @@ -591,12 +612,12 @@ public class NetworkServiceImpl extends BaseRemoteServiceImpl implements Network peers.forEach(peerFound -> { if (peerFound.getStats().getStatus() == Peer.PeerStatus.DOWN) { String error = peerFound.getStats().getError(); - log.trace(String.format("Found peer [%s] [%s] %s", + log.trace(String.format(" peer [%s] [%s] %s", peerFound.toString(), peerFound.getStats().getStatus().name(), error != null ? error : "")); } else { - log.trace(String.format("Found peer [%s] [%s] [v%s] block [%s]", peerFound.toString(), + log.trace(String.format(" peer [%s] [%s] [v%s] block [%s]", peerFound.toString(), peerFound.getStats().getStatus().name(), peerFound.getStats().getVersion(), peerFound.getStats().getBlockNumber() diff --git a/duniter4j-core-client/src/test/java/org/duniter/core/client/service/local/NetworkServiceTest.java b/duniter4j-core-client/src/test/java/org/duniter/core/client/service/local/NetworkServiceTest.java index 8106d95f..1cdf0ef4 100644 --- a/duniter4j-core-client/src/test/java/org/duniter/core/client/service/local/NetworkServiceTest.java +++ b/duniter4j-core-client/src/test/java/org/duniter/core/client/service/local/NetworkServiceTest.java @@ -53,7 +53,7 @@ public class NetworkServiceTest { } @Test - public void start() throws Exception { + public void getPeers() throws Exception { List<Peer> peers = service.getPeers(peer); diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/websocket/WebSocketServer.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/websocket/WebSocketServer.java index 8852808b..77eb1314 100644 --- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/websocket/WebSocketServer.java +++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/websocket/WebSocketServer.java @@ -42,7 +42,6 @@ import org.duniter.core.exception.TechnicalException; import org.duniter.core.util.Preconditions; import org.duniter.elasticsearch.PluginSettings; import org.duniter.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.client.Client; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; @@ -59,12 +58,14 @@ public class WebSocketServer { public static final String WS_PATH = "/ws"; - private final ESLogger log = Loggers.getLogger("duniter.ws"); + + private final ESLogger logger; private static final String PORT_RANGE_REGEXP = "[0-9]+-[0-9]+"; private List<Class<?>> endPoints = new ArrayList<>(); @Inject public WebSocketServer(final PluginSettings pluginSettings, ThreadPool threadPool) { + logger = Loggers.getLogger("duniter.ws", pluginSettings.getSettings(), new String[0]); // If WS enable if (pluginSettings.getWebSocketEnable()) { // When node started @@ -77,7 +78,6 @@ public class WebSocketServer { } } - public void addEndPoint(Class<?> endPoint) { endPoints.add(endPoint); } @@ -93,7 +93,7 @@ public class WebSocketServer { Preconditions.checkNotNull(portOrRange); Preconditions.checkArgument(portOrRange.matches(PORT_RANGE_REGEXP) || portOrRange.matches("[0-9]+")); - log.info(String.format("Starting Websocket server... {%s:%s}", host, portOrRange)); + logger.info(String.format("Starting Websocket server... {%s:%s}", host, portOrRange)); String[] rangeParts = portOrRange.split("-"); int port = Integer.parseInt(rangeParts[0]); @@ -131,11 +131,11 @@ public class WebSocketServer { } if (started) { - log.info(String.format("Websocket server started {%s:%s} on path [%s]", host, port, WS_PATH)); + logger.info(String.format("Websocket server started {%s:%s} on path [%s]", host, port, WS_PATH)); } else { String error = String.format("Failed to start Websocket server. Could not bind address {%s:%s}", host, port); - log.error(error); + logger.error(error); throw new TechnicalException(error); } } -- GitLab