Skip to content

feat(stovepipe): add new Ping-only service scaffold#154

Merged
behinddwalls merged 2 commits into
mainfrom
preetam/stovepipe
May 19, 2026
Merged

feat(stovepipe): add new Ping-only service scaffold#154
behinddwalls merged 2 commits into
mainfrom
preetam/stovepipe

Conversation

@behinddwalls
Copy link
Copy Markdown
Collaborator

@behinddwalls behinddwalls commented May 19, 2026

What

Adds a new stovepipe service alongside gateway and orchestrator, scaffolded end-to-end:

  • stovepipe/proto/stovepipe.protoSubmitQueueStovepipe.Ping RPC + protopb BUILD
  • stovepipe/controller/ping.go (+ 5 unit tests) — logger + tally metrics + service_name: "stovepipe"
  • example/server/stovepipe/ — gRPC server binary on :8083 (:8080 in container), graceful shutdown on SIGINT/SIGTERM, gRPC reflection
  • example/server/stovepipe/{Dockerfile,docker-compose.yml} — single-container compose stack (no MySQL)
  • example/client/stovepipe/arh-style ping client mirroring the gateway/orchestrator clients
  • test/integration/stovepipe/ — Docker-based gRPC integration test
  • Makefilebuild-stovepipe-linux, integration-test-stovepipe, local-stovepipe-{start,stop}, run-client-stovepipe, plus stovepipe entries in proto, clean-proto, and build-all-linux
  • BUILD.bazelgazelle:resolve directive to disambiguate the stovepipe/protopb import path

Why

Lands the wiring now so future RPCs can be added without re-doing the proto/build/docker/test plumbing. Diverges from the gateway/orchestrator boilerplate in one place: stovepipe is stateless — no MySQL or queue — because Ping doesn't need them and carrying the boilerplate would be dead weight. The shape of main.go still matches gateway closely, so growing in DB/queue dependencies later is a small delta.

Test Plan

Local verification on this branch:

  • make proto && make gazelle — clean, no further changes after directive
  • make lint — passes (fmt + license headers)
  • make check-tidygo.mod / MODULE.bazel clean
  • make check-gazelle — BUILD files in sync
  • bazel test //stovepipe/controller:controller_test — 5/5 ping unit tests pass
  • bazel build //stovepipe/... //example/server/stovepipe //example/client/stovepipe //test/integration/stovepipe:stovepipe_test — all targets build
  • make integration-test-stovepipe — Docker build + gRPC Ping round-trip passes (~40s); server log confirms service_name: "stovepipe" response
  • CI green on this PR

Manual smoke (optional):

make local-stovepipe-start
make run-client-stovepipe SERVER_ADDR=localhost:$(docker port submitqueue-stovepipe-service-1 8080 | cut -d: -f2) MESSAGE=hello
make local-stovepipe-stop

Out of scope

  • No MySQL/queue/counter/storage wiring (stateless service).
  • No changes to test/e2e/ — that suite tests the gateway→orchestrator SubmitQueue flow, which stovepipe isn't part of.
  • No new business logic — PingController is the only controller.

behinddwalls and others added 2 commits May 19, 2026 13:40
Adds a third service alongside gateway and orchestrator with proto,
controller, server binary, example client, docker-compose, and an
integration test. Only the Ping RPC is implemented; the wiring is in
place so future RPCs can be added without rebuilding the skeleton.

Stovepipe is stateless (no MySQL, no queue) and listens on :8083 by
default. Makefile targets (build, proto, integration-test, local-start,
local-stop, run-client) mirror the gateway/orchestrator pairs.
@behinddwalls behinddwalls marked this pull request as ready for review May 19, 2026 20:53
@behinddwalls behinddwalls requested review from a team and sbalabanov as code owners May 19, 2026 20:53
@behinddwalls behinddwalls added this pull request to the merge queue May 19, 2026
Merged via the queue into main with commit b2ffa4c May 19, 2026
13 checks passed
@github-actions github-actions Bot deleted the preetam/stovepipe branch May 19, 2026 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants