[
https://issues.apache.org/jira/browse/AIRAVATA-3981?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yasith Jayawardana updated AIRAVATA-3981:
-----------------------------------------
Description:
h2. Goal
Automated end-to-end verification that the full Airavata stack starts cleanly
after the thrift-server extraction. Single Tiltfile orchestrates infra, build,
server startup, and health checks — replacing shell scripts, IDE launchers, and
custom deployment tooling. Minimal bloat.
h2. Components
h3. 1. Monitoring Server Enhancement (airavata-api)
Extend MonitoringServer (HTTP on port 9097) with two new endpoints alongside
existing Prometheus /metrics. No auth (internal admin port).
*GET /health/services* — Returns JSON with status of the thrift server and all
background services. Status values: UP, DOWN, DISABLED. Each entry includes
status, uptime_ms, last_error.
*POST /admin/restart/\{serviceName\}* — Restarts a background service by label.
200 OK (restarted), 404 (unknown), 500 (failed).
Implementation: ServiceRegistry class tracks background services.
AiravataServer registers services with the registry instead of raw lists.
MonitoringServer queries the registry for /health/services and triggers
restarts via /admin/restart.
h3. 2. Tiltfile (repo root)
Single orchestration file for dev setup AND integration verification. Replaces
ide-integration module.
* docker_compose for infra (MariaDB, RabbitMQ, ZooKeeper, Kafka, Keycloak)
* local_resource for build (mvn package)
* local_resource for airavata-server (classpath mode, readiness probe on
/health/services)
* local_resource for integration-tests (manual trigger)
What goes away: modules/ide-integration/,
dev-tools/deployment-scripts/docker-startup.sh
h3. 3. integration-tests/ Maven Module
8 JUnit 5 test classes:
* ThriftServiceHealthTest — multiplexed thrift client calls getAPIVersion() on
all 9 services
* DatabaseHealthTest — JDBC to MariaDB, verify key tables
* RabbitMQHealthTest — AMQP connection, verify exchanges
* KafkaHealthTest — Kafka admin client, verify broker reachable
* KeycloakHealthTest — realm endpoint, obtain token
* PrometheusHealthTest — GET /metrics
* ServiceHealthEndpointTest — GET /health/services, all services UP
* BackgroundServiceHealthTest — all expected background services present
was:
After the thrift-server extraction (PR #595), add end-to-end integration health
checking:
1. ServiceRegistry + monitoring endpoints — Extend MonitoringServer (port 9097)
with GET /health/services and POST /admin/restart/{name}
2. Tiltfile — Single orchestration file for dev setup and integration
verification, replacing ide-integration module
3. integration-tests module — 8 JUnit 5 test classes verifying all 9 thrift
services, DB, RabbitMQ, Kafka, Keycloak, Prometheus, and the new health endpoint
> Add integration health check: ServiceRegistry, monitoring endpoints,
> Tiltfile, and test suite
> ---------------------------------------------------------------------------------------------
>
> Key: AIRAVATA-3981
> URL: https://issues.apache.org/jira/browse/AIRAVATA-3981
> Project: Airavata
> Issue Type: Improvement
> Reporter: Yasith Jayawardana
> Priority: Major
>
> h2. Goal
> Automated end-to-end verification that the full Airavata stack starts cleanly
> after the thrift-server extraction. Single Tiltfile orchestrates infra,
> build, server startup, and health checks — replacing shell scripts, IDE
> launchers, and custom deployment tooling. Minimal bloat.
> h2. Components
> h3. 1. Monitoring Server Enhancement (airavata-api)
> Extend MonitoringServer (HTTP on port 9097) with two new endpoints alongside
> existing Prometheus /metrics. No auth (internal admin port).
> *GET /health/services* — Returns JSON with status of the thrift server and
> all background services. Status values: UP, DOWN, DISABLED. Each entry
> includes status, uptime_ms, last_error.
> *POST /admin/restart/\{serviceName\}* — Restarts a background service by
> label. 200 OK (restarted), 404 (unknown), 500 (failed).
> Implementation: ServiceRegistry class tracks background services.
> AiravataServer registers services with the registry instead of raw lists.
> MonitoringServer queries the registry for /health/services and triggers
> restarts via /admin/restart.
> h3. 2. Tiltfile (repo root)
> Single orchestration file for dev setup AND integration verification.
> Replaces ide-integration module.
> * docker_compose for infra (MariaDB, RabbitMQ, ZooKeeper, Kafka, Keycloak)
> * local_resource for build (mvn package)
> * local_resource for airavata-server (classpath mode, readiness probe on
> /health/services)
> * local_resource for integration-tests (manual trigger)
> What goes away: modules/ide-integration/,
> dev-tools/deployment-scripts/docker-startup.sh
> h3. 3. integration-tests/ Maven Module
> 8 JUnit 5 test classes:
> * ThriftServiceHealthTest — multiplexed thrift client calls getAPIVersion()
> on all 9 services
> * DatabaseHealthTest — JDBC to MariaDB, verify key tables
> * RabbitMQHealthTest — AMQP connection, verify exchanges
> * KafkaHealthTest — Kafka admin client, verify broker reachable
> * KeycloakHealthTest — realm endpoint, obtain token
> * PrometheusHealthTest — GET /metrics
> * ServiceHealthEndpointTest — GET /health/services, all services UP
> * BackgroundServiceHealthTest — all expected background services present
--
This message was sent by Atlassian Jira
(v8.20.10#820010)