X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2FTestClient.java;h=0d54600d17094e49bc966e143992bdd7017c5683;hb=319a01f87982b8cf00a0b77839b69d161f32d606;hp=fe39e44197d1399cdda928a48651096076c12fa4;hpb=ceef7f3dbafb263cc649798bfb02706ae93bbf88;p=demos%2Fkafka%2Fchat diff --git a/src/test/java/de/juplo/kafka/chat/backend/TestClient.java b/src/test/java/de/juplo/kafka/chat/backend/TestClient.java index fe39e441..0d54600d 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/TestClient.java +++ b/src/test/java/de/juplo/kafka/chat/backend/TestClient.java @@ -6,18 +6,22 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; import reactor.core.publisher.Mono; import reactor.util.retry.Retry; +import java.nio.charset.Charset; import java.time.Duration; +import java.util.concurrent.ThreadLocalRandom; @Slf4j -public class TestClient +public class TestClient implements Runnable { + @Override public void run() { - for (int i = 0; i < 100; i++) + for (int i = 0; running; i++) { String message = "Message #" + i; for (ChatRoomInfoTo chatRoom : chatRooms) @@ -25,11 +29,24 @@ public class TestClient sendMessage(chatRoom, message) .retryWhen(Retry.fixedDelay(10, Duration.ofSeconds(1))) .map(MessageTo::toString) + .onErrorResume(throwable -> + { + WebClientResponseException e = (WebClientResponseException)throwable.getCause(); + return Mono.just(e.getResponseBodyAsString(Charset.defaultCharset())); + }) .subscribe(result -> log.info( - "{} sent message \"{}\" to {}", + "{} sent a message to {}: {}", user, - message, - chatRoom)); + chatRoom, + result)); + } + try + { + Thread.sleep(ThreadLocalRandom.current().nextLong(700, 1000)); + } + catch (Exception e) + { + throw new RuntimeException(e); } } } @@ -66,6 +83,8 @@ public class TestClient private final ChatRoomInfoTo[] chatRooms; private final User user; + volatile boolean running = true; + TestClient(Integer port, ChatRoomInfoTo[] chatRooms, String username) {