From d9fb52bfdb06f223f12f57d4f843616014c5e6e3 Mon Sep 17 00:00:00 2001 From: Alexandr Gorshenin Date: Wed, 22 Apr 2026 10:30:04 +0100 Subject: [PATCH 1/3] Updated logging configuration for tests --- .../ydb/topic/impl/SerialExecutorTest.java | 9 ++ .../impl/TopicReadersIntegrationTest.java | 59 ++++---- .../topic/impl/TopicRetryableStreamTest.java | 7 + .../impl/YdbTopicsCodecIntegrationTest.java | 38 ++--- .../tech/ydb/topic/utils/HideLoggers.java | 16 +++ .../tech/ydb/topic/utils/HideLoggersRule.java | 50 +++++++ .../ydb/topic/write/impl/WriterQueueTest.java | 134 ++++++++---------- topic/src/test/resources/log4j2.xml | 7 +- 8 files changed, 185 insertions(+), 135 deletions(-) create mode 100644 topic/src/test/java/tech/ydb/topic/utils/HideLoggers.java create mode 100644 topic/src/test/java/tech/ydb/topic/utils/HideLoggersRule.java diff --git a/topic/src/test/java/tech/ydb/topic/impl/SerialExecutorTest.java b/topic/src/test/java/tech/ydb/topic/impl/SerialExecutorTest.java index c43b00557..1a4880a70 100644 --- a/topic/src/test/java/tech/ydb/topic/impl/SerialExecutorTest.java +++ b/topic/src/test/java/tech/ydb/topic/impl/SerialExecutorTest.java @@ -10,8 +10,12 @@ import java.util.concurrent.atomic.AtomicInteger; import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; +import tech.ydb.topic.utils.HideLoggers; +import tech.ydb.topic.utils.HideLoggersRule; + /** * @author Aleksandr Gorshenin @@ -26,6 +30,9 @@ private static class IntHolder { private volatile int value; } + @Rule + public final HideLoggersRule hideLogger = new HideLoggersRule(); + @Test public void serialRunnableTest() throws InterruptedException { IntHolder value = new IntHolder(); @@ -116,6 +123,7 @@ public void innerTasksTest() throws InterruptedException { } @Test + @HideLoggers({ SerialExecutor.class }) public void wrongExecuterTest() throws InterruptedException { AtomicInteger value = new AtomicInteger(); ExecutorService pool = Executors.newCachedThreadPool(); @@ -135,6 +143,7 @@ public void wrongExecuterTest() throws InterruptedException { } @Test + @HideLoggers({ SerialExecutor.class }) public void wrongTaskTest() throws InterruptedException { CountDownLatch latch = new CountDownLatch(4); ExecutorService pool = Executors.newCachedThreadPool(); diff --git a/topic/src/test/java/tech/ydb/topic/impl/TopicReadersIntegrationTest.java b/topic/src/test/java/tech/ydb/topic/impl/TopicReadersIntegrationTest.java index b0a6d3eff..3867a71ec 100644 --- a/topic/src/test/java/tech/ydb/topic/impl/TopicReadersIntegrationTest.java +++ b/topic/src/test/java/tech/ydb/topic/impl/TopicReadersIntegrationTest.java @@ -7,10 +7,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.core.config.Configurator; -import org.apache.logging.log4j.spi.ExtendedLogger; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -31,14 +27,17 @@ import tech.ydb.topic.read.events.DataReceivedEvent; import tech.ydb.topic.read.events.ReadEventHandler; import tech.ydb.topic.read.events.StartPartitionSessionEvent; -import tech.ydb.topic.read.impl.ReadPartitionSession; +import tech.ydb.topic.read.impl.AsyncReaderImpl; +import tech.ydb.topic.read.impl.ReaderImpl; import tech.ydb.topic.settings.CreateTopicSettings; import tech.ydb.topic.settings.ReadEventHandlersSettings; import tech.ydb.topic.settings.ReaderSettings; import tech.ydb.topic.settings.StartPartitionSessionSettings; import tech.ydb.topic.settings.TopicReadSettings; import tech.ydb.topic.settings.WriterSettings; +import tech.ydb.topic.utils.HideLoggersRule; import tech.ydb.topic.write.SyncWriter; +import tech.ydb.topic.utils.HideLoggers; /** * @@ -53,6 +52,9 @@ public class TopicReadersIntegrationTest { @Rule public final Timeout timeout = new Timeout(10, TimeUnit.SECONDS); + @Rule + public final HideLoggersRule hideLogger = new HideLoggersRule(); + private final static String TEST_TOPIC = "topic_readers_test"; private final static String TEST_CONSUMER1 = "consumer"; @@ -101,10 +103,8 @@ public void dropTopic() { } @Test + @HideLoggers({ ReaderImpl.class, AsyncReaderImpl.class }) public void singleThreadExecutorTest() throws Exception { - ExtendedLogger silenceLogger = LogManager.getContext(true).getLogger(ReadPartitionSession.class); - Level level = silenceLogger.getLevel(); - ReaderSettings readerSettings = ReaderSettings.newBuilder() .addTopic(TopicReadSettings.newBuilder() .setPath(TEST_TOPIC) @@ -112,36 +112,29 @@ public void singleThreadExecutorTest() throws Exception { .setConsumerName(TEST_CONSUMER1) .build(); - try { - // temporary disable logging - Configurator.setLevel(silenceLogger, Level.OFF); - - Semaphore messageCount = new Semaphore(0); - CompletableFuture processing = new CompletableFuture<>(); + Semaphore messageCount = new Semaphore(0); + CompletableFuture processing = new CompletableFuture<>(); - ExecutorService executor = Executors.newSingleThreadExecutor((r) -> new Thread(r, "test-executor")); - AsyncReader reader = client.createAsyncReader(readerSettings, ReadEventHandlersSettings.newBuilder() - .setExecutor(executor) - .setEventHandler((event) -> { - messageCount.release(); - processing.join(); - }).build() - ); + ExecutorService executor = Executors.newSingleThreadExecutor((r) -> new Thread(r, "test-executor")); + AsyncReader reader = client.createAsyncReader(readerSettings, ReadEventHandlersSettings.newBuilder() + .setExecutor(executor) + .setEventHandler((event) -> { + messageCount.release(); + processing.join(); + }).build() + ); - reader.init().join(); + reader.init().join(); - // wait for message committing - messageCount.acquireUninterruptibly(); + // wait for message committing + messageCount.acquireUninterruptibly(); - // stop reader - CompletableFuture f = reader.shutdown(); - processing.completeExceptionally(new RuntimeException("shutdown")); - f.get(5, TimeUnit.SECONDS); + // stop reader + CompletableFuture f = reader.shutdown(); + processing.completeExceptionally(new RuntimeException("shutdown")); + f.get(5, TimeUnit.SECONDS); - executor.shutdownNow(); - } finally { - Configurator.setLevel(silenceLogger, level); - } + executor.shutdownNow(); } @Test diff --git a/topic/src/test/java/tech/ydb/topic/impl/TopicRetryableStreamTest.java b/topic/src/test/java/tech/ydb/topic/impl/TopicRetryableStreamTest.java index 36cbacf72..8e514b59d 100644 --- a/topic/src/test/java/tech/ydb/topic/impl/TopicRetryableStreamTest.java +++ b/topic/src/test/java/tech/ydb/topic/impl/TopicRetryableStreamTest.java @@ -9,6 +9,7 @@ import com.google.protobuf.Empty; import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; import org.mockito.Mockito; import org.slf4j.Logger; @@ -18,11 +19,16 @@ import tech.ydb.core.Status; import tech.ydb.core.StatusCode; import tech.ydb.core.grpc.GrpcReadWriteStream; +import tech.ydb.topic.utils.HideLoggers; +import tech.ydb.topic.utils.HideLoggersRule; public class TopicRetryableStreamTest { private static final Logger logger = LoggerFactory.getLogger(TopicRetryableStreamTest.class); private static final Empty EMPTY = Empty.getDefaultInstance(); + @Rule + public final HideLoggersRule hideLogger = new HideLoggersRule(); + /** * Pairs a mock GrpcReadWriteStream with a concrete TopicStream backed by it. * Completing grpcFuture simulates the underlying gRPC stream finishing. @@ -257,6 +263,7 @@ public void immediateRetryTest() { } @Test + @HideLoggers({TopicRetryableStreamTest.class}) public void closeOnWrongSchedulerTest() { StreamHandle h = new StreamHandle(); long delayMs = 500L; diff --git a/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsCodecIntegrationTest.java b/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsCodecIntegrationTest.java index 4b58e1be2..f5ef4bed8 100644 --- a/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsCodecIntegrationTest.java +++ b/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsCodecIntegrationTest.java @@ -13,10 +13,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.core.config.Configurator; -import org.apache.logging.log4j.spi.ExtendedLogger; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -39,8 +35,10 @@ import tech.ydb.topic.settings.ReaderSettings; import tech.ydb.topic.settings.TopicReadSettings; import tech.ydb.topic.settings.WriterSettings; +import tech.ydb.topic.utils.HideLoggersRule; import tech.ydb.topic.write.Message; import tech.ydb.topic.write.SyncWriter; +import tech.ydb.topic.utils.HideLoggers; /** @@ -57,6 +55,9 @@ public class YdbTopicsCodecIntegrationTest { @Rule public final Timeout timeout = new Timeout(10, TimeUnit.SECONDS); + @Rule + public final HideLoggersRule hideLogger = new HideLoggersRule(); + private final static String TEST_TOPIC1 = "integration_test_custom_codec_topic1"; private final static String TEST_TOPIC2 = "integration_test_custom_codec_topic2"; private final static String TEST_CONSUMER1 = "consumer_codec"; @@ -283,30 +284,21 @@ public void writeInOneTopicWithDifferentCodec() throws ExecutionException, Inter * */ @Test + @HideLoggers({ MessageDecoder.class }) public void readShouldFailIfWithNotRegisteredCodec() throws ExecutionException, InterruptedException, TimeoutException { - ExtendedLogger silenceLogger = LogManager.getContext(true).getLogger(MessageDecoder.class); - Level level = silenceLogger.getLevel(); - - try { - // temporary disable logging - Configurator.setLevel(silenceLogger, Level.OFF); - - client1 = createClient(); - TopicClient client2 = createClient(); - createTopic(client1, TEST_TOPIC1); + client1 = createClient(); + TopicClient client2 = createClient(); + createTopic(client1, TEST_TOPIC1); - Codec codec1 = new CustomCodec(1, 10113); + Codec codec1 = new CustomCodec(1, 10113); - client1.registerCodec(codec1); - writeData(10113, TEST_TOPIC1, client1); + client1.registerCodec(codec1); + writeData(10113, TEST_TOPIC1, client1); - readDataWithError(TEST_TOPIC1, client2); + readDataWithError(TEST_TOPIC1, client2); - client2.registerCodec(codec1); - readData(TEST_TOPIC1, client2); - } finally { - Configurator.setLevel(silenceLogger, level); - } + client2.registerCodec(codec1); + readData(TEST_TOPIC1, client2); } /** diff --git a/topic/src/test/java/tech/ydb/topic/utils/HideLoggers.java b/topic/src/test/java/tech/ydb/topic/utils/HideLoggers.java new file mode 100644 index 000000000..60567effe --- /dev/null +++ b/topic/src/test/java/tech/ydb/topic/utils/HideLoggers.java @@ -0,0 +1,16 @@ +package tech.ydb.topic.utils; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * + * @author Aleksandr Gorshenin + */ +@Target({ ElementType.METHOD }) +@Retention(RetentionPolicy.RUNTIME) +public @interface HideLoggers { + Class[] value(); +} diff --git a/topic/src/test/java/tech/ydb/topic/utils/HideLoggersRule.java b/topic/src/test/java/tech/ydb/topic/utils/HideLoggersRule.java new file mode 100644 index 000000000..01d48d5c4 --- /dev/null +++ b/topic/src/test/java/tech/ydb/topic/utils/HideLoggersRule.java @@ -0,0 +1,50 @@ +package tech.ydb.topic.utils; + + +import java.util.HashMap; +import java.util.Map; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.spi.ExtendedLogger; +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; + + +/** + * + * @author Aleksandr Gorshenin + */ +public class HideLoggersRule implements TestRule { + + @Override + public Statement apply(Statement base, Description description) { + HideLoggers annotation = description.getAnnotation(HideLoggers.class); + if (annotation == null) { + return base; + } + + Class[] hiddenLoggers = annotation.value(); + return new Statement() { + @Override + public void evaluate() throws Throwable { + Map before = new HashMap<>(); + for (Class clazz: hiddenLoggers) { + ExtendedLogger logger = LogManager.getContext(true).getLogger(clazz); + before.put(logger, logger.getLevel()); + // hide logger + Configurator.setLevel(logger, Level.OFF); + } + + try { + base.evaluate(); + } finally { + // recover all loggers + before.forEach((logger, level) -> Configurator.setLevel(logger, level)); + } + } + }; + } +} diff --git a/topic/src/test/java/tech/ydb/topic/write/impl/WriterQueueTest.java b/topic/src/test/java/tech/ydb/topic/write/impl/WriterQueueTest.java index 20c65bd10..9e232cd1c 100644 --- a/topic/src/test/java/tech/ydb/topic/write/impl/WriterQueueTest.java +++ b/topic/src/test/java/tech/ydb/topic/write/impl/WriterQueueTest.java @@ -8,17 +8,16 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.core.config.Configurator; -import org.apache.logging.log4j.spi.ExtendedLogger; import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; import org.junit.function.ThrowingRunnable; import tech.ydb.topic.description.Codec; import tech.ydb.topic.description.CodecRegistry; import tech.ydb.topic.settings.WriterSettings; +import tech.ydb.topic.utils.HideLoggers; +import tech.ydb.topic.utils.HideLoggersRule; import tech.ydb.topic.write.Message; import tech.ydb.topic.write.QueueOverflowException; import tech.ydb.topic.write.WriteAck; @@ -29,6 +28,9 @@ public class WriterQueueTest { private static final Message SMALL_MSG = Message.of(new byte[] { 0x00, 0x01, 0x02, 0x03, 0x05 }); + @Rule + public final HideLoggersRule hideLogger = new HideLoggersRule(); + private static Message smallMsg(int seqNo) { return Message.newBuilder().setData(SMALL_MSG.getData()).setSeqNo(seqNo).build(); } @@ -115,85 +117,69 @@ public void testRawCompressor() throws Exception { } @Test + @HideLoggers({ WriterImpl.class }) public void testGzipNullCompressor() throws Exception { - ExtendedLogger silenceLogger = LogManager.getContext(true).getLogger(WriterImpl.class); - Level level = silenceLogger.getLevel(); - try { - // temporary disable logging - Configurator.setLevel(silenceLogger, Level.ERROR); - - WriterQueue q = new WriterQueue("test", gzipSettings(), new CodecRegistry(), null, () -> {}); + WriterQueue q = new WriterQueue("test", gzipSettings(), new CodecRegistry(), null, () -> {}); - CompletableFuture f1 = q.enqueue(SMALL_MSG, null); - CompletableFuture f2 = q.tryEnqueue(SMALL_MSG, null); - CompletableFuture f3 = q.tryEnqueue(SMALL_MSG, null, 1, TimeUnit.SECONDS); + CompletableFuture f1 = q.enqueue(SMALL_MSG, null); + CompletableFuture f2 = q.tryEnqueue(SMALL_MSG, null); + CompletableFuture f3 = q.tryEnqueue(SMALL_MSG, null, 1, TimeUnit.SECONDS); - Assert.assertFalse(f1.isDone()); - Assert.assertFalse(f2.isDone()); - Assert.assertFalse(f3.isDone()); + Assert.assertFalse(f1.isDone()); + Assert.assertFalse(f2.isDone()); + Assert.assertFalse(f3.isDone()); - Assert.assertNull(q.nextMessageToSend()); // nothing to send, all messages were failed + Assert.assertNull(q.nextMessageToSend()); // nothing to send, all messages were failed - Assert.assertTrue(f1.isCompletedExceptionally()); - Assert.assertTrue(f2.isCompletedExceptionally()); - Assert.assertTrue(f3.isCompletedExceptionally()); - } finally { - Configurator.setLevel(silenceLogger, level); - } + Assert.assertTrue(f1.isCompletedExceptionally()); + Assert.assertTrue(f2.isCompletedExceptionally()); + Assert.assertTrue(f3.isCompletedExceptionally()); } @Test + @HideLoggers({ WriterImpl.class }) public void testWrongCodec() throws Exception { - ExtendedLogger silenceLogger = LogManager.getContext(true).getLogger(WriterImpl.class); - Level level = silenceLogger.getLevel(); - try { - // temporary disable logging - Configurator.setLevel(silenceLogger, Level.ERROR); - - // Codec that always throws on encode - Codec failingCodec = new Codec() { - @Override - public int getId() { - return 9001; - } - - @Override - public InputStream decode(InputStream in) { - throw new UnsupportedOperationException(); - } - - @Override - public OutputStream encode(OutputStream out) throws IOException { - throw new IOException("Simulated encoding failure"); - } - }; - - AtomicInteger notify = new AtomicInteger(); - CodecRegistry registry = new CodecRegistry(); - registry.registerCodec(failingCodec); - WriterSettings settings = WriterSettings.newBuilder() - .setTopicPath("/test") - .setCodec(failingCodec.getId()) - .build(); - - WriterQueue q = new WriterQueue("test", settings, registry, Runnable::run, notify::incrementAndGet); - - CompletableFuture f1 = q.enqueue(SMALL_MSG, null); - CompletableFuture f2 = q.tryEnqueue(SMALL_MSG, null); - CompletableFuture f3 = q.tryEnqueue(SMALL_MSG, null, 1, TimeUnit.SECONDS); - - Assert.assertFalse(f1.isDone()); - Assert.assertFalse(f2.isDone()); - Assert.assertFalse(f3.isDone()); - - Assert.assertNull(q.nextMessageToSend()); // nothing to send, all messages were failed - - Assert.assertTrue(f1.isCompletedExceptionally()); - Assert.assertTrue(f2.isCompletedExceptionally()); - Assert.assertTrue(f3.isCompletedExceptionally()); - } finally { - Configurator.setLevel(silenceLogger, level); - } + // Codec that always throws on encode + Codec failingCodec = new Codec() { + @Override + public int getId() { + return 9001; + } + + @Override + public InputStream decode(InputStream in) { + throw new UnsupportedOperationException(); + } + + @Override + public OutputStream encode(OutputStream out) throws IOException { + throw new IOException("Simulated encoding failure"); + } + }; + + AtomicInteger notify = new AtomicInteger(); + CodecRegistry registry = new CodecRegistry(); + registry.registerCodec(failingCodec); + WriterSettings settings = WriterSettings.newBuilder() + .setTopicPath("/test") + .setCodec(failingCodec.getId()) + .build(); + + WriterQueue q = new WriterQueue("test", settings, registry, Runnable::run, notify::incrementAndGet); + + CompletableFuture f1 = q.enqueue(SMALL_MSG, null); + CompletableFuture f2 = q.tryEnqueue(SMALL_MSG, null); + CompletableFuture f3 = q.tryEnqueue(SMALL_MSG, null, 1, TimeUnit.SECONDS); + + Assert.assertFalse(f1.isDone()); + Assert.assertFalse(f2.isDone()); + Assert.assertFalse(f3.isDone()); + + Assert.assertNull(q.nextMessageToSend()); // nothing to send, all messages were failed + + Assert.assertTrue(f1.isCompletedExceptionally()); + Assert.assertTrue(f2.isCompletedExceptionally()); + Assert.assertTrue(f3.isCompletedExceptionally()); } @Test diff --git a/topic/src/test/resources/log4j2.xml b/topic/src/test/resources/log4j2.xml index 6664c48e2..d213b7ec4 100644 --- a/topic/src/test/resources/log4j2.xml +++ b/topic/src/test/resources/log4j2.xml @@ -2,7 +2,7 @@ - + @@ -10,15 +10,12 @@ - + - - - From 5ae78a633f6e75b6ba027e42d7f76c0e57eaeb5e Mon Sep 17 00:00:00 2001 From: Alexandr Gorshenin Date: Wed, 22 Apr 2026 10:30:27 +0100 Subject: [PATCH 2/3] Updated default logging levels --- .../src/main/java/tech/ydb/topic/write/impl/WriteSession.java | 4 ++-- .../src/main/java/tech/ydb/topic/write/impl/WriterQueue.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/topic/src/main/java/tech/ydb/topic/write/impl/WriteSession.java b/topic/src/main/java/tech/ydb/topic/write/impl/WriteSession.java index a1fbe271b..ade535a09 100644 --- a/topic/src/main/java/tech/ydb/topic/write/impl/WriteSession.java +++ b/topic/src/main/java/tech/ydb/topic/write/impl/WriteSession.java @@ -94,7 +94,7 @@ private void onWriteResponse(YdbTopic.StreamWriteMessage.WriteResponse response) } WriteAck mapAck(WriteAck.Statistics statistics, YdbTopic.StreamWriteMessage.WriteResponse.WriteAck ack) { - logger.debug("[{}] Received WriteAck with seqNo {} and status {}", debugId, ack.getSeqNo(), + logger.trace("[{}] Received WriteAck with seqNo {} and status {}", debugId, ack.getSeqNo(), ack.getMessageWriteStatusCase()); if (ack.hasSkipped()) { return new WriteAck(ack.getSeqNo(), WriteAck.State.ALREADY_WRITTEN, null, statistics); @@ -122,7 +122,7 @@ public void onRetry(Status status) { @Override public void onClose(Status status) { - logger.debug("[{}] Session onClose with status {} called", debugId, status); + logger.info("[{}] Session closed with status {}", debugId, status); listener.onClose(status); if (errorsHandler != null && !status.isSuccess()) { errorsHandler.accept(status, null); diff --git a/topic/src/main/java/tech/ydb/topic/write/impl/WriterQueue.java b/topic/src/main/java/tech/ydb/topic/write/impl/WriterQueue.java index f7e42c71f..f8538f990 100644 --- a/topic/src/main/java/tech/ydb/topic/write/impl/WriterQueue.java +++ b/topic/src/main/java/tech/ydb/topic/write/impl/WriterQueue.java @@ -108,7 +108,7 @@ SentMessage nextMessageToSend() { } SentMessage sentMsg = new SentMessage(next, seqNo); - logger.debug("[{}] prepare sent message with seqNo {}", debugId, seqNo); + logger.trace("[{}] prepare sent message with seqNo {}", debugId, seqNo); sent.offer(sentMsg); return sentMsg; } From 1acdd7d80cbed5fa09f151f9a17fe902ccc6b1ca Mon Sep 17 00:00:00 2001 From: Alexandr Gorshenin Date: Wed, 22 Apr 2026 10:32:41 +0100 Subject: [PATCH 3/3] Moved integration tests --- .../ydb/topic/{impl => }/TopicReadersIntegrationTest.java | 6 +++++- .../ydb/topic/{impl => }/YdbTopicsCodecIntegrationTest.java | 2 +- .../tech/ydb/topic/{impl => }/YdbTopicsIntegrationTest.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) rename topic/src/test/java/tech/ydb/topic/{impl => }/TopicReadersIntegrationTest.java (99%) rename topic/src/test/java/tech/ydb/topic/{impl => }/YdbTopicsCodecIntegrationTest.java (99%) rename topic/src/test/java/tech/ydb/topic/{impl => }/YdbTopicsIntegrationTest.java (99%) diff --git a/topic/src/test/java/tech/ydb/topic/impl/TopicReadersIntegrationTest.java b/topic/src/test/java/tech/ydb/topic/TopicReadersIntegrationTest.java similarity index 99% rename from topic/src/test/java/tech/ydb/topic/impl/TopicReadersIntegrationTest.java rename to topic/src/test/java/tech/ydb/topic/TopicReadersIntegrationTest.java index 3867a71ec..60709ca5d 100644 --- a/topic/src/test/java/tech/ydb/topic/impl/TopicReadersIntegrationTest.java +++ b/topic/src/test/java/tech/ydb/topic/TopicReadersIntegrationTest.java @@ -1,4 +1,8 @@ -package tech.ydb.topic.impl; +package tech.ydb.topic; + + + +import tech.ydb.topic.YdbTopicsIntegrationTest; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; diff --git a/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsCodecIntegrationTest.java b/topic/src/test/java/tech/ydb/topic/YdbTopicsCodecIntegrationTest.java similarity index 99% rename from topic/src/test/java/tech/ydb/topic/impl/YdbTopicsCodecIntegrationTest.java rename to topic/src/test/java/tech/ydb/topic/YdbTopicsCodecIntegrationTest.java index f5ef4bed8..cd75b5fb4 100644 --- a/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsCodecIntegrationTest.java +++ b/topic/src/test/java/tech/ydb/topic/YdbTopicsCodecIntegrationTest.java @@ -1,4 +1,4 @@ -package tech.ydb.topic.impl; +package tech.ydb.topic; import java.io.IOException; import java.io.InputStream; diff --git a/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsIntegrationTest.java b/topic/src/test/java/tech/ydb/topic/YdbTopicsIntegrationTest.java similarity index 99% rename from topic/src/test/java/tech/ydb/topic/impl/YdbTopicsIntegrationTest.java rename to topic/src/test/java/tech/ydb/topic/YdbTopicsIntegrationTest.java index 3ff0583bf..f3dd03a19 100644 --- a/topic/src/test/java/tech/ydb/topic/impl/YdbTopicsIntegrationTest.java +++ b/topic/src/test/java/tech/ydb/topic/YdbTopicsIntegrationTest.java @@ -1,4 +1,4 @@ -package tech.ydb.topic.impl; +package tech.ydb.topic; import java.time.Duration; import java.time.Instant;