#!/usr/bin/env bash # Helper script for testing SQ gRPC endpoints with grpcurl. # Usage: ./scripts/grpc.sh [args...] # # Commands: # status [addr] - Get node status # publish - Publish a message # subscribe - Subscribe to a topic # topics - List topics set -euo pipefail ADDR="${SQ_ADDR:-127.0.0.1:6060}" case "${1:-help}" in status) addr="${2:-$ADDR}" grpcurl -plaintext "$addr" sq.v1.StatusService/Status ;; publish) topic="${2:?topic required}" msg="${3:?message required}" grpcurl -plaintext -d "{\"topic\": \"$topic\", \"messages\": [{\"value\": \"$(echo -n "$msg" | base64)\"}]}" \ "$ADDR" sq.v1.DataPlaneService/Publish ;; subscribe) topic="${2:?topic required}" grpcurl -plaintext -d "{\"topic\": \"$topic\", \"partition\": 0}" \ "$ADDR" sq.v1.DataPlaneService/Subscribe ;; topics) grpcurl -plaintext "$ADDR" sq.v1.ControlPlaneService/ListTopics ;; help|*) echo "Usage: $0 [args...]" echo "" echo "Commands:" echo " status [addr] - Get node status" echo " publish - Publish a message" echo " subscribe - Subscribe to a topic" echo " topics - List topics" echo "" echo "Environment: SQ_ADDR (default: 127.0.0.1:6060)" ;; esac