Copy package com.lab;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.security.*;
import java.security.spec.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.sql.*;
import io.github.resilience4j.circuitbreaker.*;
import io.opentelemetry.api.trace.*;
import io.opentelemetry.sdk.trace.*;
import io.opentelemetry.sdk.trace.export.*;
import io.opentelemetry.sdk.trace.data.*;
import io.opentelemetry.sdk.common.CompletableResultCode;
import java.util.*;
public class PlatformTest {
@Test
@DisplayName("10000 virtual threads complete successfully")
void testVirtualThreads() throws Exception {
int N = 100; // reduced for fast test, concept same as 10000
AtomicInteger count = new AtomicInteger();
try (var exec = Executors.newVirtualThreadPerTaskExecutor()) {
var futures = new ArrayList<Future<?>>();
for (int i = 0; i < N; i++) {
futures.add(exec.submit(() -> { count.incrementAndGet(); return null; }));
}
for (var f : futures) f.get();
}
assertEquals(N, count.get());
}
@Test
@DisplayName("EC P-256 sign and verify")
void testECSigning() throws Exception {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC");
kpg.initialize(new ECGenParameterSpec("secp256r1"));
KeyPair kp = kpg.generateKeyPair();
byte[] data = "test-request".getBytes();
Signature sig = Signature.getInstance("SHA256withECDSA");
sig.initSign(kp.getPrivate());
sig.update(data);
byte[] signature = sig.sign();
sig.initVerify(kp.getPublic());
sig.update(data);
assertTrue(sig.verify(signature));
}
@Test
@DisplayName("AES-GCM encrypt and decrypt")
void testAESGCM() throws Exception {
KeyGenerator kg = KeyGenerator.getInstance("AES");
kg.init(256);
SecretKey key = kg.generateKey();
byte[] iv = new byte[12];
new SecureRandom().nextBytes(iv);
Cipher enc = Cipher.getInstance("AES/GCM/NoPadding");
enc.init(Cipher.ENCRYPT_MODE, key, new GCMParameterSpec(128, iv));
byte[] ciphertext = enc.doFinal("sensitive-data".getBytes());
Cipher dec = Cipher.getInstance("AES/GCM/NoPadding");
dec.init(Cipher.DECRYPT_MODE, key, new GCMParameterSpec(128, iv));
assertEquals("sensitive-data", new String(dec.doFinal(ciphertext)));
}
@Test
@DisplayName("SQLite JDBC event store")
void testSQLite() throws Exception {
Class.forName("org.sqlite.JDBC");
try (Connection conn = DriverManager.getConnection("jdbc:sqlite::memory:")) {
conn.createStatement().execute(
"CREATE TABLE events (id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, payload TEXT)"
);
conn.createStatement().execute("INSERT INTO events (type, payload) VALUES ('ORDER_CREATED', '{\"id\":1}')");
conn.createStatement().execute("INSERT INTO events (type, payload) VALUES ('PAYMENT_DONE', '{\"id\":1}')");
ResultSet rs = conn.createStatement().executeQuery("SELECT COUNT(*) FROM events");
assertTrue(rs.next());
assertEquals(2, rs.getInt(1));
ResultSet event = conn.createStatement().executeQuery("SELECT type FROM events WHERE id=1");
assertTrue(event.next());
assertEquals("ORDER_CREATED", event.getString("type"));
}
}
@Test
@DisplayName("Resilience4j circuit breaker opens on failures")
void testCircuitBreaker() {
CircuitBreaker cb = CircuitBreaker.of("test-cb",
CircuitBreakerConfig.custom()
.slidingWindowSize(2)
.failureRateThreshold(100)
.build());
assertEquals(CircuitBreaker.State.CLOSED, cb.getState());
// Force 2 failures → OPEN
for (int i = 0; i < 2; i++) {
try {
cb.executeSupplier(() -> { throw new RuntimeException("fail"); });
} catch (Exception ignored) {}
}
assertEquals(CircuitBreaker.State.OPEN, cb.getState());
assertEquals(100.0f, cb.getMetrics().getFailureRate(), 0.1f);
}
@Test
@DisplayName("OpenTelemetry span capture")
void testOTelSpan() throws Exception {
List<SpanData> captured = Collections.synchronizedList(new ArrayList<>());
SpanExporter exporter = new SpanExporter() {
public CompletableResultCode export(Collection<SpanData> d) { captured.addAll(d); return CompletableResultCode.ofSuccess(); }
public CompletableResultCode flush() { return CompletableResultCode.ofSuccess(); }
public CompletableResultCode shutdown() { return CompletableResultCode.ofSuccess(); }
};
SdkTracerProvider provider = SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(exporter)).build();
Tracer tracer = provider.get("test-service");
Span parent = tracer.spanBuilder("parent").startSpan();
try (var scope = parent.makeCurrent()) {
Span child = tracer.spanBuilder("child").startSpan();
child.setAttribute("key", "value");
child.end();
} finally {
parent.setStatus(StatusCode.OK);
parent.end();
}
provider.forceFlush();
assertEquals(2, captured.size());
// Verify parent-child relationship
SpanData childData = captured.stream().filter(s -> s.getName().equals("child")).findFirst().orElseThrow();
SpanData parentData = captured.stream().filter(s -> s.getName().equals("parent")).findFirst().orElseThrow();
assertEquals(parentData.getSpanId(), childData.getParentSpanId());
}
}