Testing and verification¶
Documentation home · Development environment · Publishing
Website build checks¶
From the checkout in a development environment:
The Documentation workflow runs the same strict build. It checks the configured navigation, internal document links, and heading anchors, then deploys a successful main-branch build to GitHub Pages. It does not start HBase or execute arbitrary Python blocks from a pull request.
After deployment, verify the homepage, Chinese handbook, search results, code copying, and direct URLs to topic pages. External URLs, UI behavior, and server operations are not all proven by a Markdown build.
Example validation record and scope¶
During local preparation on 2026-08-31, the cookbook's eight marked recipes were executed directly from Markdown against temporary tables in this project's hbase_dev container, using Python 3.11 and HBase 2.6.1.
The preparation checks covered Python fence syntax, local file links, recipe inventory, UTF-8/JSON, filters, pagination, batch result shapes, counters/conditional writes, Append/RowMutations, buffered writes, and deletes/existence. The standalone example also exercised its success path; cleanup failure paths were checked with mocks. The recorded local result was 55 documentation checks plus 40 related regression tests passing.
That Python documentation-test harness and the root script edits were local preparation work and are not included in this documentation/configuration-only publication. Do not assume a fresh checkout has a test_documentation.py command. The published complete example is self-contained Markdown: copy it to a local scratch file to run it, then use the same table-ownership pattern for cookbook recipes.
This baseline covers forward, single-region table examples. It does not certify snapshots, secure authentication, reverse/multi-region failure recovery, concurrency, every configuration setting, or production throughput.
Run the existing integration tests¶
Always run HBase tests inside this repository's dev service (hbase_dev). ZooKeeper advertises project-network hostnames. From the repository root:
docker compose up -d
docker compose exec -T dev python -m pytest test/test_batch_operations.py test/test_atomic_operations.py test/test_buffered_mutator.py -v
For readiness checks and the full suite on an existing cluster:
The full suite may perform broader administrative mutations. Use a dedicated development cluster, not production. Do not assume tests can run concurrently without interference.
Without --no-start, the runner restarts project containers. The older test/test_examples.py exercises lightweight helper payloads, not the full Client workflows shown in the documentation.
Interpret failures and clean up¶
Record the command, commit, environment, pass/fail/skip counts, and date. Historical changelog totals are not the current suite size. Signature-only unit tests do not establish that a server operation works.
Fix an incorrect example or document a genuine implementation gap; do not weaken assertions to claim a pass. Keep driver changes and their tests separate from documentation-only work.
Stopping preserves data. The runner's --down removes volumes. If table creation times out, inspect the specific unique name before cleanup; never delete all tables matching a broad prefix.