Pudu programming language
Menu
Package

@chrismichaelps / pudu-lang-httpclient

Named HTTP clients for Pudu: a client factory, delegating handlers, pooled keep-alive connections, handler lifetimes, logging, and resilience

0.1.1Apache-2.01

InstallClose

TESTING.md

Markdown35 lines3.4 KB

GitHub ↗

Testing


type: architecture tags: [architecture, test] aliases: [Testing]


Every suite is a file under test/, mirroring the module it covers; pudu test test runs them all and each suite names its failed checks on stderr. test/Support/Loopback starts routed servers and scripted raw-socket servers on the loopback interface, so no suite needs the network.

LevelSuitesWhat they prove
Domaintest/PuduLangHttpClient/Domain/**every reference-resolution example, chunk boundaries, HTTP dates, redirect rules, cookie matching and storage, persistence, expiry, versions, retry-after
Messagesthe root suite, OptionsTest, ContentTest, RequestTest, ResponseTest, HandlerTest, CookiesTest, StubTest, EndpointTestfailures, typed options, bodies and derived JSON, builders, readers, composition order, jars saved and restored, stubbed answers, endpoint templates
TransportTransportTest, Transport/**keep-alive reuse, redirects, cookies, gzip, address policy, limits, deadlines, lifetimes, per-server limits, chunked and close-framed bodies, interim responses, stale-connection retry, streamed uploads and downloads, proxies and tunnels, the pool
Client and factoryClientTest, Client/JsonTest, FactoryTest, Factory/**, EventsTest, Events/BusTestbase addresses, defaults, timeouts, pending cancellation, typed clients, builder combination, rotation and grace, lifecycle events, observers
Handlerstest/PuduLangHttpClient/Handlers/**log events and redaction, retries, breakers, timeouts, rate limits, registries, propagation, authorization refresh, metrics
UtilsUtils/UtilsTesttemplates, atomic shared updates under threads, linked tokens
Packagetest/Package/LayoutTestevery shipped module is the root PuduLangHttpClient or under it, is named after its path, and agrees with the manifest
Vaulttest/Package/VaultTestthe vault mirrors src/ page for page, every page has a Grill Log, every exported function is in its page's signatures, every link resolves, and every page lists the pages linking to it
Integrationtest/Integration/ShopScenarioTestone shop through the factory: logging, metrics, listeners, the standard resilience pipeline, authorization, a typed client, and JSON
Placeholder servicetest/Integration/Placeholder*Test, test/Support/Placeholder/a replica of the public placeholder REST service written in Pudu (six resources at the public counts and shapes, nested routes, filters, pagination, sorting, every CRUD verb, fault and latency injection) read and written through a typed client: the contract, every verb on every resource, validation, 25 parallel creates, keep-alive, retries, an opening breaker, timeouts, mid-request cancellation, streaming, limits, rotation, logs, metrics, and events
Live contracttest/Integration/PlaceholderLiveTest with PUDU_LIVE=1the replica agrees with the public service on counts, owners, records, and writes; offline it checks only the replica
Examplesexamples/*.pudu, run by CIthe documented programs compile and answer 0
Mutation[[tools/Mutate]]the domain suites notice single-point changes to the pure layer

The mutation gate runs on pull requests over Domain/ against the domain suites with a threshold of 100: every valid mutant is killed.

Referenced by

[[CHANGELOG]] · [[architecture/_MOC]] · [[handoffs/2026-10-06-initial-package]]