| name | influxdb3-test-setup |
| description | Set up InfluxDB 3 Core and Enterprise instances for running documentation code block tests. Handles service initialization, worktree-specific databases, and test environment configuration. Use when preparing to run InfluxDB 3 code block tests, starting Core or Enterprise instances, or configuring .env.test and worktree-specific test databases. |
InfluxDB 3 Test Setup Skill
Purpose
This skill guides agents through setting up InfluxDB 3 Core and Enterprise instances for testing documentation code blocks. It covers service initialization, creating worktree-specific databases for test isolation, and configuring the test environment.
Architecture Overview
~/influxdata-docs/.influxdb3/ # Shared across all worktrees
├── enterprise/
│ ├── .env # License email (INFLUXDB3_ENTERPRISE_LICENSE_EMAIL)
│ └── data/ # Enterprise data (persists license)
└── plugins/ # Shared plugins
<worktree>/test/.influxdb3/ # Per-worktree (gitignored)
├── core/
│ ├── .token # Core auth token
│ ├── data/ # Core data
│ └── plugins/ # Custom plugins
└── .env.test # Test credentials
Key Design Decisions:
- Core: Per-worktree instance (port 8282) - data isolated to worktree
- Enterprise: Shared instance (port 8181) - license persists across worktrees
- Databases: Create worktree-named databases for test isolation on shared Enterprise
Quick Reference
| Task | Command |
|---|
| Initialize Core | ./test/scripts/init-influxdb3.sh core |
| Initialize Enterprise | ./test/scripts/init-influxdb3.sh enterprise |
| Initialize both | ./test/scripts/init-influxdb3.sh all |
| Check Core status | curl -i http://localhost:8282/ping |
| Check Enterprise status | curl -i http://localhost:8181/ping -H "Authorization: Bearer $TOKEN" |
| Run code block tests | yarn test:codeblocks:v2 |
Setup Workflows
Workflow 1: Core Only (Per-Worktree)
Use when testing Core-specific documentation or when you need complete isolation.
./test/scripts/init-influxdb3.sh core
curl -i http://localhost:8282/ping
jq -r .token test/.influxdb3/core/.token
curl -X POST "http://localhost:8282/api/v3/configure/database" \
-H "Authorization: Bearer $(jq -r .token test/.influxdb3/core/.token)" \
-H "Content-Type: application/json" \
-d '{"db": "test_db"}'
Workflow 2: Enterprise (Shared Instance)
Use when testing Enterprise-specific documentation. Creates worktree-named database for isolation.
mkdir -p ~/influxdata-docs/.influxdb3/enterprise
echo 'INFLUXDB3_ENTERPRISE_LICENSE_EMAIL=your-email@example.com' > \
~/influxdata-docs/.influxdb3/enterprise/.env
./test/scripts/init-influxdb3.sh enterprise
ADMIN_TOKEN=$(jq -r .token ~/influxdata-docs/.influxdb3/enterprise/admin-token.json)
curl -i http://localhost:8181/ping \
-H "Authorization: Bearer $ADMIN_TOKEN"
WORKTREE_NAME=$(basename "$(pwd)" | tr '-' '_')
curl -X POST "http://localhost:8181/api/v3/configure/database" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"db\": \"${WORKTREE_NAME}_db\"}"
Workflow 3: Both Services
Use when testing documentation that covers both Core and Enterprise.
./test/scripts/init-influxdb3.sh all
curl -i http://localhost:8282/ping
curl -i http://localhost:8181/ping -H "Authorization: Bearer $TOKEN"
Creating Worktree-Specific Databases
When using the shared Enterprise instance, create databases named after the worktree to isolate test data:
WORKTREE_NAME=$(basename "$(pwd)" | tr '-' '_')
echo "Database name: ${WORKTREE_NAME}_db"
curl -X POST "http://localhost:8181/api/v3/configure/database" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"db\": \"${WORKTREE_NAME}_db\"}"
curl "http://localhost:8181/api/v3/configure/database?format=json" \
-H "Authorization: Bearer $ADMIN_TOKEN"
Naming Convention:
- Worktree:
docs-v2-influxdb3-version-detection-headers
- Database:
docs_v2_influxdb3_version_detection_headers_db
Test Environment Configuration
Configure .env.test for Code Block Tests
Create content/<product>/.env.test with test credentials:
ADMIN_TOKEN=$(jq -r .token ~/influxdata-docs/.influxdb3/enterprise/admin-token.json)
cat > content/influxdb3/enterprise/.env.test << EOF
INFLUX_HOST=http://localhost:8181
INFLUX_TOKEN=$ADMIN_TOKEN
INFLUX_DATABASE=YOUR_WORKTREE_DB
EOF
cat > content/influxdb3/core/.env.test << EOF
INFLUX_HOST=http://localhost:8282
INFLUX_TOKEN=$(jq -r .token test/.influxdb3/core/.token)
INFLUX_DATABASE=test_db
EOF
Run Code Block Tests
yarn test:codeblocks:v2
docker compose run --rm v2-pytest
Troubleshooting
Enterprise Won't Start
Symptom: Container exits immediately
Check:
docker logs influxdb3-enterprise
ls -la ~/influxdata-docs/.influxdb3/enterprise/.env
cat ~/influxdata-docs/.influxdb3/enterprise/.env
ls -la ~/influxdata-docs/.influxdb3/enterprise/admin-token.json
Core Token Not Working
Symptom: 401 Unauthorized
Check:
cat test/.influxdb3/core/.token
jq . test/.influxdb3/core/.token
docker exec influxdb3-core cat /run/secrets/influxdb3-core-token
When Enterprise Is Unavailable
If Enterprise won't start (license expired, port conflict, Docker issue):
- Fix the root cause first — check container logs, verify the license email
is valid (not a placeholder), and re-run the init script.
- Use Core for non-Enterprise features — Core requires no license and can
verify most shared InfluxDB 3 behavior (queries, writes, databases, tables).
- Flag Enterprise-only gaps — if the feature under test is Enterprise-only
(clustering, RBAC, table/database retention, read replicas), state explicitly
that runtime verification was not possible and why. Do not guess at behavior.
Port Already in Use
Symptom: "port is already allocated"
Fix:
lsof -i :8181
lsof -i :8282
docker compose down influxdb3-enterprise influxdb3-core
Getting the Admin Token
The init script generates and saves admin tokens to JSON files for both Core and Enterprise:
cat test/.influxdb3/core/.token
jq -r .token test/.influxdb3/core/.token
cat ~/influxdata-docs/.influxdb3/enterprise/admin-token.json
jq -r .token ~/influxdata-docs/.influxdb3/enterprise/admin-token.json
export INFLUXDB3_CORE_TOKEN=$(jq -r .token test/.influxdb3/core/.token)
export INFLUXDB3_ENTERPRISE_TOKEN=$(jq -r .token ~/influxdata-docs/.influxdb3/enterprise/admin-token.json)
curl -i http://localhost:8282/ping -H "Authorization: Bearer $INFLUXDB3_CORE_TOKEN"
curl -i http://localhost:8181/ping -H "Authorization: Bearer $INFLUXDB3_ENTERPRISE_TOKEN"
Token File Format (both Core and Enterprise):
{
"token": "64-character-hexadecimal-token",
"description": "Admin token for InfluxDB 3 Core/Enterprise"
}
Service Comparison
| Aspect | Core | Enterprise |
|---|
| Port | 8282 | 8181 |
| Data location | Per-worktree | Shared |
| Auth default | Optional | Required |
| License | None | Trial/Paid |
| Use case | Isolated testing | Shared testing with worktree DBs |
Related Files
- Init script:
test/scripts/init-influxdb3.sh
- Docker Compose:
compose.yaml (services: influxdb3-core, influxdb3-enterprise)
- Test config:
content/<product>/.env.test
Related Skills
- cypress-e2e-testing - For running E2E tests on documentation UI
- docs-cli-workflow - For creating/editing documentation content