You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuweni.apache.org by to...@apache.org on 2021/03/31 06:37:17 UTC
[incubator-tuweni] branch master updated: Fix ethstats flaky test
This is an automated email from the ASF dual-hosted git repository.
toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git
The following commit(s) were added to refs/heads/master by this push:
new 7e37312 Fix ethstats flaky test
new e51155b Merge pull request #202 from atoulme/ethstats_flaky_test
7e37312 is described below
commit 7e373120f28ce660dec6e25a32d44c76d9a4ad3f
Author: Antoine Toulme <an...@lunar-ocean.com>
AuthorDate: Tue Mar 30 22:54:16 2021 -0700
Fix ethstats flaky test
---
.../tuweni/ethstats/EthStatsReporterTest.java | 23 +++++++--------
.../apache/tuweni/ethstats/FakeEthStatsServer.java | 34 ++++++++++++++++------
2 files changed, 36 insertions(+), 21 deletions(-)
diff --git a/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/EthStatsReporterTest.java b/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/EthStatsReporterTest.java
index c28a336..06e08da 100644
--- a/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/EthStatsReporterTest.java
+++ b/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/EthStatsReporterTest.java
@@ -12,13 +12,11 @@
*/
package org.apache.tuweni.ethstats;
-import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.apache.tuweni.bytes.Bytes;
import org.apache.tuweni.bytes.Bytes32;
-import org.apache.tuweni.concurrent.AsyncResult;
import org.apache.tuweni.eth.Address;
import org.apache.tuweni.eth.Hash;
import org.apache.tuweni.junit.VertxExtension;
@@ -57,14 +55,9 @@ public class EthStatsReporterTest {
},
now::toEpochMilli);
- AsyncResult<String> nextMessage = server.captureNextMessage();
reporter.start().join();
assertNotNull(server.getWebsocket());
- assertEquals(
- "{\"emit\":[\"hello\",{\"id\":\"foo\",\"info\":{\"api\":\"No\",\"canUpdateHistory\":true,\"client\":\"0.1.0\",\"name\":\"name\",\"net\":\"10\",\"node\":\"node\",\"os\":\"Windoz\",\"os_v\":\"64\",\"port\":33030,\"protocol\":\"eth/63\"},\"secret\":\"wat\"}]}",
- nextMessage.get());
- nextMessage = server.captureNextMessage();
reporter
.sendNewHead(
new BlockStats(
@@ -81,13 +74,19 @@ public class EthStatsReporterTest {
Hash.fromBytes(Bytes32.random()),
Hash.fromBytes(Bytes32.random()),
Collections.emptyList()));
- assertTrue(nextMessage.get().startsWith("{\"emit\":[\"block\",{\"block\""), nextMessage.get());
- nextMessage = server.captureNextMessage();
+
reporter.sendNewNodeStats(new NodeStats(true, false, true, 42, 9, 4000, 100));
- assertTrue(nextMessage.get().startsWith("{\"emit\":[\"stats\",{\"stats\":"), nextMessage.get());
- nextMessage = server.captureNextMessage();
reporter.sendNewPendingTransactionCount(42);
- assertEquals("{\"emit\":[\"pending\",{\"stats\":{\"pending\":42},\"id\":\"foo\"}]}", nextMessage.get());
+ server.waitForMessages(4);
+ assertTrue(4 <= server.getResults().size());
+ assertTrue(
+ server
+ .messagesContain(
+ "{\"emit\":[\"hello\",{\"id\":\"foo\",\"info\":{\"api\":\"No\",\"canUpdateHistory\":true,\"client\":\"0.1.0\",\"name\":\"name\",\"net\":\"10\",\"node\":\"node\",\"os\":\"Windoz\",\"os_v\":\"64\",\"port\":33030,\"protocol\":\"eth/63\"},\"secret\":\"wat\"}]}"));
+ assertTrue(server.messagesContain("{\"emit\":[\"node-ping\",{\"id\":\"foo\""));
+ assertTrue(server.messagesContain("{\"emit\":[\"block\",{\"block\""));
+ assertTrue(server.messagesContain("{\"emit\":[\"pending\",{\"stats\":{\"pending\":42},\"id\":\"foo\"}]}"));
+ assertTrue(server.messagesContain("{\"emit\":[\"stats\",{\"stats\":"));
reporter.stop();
}
diff --git a/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/FakeEthStatsServer.java b/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/FakeEthStatsServer.java
index ad694fa..cf4b6ae 100644
--- a/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/FakeEthStatsServer.java
+++ b/ethstats/src/integrationTest/java/org/apache/tuweni/ethstats/FakeEthStatsServer.java
@@ -13,9 +13,10 @@
package org.apache.tuweni.ethstats;
import org.apache.tuweni.concurrent.AsyncCompletion;
-import org.apache.tuweni.concurrent.AsyncResult;
import org.apache.tuweni.concurrent.CompletableAsyncCompletion;
-import org.apache.tuweni.concurrent.CompletableAsyncResult;
+
+import java.util.ArrayList;
+import java.util.List;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServer;
@@ -27,7 +28,7 @@ class FakeEthStatsServer {
private final String networkInterface;
private int port;
private ServerWebSocket websocket;
- private CompletableAsyncResult<String> result;
+ private List<String> results = new ArrayList<>();
FakeEthStatsServer(Vertx vertx, String networkInterface, int port) {
this.networkInterface = networkInterface;
@@ -55,9 +56,7 @@ class FakeEthStatsServer {
websocket.accept();
websocket.writeTextMessage("{\"emit\":[\"ready\"]}");
websocket.handler(buffer -> {
- if (result != null) {
- result.complete(buffer.toString());
- }
+ results.add(buffer.toString());
});
}
@@ -73,8 +72,25 @@ class FakeEthStatsServer {
return port;
}
- public AsyncResult<String> captureNextMessage() {
- result = AsyncResult.incomplete();
- return result;
+ public List<String> getResults() {
+ return results;
+ }
+
+ public void waitForMessages(int numberOfMessages) throws InterruptedException {
+ for (int i = 0; i < 100; i++) {
+ if (getResults().size() >= numberOfMessages) {
+ return;
+ }
+ Thread.sleep(100);
+ }
+ }
+
+ public boolean messagesContain(String test) {
+ for (String message : getResults()) {
+ if (message.contains(test)) {
+ return true;
+ }
+ }
+ return false;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tuweni.apache.org
For additional commands, e-mail: commits-help@tuweni.apache.org