package banking; import dev.banking.model.*; import dev.banking.processor.TransactionProcessor; import dev.banking.service.BankingSystem; import org.junit.jupiter.api.Test; import java.util.*; import java.util.concurrent.*; import static org.junit.jupiter.api.Assertions.assertTrue; public class BankingSystemEndToEndStressTest { @Test void fullSystemStressTest() throws Exception { BankAccount a = new BankAccount(1, 1_000_000); BankAccount b = new BankAccount(2, 1_000_000); Map accounts = new HashMap<>(); accounts.put(1, a); accounts.put(2, b); ExecutorService executor = Executors.newFixedThreadPool(8); TransactionProcessor processor = new TransactionProcessor(accounts); BankingSystem system = new BankingSystem(executor, processor); List txs = new ArrayList<>(); for (int i = 0; i < 50_000; i++) { txs.add(new TransferTransaction(1, 2, 1)); txs.add(new TransferTransaction(2, 1, 1)); } system.processTransactions(txs); executor.shutdown(); assertTrue(executor.awaitTermination(5, TimeUnit.SECONDS)); } }