From 43a26007d691a9a3a36770c877e3a7cd888c7da0105cc996c1929e7d5e60f59f Mon Sep 17 00:00:00 2001 From: AidarKC Date: Mon, 29 Dec 2025 15:03:42 +0300 Subject: [PATCH] =?UTF-8?q?29=2012=2025=20=D0=A2=D0=B5=D1=81=D1=82=D1=8B?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E=D1=82=20-=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=D1=8E=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B8=D0=B7=20=D1=81=D0=BF=D0=B5=D1=86=D0=B8=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA?= =?UTF-8?q?=D0=B8=20-=20=D0=B2=D0=BE=D0=B7=D0=BB=D0=B5=20=D0=B1=D0=B8?= =?UTF-8?q?=D0=BB=D0=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Не совсем всё по стандарту но и это очень хорошо и удобно! --- build.gradle | 19 +++++++ .../ws/Что недоделано. И потом надо доделать | 1 - src/test/java/test/it/IT_00_Suite.java | 1 - .../it/{ws => }/IT_03_AddBlock_NoAuth.java | 4 +- .../test/it/IT_RunAllCleanStartWsMain.java | 55 +++++++++++++++++++ src/test/java/test/it/IT_RunAllMain.java | 1 - .../{ws => addBlockUtils}/AddBlockFlow.java | 2 +- .../{ws => addBlockUtils}/WsJsonOneShot.java | 2 +- .../WsJsonRoundtripClient.java | 2 +- 9 files changed, 79 insertions(+), 8 deletions(-) rename src/test/java/test/it/{ws => }/IT_03_AddBlock_NoAuth.java (99%) create mode 100644 src/test/java/test/it/IT_RunAllCleanStartWsMain.java rename src/test/java/test/it/{ws => addBlockUtils}/AddBlockFlow.java (99%) rename src/test/java/test/it/{ws => addBlockUtils}/WsJsonOneShot.java (99%) rename src/test/java/test/it/{ws => addBlockUtils}/WsJsonRoundtripClient.java (99%) diff --git a/build.gradle b/build.gradle index da87556..8c3dd98 100644 --- a/build.gradle +++ b/build.gradle @@ -100,3 +100,22 @@ shadowJar { ) } } + + +tasks.named('test') { + enabled = false +} + +tasks.register('itCleanRun', JavaExec) { + group = "build" + description = "Clean data → kill 7070 → start WS → run all IT tests" + + classpath = sourceSets.test.runtimeClasspath + mainClass = "test.it.IT_RunAllCleanStartWsMain" + + // пробрасываем системные флаги (по желанию) + systemProperty "it.debug", System.getProperty("it.debug", "true") + systemProperty "it.login", System.getProperty("it.login", "anya24") + + dependsOn testClasses +} diff --git a/src/main/java/server/ws/Что недоделано. И потом надо доделать b/src/main/java/server/ws/Что недоделано. И потом надо доделать index a291c44..473a0f4 100644 --- a/src/main/java/server/ws/Что недоделано. И потом надо доделать +++ b/src/main/java/server/ws/Что недоделано. И потом надо доделать @@ -1 +0,0 @@ -Работу с линиями diff --git a/src/test/java/test/it/IT_00_Suite.java b/src/test/java/test/it/IT_00_Suite.java index 4c3f3f3..5931b76 100644 --- a/src/test/java/test/it/IT_00_Suite.java +++ b/src/test/java/test/it/IT_00_Suite.java @@ -2,7 +2,6 @@ package test.it; import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; -import test.it.ws.*; /** * Сьют, который запускает IT тесты строго в заданном порядке. diff --git a/src/test/java/test/it/ws/IT_03_AddBlock_NoAuth.java b/src/test/java/test/it/IT_03_AddBlock_NoAuth.java similarity index 99% rename from src/test/java/test/it/ws/IT_03_AddBlock_NoAuth.java rename to src/test/java/test/it/IT_03_AddBlock_NoAuth.java index a6d351d..90b4de0 100644 --- a/src/test/java/test/it/ws/IT_03_AddBlock_NoAuth.java +++ b/src/test/java/test/it/IT_03_AddBlock_NoAuth.java @@ -1,11 +1,11 @@ -package test.it.ws; +package test.it; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import test.it.utils.ItRunContext; -import test.it.utils.JsonBuilders; import test.it.utils.TestConfig; import test.it.utils.TestLog; +import test.it.addBlockUtils.AddBlockFlow; import java.time.Duration; diff --git a/src/test/java/test/it/IT_RunAllCleanStartWsMain.java b/src/test/java/test/it/IT_RunAllCleanStartWsMain.java new file mode 100644 index 0000000..bd9fc46 --- /dev/null +++ b/src/test/java/test/it/IT_RunAllCleanStartWsMain.java @@ -0,0 +1,55 @@ +package test.it; + +import server.ws.WsServer; + +public class IT_RunAllCleanStartWsMain { + + public static void main(String[] args) { + // 1) Гасим всё на 7070 (если ничего нет — не падаем) + runBash("kill -9 $(lsof -t -i:7070) 2>/dev/null || true"); + + // 2) Чистим data/ + IT_CleanAllDate.main(new String[0]); + + // 3) Стартуем WS сервер в отдельном потоке (daemon, чтобы JVM могла завершиться) + Thread wsThread = new Thread(() -> { + try { + WsServer.main(new String[0]); // внутри join() -> поток будет висеть + } catch (Throwable t) { + t.printStackTrace(System.out); + } + }, "wsServer-thread"); + wsThread.setDaemon(true); + wsThread.start(); + + // 4) Ждём, чтобы успел стартануть + sleepMs(1000); + + // 5) Запускаем все IT тесты (без System.exit внутри) + int failed = IT_RunAllMain.runAll(); + + // 6) Завершаем процесс с кодом ошибок + System.exit(failed); + } + + private static void runBash(String cmd) { + try { + Process p = new ProcessBuilder("bash", "-lc", cmd) + .inheritIO() + .start(); + int code = p.waitFor(); + // тут не ругаемся: команда может быть "пустой" (ничего не слушает порт) + // а мы уже добавили "|| true" + } catch (Exception e) { + System.out.println("WARN: bash command failed: " + e); + } + } + + private static void sleepMs(long ms) { + try { + Thread.sleep(ms); + } catch (InterruptedException ignored) { + Thread.currentThread().interrupt(); + } + } +} \ No newline at end of file diff --git a/src/test/java/test/it/IT_RunAllMain.java b/src/test/java/test/it/IT_RunAllMain.java index a0e8791..d746508 100644 --- a/src/test/java/test/it/IT_RunAllMain.java +++ b/src/test/java/test/it/IT_RunAllMain.java @@ -2,7 +2,6 @@ package test.it; import test.it.utils.ItRunContext; import test.it.utils.TestLog; -import test.it.ws.IT_03_AddBlock_NoAuth; /** * Ручной запуск всех IT тестов БЕЗ JUnit / Suite. diff --git a/src/test/java/test/it/ws/AddBlockFlow.java b/src/test/java/test/it/addBlockUtils/AddBlockFlow.java similarity index 99% rename from src/test/java/test/it/ws/AddBlockFlow.java rename to src/test/java/test/it/addBlockUtils/AddBlockFlow.java index a15f9fd..b4bc3d6 100644 --- a/src/test/java/test/it/ws/AddBlockFlow.java +++ b/src/test/java/test/it/addBlockUtils/AddBlockFlow.java @@ -1,4 +1,4 @@ -package test.it.ws; +package test.it.addBlockUtils; import blockchain.BchBlockEntry; import blockchain.BchCryptoVerifier; diff --git a/src/test/java/test/it/ws/WsJsonOneShot.java b/src/test/java/test/it/addBlockUtils/WsJsonOneShot.java similarity index 99% rename from src/test/java/test/it/ws/WsJsonOneShot.java rename to src/test/java/test/it/addBlockUtils/WsJsonOneShot.java index 5dda5fc..dc6e077 100644 --- a/src/test/java/test/it/ws/WsJsonOneShot.java +++ b/src/test/java/test/it/addBlockUtils/WsJsonOneShot.java @@ -1,4 +1,4 @@ -package test.it.ws; +package test.it.addBlockUtils; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/src/test/java/test/it/ws/WsJsonRoundtripClient.java b/src/test/java/test/it/addBlockUtils/WsJsonRoundtripClient.java similarity index 99% rename from src/test/java/test/it/ws/WsJsonRoundtripClient.java rename to src/test/java/test/it/addBlockUtils/WsJsonRoundtripClient.java index bac7569..2c8fe37 100644 --- a/src/test/java/test/it/ws/WsJsonRoundtripClient.java +++ b/src/test/java/test/it/addBlockUtils/WsJsonRoundtripClient.java @@ -1,4 +1,4 @@ -package test.it.ws; +package test.it.addBlockUtils; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper;