بنقرة واحدة
podman-testing
Podman Compose integration testing patterns for TimescaleDB and RabbitMQ container management
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Podman Compose integration testing patterns for TimescaleDB and RabbitMQ container management
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Java 25 code style conventions for crypto-scout-test including naming, imports, error handling, and testing patterns
Java 25 test library development patterns for crypto-scout-test including MockData, PodmanCompose, and RabbitMQ utilities
| name | podman-testing |
| description | Podman Compose integration testing patterns for TimescaleDB and RabbitMQ container management |
| license | MIT |
| compatibility | opencode |
| metadata | {"tools":"podman","services":"timescaledb,rabbitmq","domain":"integration-testing"} |
Guide integration testing with Podman-managed containers for TimescaleDB (PostgreSQL 17) and RabbitMQ 4.1.4.
timescale/timescaledb:latest-pg17127.0.0.1:5432:5432crypto_scoutcrypto_scout_db / crypto_scout_dbcrypto_scoutrabbitmq:4.1.4-management127.0.0.1:5672:5672127.0.0.1:5552:5552crypto_scout_mq / crypto_scout_mqbybit-streamimport com.github.akarazhev.cryptoscout.test.PodmanCompose;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
final class IntegrationTest {
@BeforeAll
static void setUp() {
PodmanCompose.up(); // Starts containers, waits for readiness
}
@AfterAll
static void tearDown() {
PodmanCompose.down(); // Stops containers, removes volumes
}
@Test
void shouldConnectToDatabase() throws Exception {
assertTrue(DBUtils.canConnect());
}
}
| Property | Default | Description |
|---|---|---|
podman.compose.cmd | podman-compose | Podman Compose binary |
podman.cmd | podman | Podman binary |
podman.compose.up.timeout.min | 3 | Startup timeout (minutes) |
podman.compose.down.timeout.min | 1 | Shutdown timeout (minutes) |
podman.compose.ready.interval.sec | 2 | Readiness check interval |
crypto_scout.bybit_spot_tickerscrypto_scout.bybit_spot_kline_1m, _5m, _15m, _60m, _240m, _1dcrypto_scout.bybit_spot_public_tradecrypto_scout.bybit_spot_order_book_1, _50, _200, _1000crypto_scout.bybit_linear_tickerscrypto_scout.bybit_linear_kline_1m, _5m, _15m, _60m, _240m, _1dcrypto_scout.bybit_linear_public_tradecrypto_scout.bybit_linear_order_book_1, _50, _200, _1000crypto_scout.bybit_linear_all_liquidationcrypto_scout.cmc_fgicrypto_scout.cmc_kline_1d, _1wcrypto_scout.bybit_lplcrypto_scout.btc_price_riskcrypto_scout.btc_risk_pricecrypto_scout.stream_offsets - Stream offset trackingTotal: 30 tables
Located in src/main/resources/podman/:
podman-compose.yml - Service definitions with resource limitsscript/init.sql - Database initialization and schema setupscript/bybit_spot_tables.sql - Spot table schemasscript/bybit_linear_tables.sql - Linear table schemasscript/crypto_scout_tables.sql - Crypto scout table schemasrabbitmq/enabled_plugins - RabbitMQ plugins (streams enabled)rabbitmq/rabbitmq.conf - RabbitMQ configurationrabbitmq/definitions.json - RabbitMQ definitions (users, exchanges, queues)# Standard test run
mvn test
# With extended timeout for slow environments
mvn -q -Dpodman.compose.up.timeout.min=5 test
# Custom database URL
mvn -q -Dtest.db.jdbc.url=jdbc:postgresql://localhost:5432/crypto_scout test
# Run specific test
mvn test -Dtest=StreamConsumerPublisherTest
# Run specific test method
mvn test -Dtest=MockBybitSpotDataTest#shouldSpotKline1DataReturnMap
podman --versionpodman-compose --version-Dpodman.compose.up.timeout.min=10lsof -i :5432 or lsof -i :5552podman pspodman logs crypto-scout-collector-dbrabbitmq.conf advertises localhostpodman exec crypto-scout-mq rabbitmq-plugins listpodman logs crypto-scout-mqContainer Readiness Checks:
waitForDatabaseReady() - Attempts JDBC connection with retrywaitForMqReady() - Creates temporary RabbitMQ Streams producerwaitForContainerRemoval() - Polls podman ps until containers goneResource Extraction: When running from JAR, extracts podman resources to temp directory:
crypto-scout-podman-Process Management:
ProcessBuilder for podman-compose commandsUse this skill when: