Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
- Implemented RecordingLogger and RecordingLoggerFactory for capturing log entries in tests. - Added unit tests for InMemoryChannel, covering constructor behavior, property assignments, channel communication, and disposal. - Created InMemoryTransportOptionsTests to validate default values and customizable options for InMemory transport. - Developed RabbitMqFrameProtocolTests to ensure correct parsing and property creation for RabbitMQ frames. - Added RabbitMqTransportOptionsTests to verify default settings and customization options for RabbitMQ transport. - Updated project files for testing libraries and dependencies.
StellaOps Router
The StellaOps Router is the internal communication infrastructure that enables microservices to communicate through a central gateway.
Overview
The router provides:
- Gateway WebService (
StellaOps.Gateway.WebService): HTTP ingress service that routes requests to microservices - Microservice SDK (
StellaOps.Microservice): SDK for building microservices that connect to the router - Transport Plugins: Multiple transport options (TCP, TLS, UDP, RabbitMQ, InMemory for testing)
- Claims-based Authorization: Using
RequiringClaimsinstead of role-based access
Key Documents
| Document | Purpose |
|---|---|
| specs.md | Canonical specification - READ FIRST |
| implplan.md | High-level implementation plan |
| SPRINT_INDEX.md | Sprint overview and dependency graph |
Solution Structure
StellaOps.Router.slnx
├── src/__Libraries/
│ ├── StellaOps.Router.Common/ # Shared types, enums, interfaces
│ ├── StellaOps.Router.Config/ # Router configuration models
│ ├── StellaOps.Microservice/ # Microservice SDK
│ └── StellaOps.Microservice.SourceGen/ # Build-time endpoint discovery
├── src/Gateway/
│ └── StellaOps.Gateway.WebService/ # HTTP gateway service
└── tests/
├── StellaOps.Router.Common.Tests/
├── StellaOps.Gateway.WebService.Tests/
└── StellaOps.Microservice.Tests/
Building
# Build the router solution
dotnet build StellaOps.Router.slnx
# Run tests
dotnet test StellaOps.Router.slnx
Invariants (Non-Negotiable)
From the specification, these are non-negotiable:
- Method + Path is the endpoint identity
- Strict semver for version matching
- Region from GatewayNodeConfig.Region (never from headers/host)
- No HTTP transport between gateway and microservices
- RequiringClaims (not AllowedRoles) for authorization
- Opaque body handling (router doesn't interpret payloads)
Status
Currently in development. See SPRINT_INDEX.md for implementation progress.