Update TestClient.java

This commit is contained in:
Andrea Cavalli 2021-02-13 01:36:12 +01:00
parent 3d2b2628dd
commit 800187b9e2

View File

@ -7,19 +7,28 @@ import it.tdlight.common.ResultHandler;
import it.tdlight.common.TelegramClient; import it.tdlight.common.TelegramClient;
import it.tdlight.common.UpdatesHandler; import it.tdlight.common.UpdatesHandler;
import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi;
import it.tdlight.jni.TdApi.AuthorizationStateWaitTdlibParameters; import it.tdlight.jni.TdApi.AuthorizationStateReady;
import it.tdlight.jni.TdApi.ConnectionStateReady;
import it.tdlight.jni.TdApi.Error; import it.tdlight.jni.TdApi.Error;
import it.tdlight.jni.TdApi.FormattedText;
import it.tdlight.jni.TdApi.Function; import it.tdlight.jni.TdApi.Function;
import it.tdlight.jni.TdApi.Message;
import it.tdlight.jni.TdApi.MessageSenderUser;
import it.tdlight.jni.TdApi.MessageText;
import it.tdlight.jni.TdApi.Object; import it.tdlight.jni.TdApi.Object;
import it.tdlight.jni.TdApi.Ok; import it.tdlight.jni.TdApi.Ok;
import it.tdlight.jni.TdApi.SetLogTagVerbosityLevel; import it.tdlight.jni.TdApi.SetLogTagVerbosityLevel;
import it.tdlight.jni.TdApi.SetLogVerbosityLevel; import it.tdlight.jni.TdApi.SetLogVerbosityLevel;
import it.tdlight.jni.TdApi.SetOption; import it.tdlight.jni.TdApi.SetOption;
import it.tdlight.jni.TdApi.SetTdlibParameters; import it.tdlight.jni.TdApi.SetTdlibParameters;
import it.tdlight.jni.TdApi.TextEntity;
import it.tdlight.jni.TdApi.UpdateAuthorizationState; import it.tdlight.jni.TdApi.UpdateAuthorizationState;
import it.tdlight.jni.TdApi.UpdateConnectionState;
import it.tdlight.jni.TdApi.UpdateNewMessage;
import it.tdlight.tdlibsession.td.TdError; import it.tdlight.tdlibsession.td.TdError;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
@ -32,6 +41,7 @@ public class TestClient implements TelegramClient {
private static final Logger logger = LoggerFactory.getLogger(TestClient.class); private static final Logger logger = LoggerFactory.getLogger(TestClient.class);
private static final AtomicLong incrementalMessageId = new AtomicLong(1);
private final Many<Object> updates = Sinks.many().unicast().onBackpressureError(); private final Many<Object> updates = Sinks.many().unicast().onBackpressureError();
private final Scheduler testClientScheduler = Schedulers.newSingle("test-client", true); private final Scheduler testClientScheduler = Schedulers.newSingle("test-client", true);
private final List<String> features; private final List<String> features;
@ -65,8 +75,23 @@ public class TestClient implements TelegramClient {
for (String featureName : features) { for (String featureName : features) {
switch (featureName) { switch (featureName) {
case "infinite-status-update": case "status-update":
Mono.<TdApi.Object>just(new UpdateAuthorizationState(new AuthorizationStateWaitTdlibParameters())) Mono
.<List<TdApi.Object>>just(List.of(
new UpdateAuthorizationState(new AuthorizationStateReady()),
new UpdateConnectionState(new ConnectionStateReady()))
)
.doOnNext(updatesHandler::onUpdates)
.subscribeOn(testClientScheduler)
.subscribe();
break;
case "infinite-messages":
Mono
.<TdApi.Object>fromSupplier(() -> new UpdateNewMessage(generateRandomMessage(
features.contains("random-senders"),
features.contains("random-chats"),
features.contains("random-text")))
)
.repeat() .repeat()
.buffer(100) .buffer(100)
.doOnNext(updatesHandler::onUpdates) .doOnNext(updatesHandler::onUpdates)
@ -79,6 +104,18 @@ public class TestClient implements TelegramClient {
} }
} }
private static Message generateRandomMessage(boolean randomSender, boolean randomChat, boolean randomText) {
var msg = new Message();
msg.sender = new MessageSenderUser(312042);
msg.chatId = 240213;
msg.id = incrementalMessageId.getAndIncrement();
var content = new MessageText();
content.text = new FormattedText("Text", new TextEntity[0]);
msg.content = content;
msg.date = (int) System.currentTimeMillis() / 1000;
return msg;
}
@Override @Override
public void send(Function query, ResultHandler resultHandler, ExceptionHandler exceptionHandler) { public void send(Function query, ResultHandler resultHandler, ExceptionHandler exceptionHandler) {
switch (query.getConstructor()) { switch (query.getConstructor()) {