From b899c62712e6df9e81b4be80a2b1c619fba8c402 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 10 Aug 2026 12:06:38 +0900 Subject: [PATCH 1/2] test(eureka): require documented bootstrap contract --- .../EurekaServerApplicationContractTest.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 eureka-server/src/test/java/com/xtrmetl/eureka/EurekaServerApplicationContractTest.java diff --git a/eureka-server/src/test/java/com/xtrmetl/eureka/EurekaServerApplicationContractTest.java b/eureka-server/src/test/java/com/xtrmetl/eureka/EurekaServerApplicationContractTest.java new file mode 100644 index 00000000..2157ca94 --- /dev/null +++ b/eureka-server/src/test/java/com/xtrmetl/eureka/EurekaServerApplicationContractTest.java @@ -0,0 +1,47 @@ +package com.xtrmetl.eureka; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; + +import java.io.IOException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Verifies the standalone Eureka bootstrap contract and its beginner-readable public documentation. + */ +class EurekaServerApplicationContractTest { + + @Test + void bootstrapClassKeepsTheRequiredServerAnnotations() { + assertNotNull(EurekaServerApplication.class.getAnnotation(SpringBootApplication.class)); + assertNotNull(EurekaServerApplication.class.getAnnotation(EnableEurekaServer.class)); + } + + @Test + void mainEntryPointRemainsPublicStatic() throws NoSuchMethodException { + Method main = EurekaServerApplication.class.getDeclaredMethod("main", String[].class); + + assertTrue(Modifier.isPublic(main.getModifiers())); + assertTrue(Modifier.isStatic(main.getModifiers())); + } + + @Test + void publicBootstrapApiHasBeginnerReadableJavadoc() throws IOException { + String source = Files.readString( + Path.of("src/main/java/com/xtrmetl/eureka/EurekaServerApplication.java"), + StandardCharsets.UTF_8 + ); + + assertTrue(source.contains("Starts the standalone mightyETL Eureka service registry")); + assertTrue(source.contains("Launches the Eureka registry through Spring Boot")); + assertTrue(source.contains("@param args command-line arguments passed to Spring Boot")); + } +} \ No newline at end of file From f96369312ffcb6ec0581bdfe463e2a9fb43ab395 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Mon, 10 Aug 2026 12:09:22 +0900 Subject: [PATCH 2/2] docs(eureka): document standalone registry bootstrap --- .../com/xtrmetl/eureka/EurekaServerApplication.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/eureka-server/src/main/java/com/xtrmetl/eureka/EurekaServerApplication.java b/eureka-server/src/main/java/com/xtrmetl/eureka/EurekaServerApplication.java index 67c6a24d..c2cee065 100644 --- a/eureka-server/src/main/java/com/xtrmetl/eureka/EurekaServerApplication.java +++ b/eureka-server/src/main/java/com/xtrmetl/eureka/EurekaServerApplication.java @@ -4,9 +4,22 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; +/** + * Starts the standalone mightyETL Eureka service registry. + * + *

The registry provides service discovery for deployment profiles that explicitly include + * Eureka. Authentication and production service-identity policy are separate security controls; + * this bootstrap class only owns starting the Spring Cloud Netflix server.

+ */ @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { + + /** + * Launches the Eureka registry through Spring Boot. + * + * @param args command-line arguments passed to Spring Boot + */ public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); }