>_EXECUTIVE SUMMARY
stryke-demo is a meta-package that exercises every connector in the stryke-* family from a single repo. The 14 demos are runnable end-to-end: clone, s install, docker compose up -d, make run-all. Each demo is a standalone .stk script (not embedded in test fixtures) so it doubles as living documentation for "how do I actually use this connector?"
The harness is intentionally thin: no test framework, no assertions, no fancy reporting. Each demo prints what it's doing as it goes. The complexity lives in run_all.stk's service-probing logic that decides which demos can run in the current environment.
~HARNESS DESIGN
Demos live in demos/ with NN_pkg.stk naming. Numbering is stable across releases so the README, docs, and run_all.stk can refer to demos by index. Adding a new connector is "drop a new file with the next index, add a row to the README table, update stryke.toml".
| Component | Role |
|---|---|
stryke.toml | Package manifest. Declares all 14 stryke-* deps with git refs. s install reads this. |
demos/NN_pkg.stk | One per connector. Imports its package, exercises 3–5 core verbs, prints progress. |
demos/run_all.stk | Service probe (TCP / UDP / API ping per service) + dispatch + skip-on-unreachable + summary table. |
docker-compose.yml | MySQL, Postgres, Kafka (KRaft, single-node), Redis, MongoDB, LocalStack (S3 / DynamoDB / SQS / Lambda / STS), k3s (single-node Kubernetes for stryke-k8s). |
Makefile | Convenience targets: make run-arrow, make services-up, make check (parse all demos), make run-all. |
| CI | .github/workflows/ci.yml — parses every demo (no live runs in CI; services aren't reproducible there). |
$SERVICE PROBE LOGIC
run_all.stk classifies each demo into three buckets at startup:
| Bucket | Behavior |
|---|---|
| always-run | arrow, parquet, duckdb, spark (Spark Connect via in-tree mock). No external service. Run unconditionally. |
| probe-and-run | mysql, postgres, kafka, redis, mongo, k8s, docker, aws (LocalStack), grpc. TCP probe on expected port; run if reachable, skip with reason if not. |
| opt-in | gcp (real GCP only — no LocalStack equivalent for GCS / Pub/Sub). Skipped unless GOOGLE_APPLICATION_CREDENTIALS is set. |
Output is a summary table at the end: PASSED / SKIPPED (reason) / FAILED (msg) per demo. Exit code = number of failures (0 = all green or all skipped cleanly).
&WHY GALLERY-NOT-TEST-SUITE
A test suite asserts. A gallery shows. stryke-demo deliberately does no assertions in the .stk files — they print what they did and how. The assertions live in each stryke-* connector's own zunit tests (e.g. stryke-mysql/t/*.zsh). This split keeps the demo files readable as docs.
The CI workflow only parses the demo files (stryke --syntax-check); live runs aren't reproducible in GitHub Actions without spinning up the full docker-compose stack on every job, which is slow and brittle. Live runs happen on the maintainer's box.
/EXTENDING
Adding a connector to the family means three edits in stryke-demo:
- Add the dep to
stryke.toml(git ref of the newstryke-*repo). - Drop
demos/15_newpkg.stkthat exercises 3–5 core verbs. - If it needs a live service, add it to
docker-compose.ymland wire the probe intorun_all.stk.
That's it. The README table and the docs/index gallery should be updated to mention the new demo, but they're not load-bearing — run_all.stk just iterates the demos directory.
#PROJECT METADATA
| Item | Value |
|---|---|
| License | MIT |
| Author | MenkeTechnologies |
| Repository | github.com/MenkeTechnologies/stryke-demo |
| Parent language | strykelang |
| Meta umbrella | MenkeTechnologiesMeta |
| Issues | github.com/MenkeTechnologies/stryke-demo/issues |