Updated for new version

This commit is contained in:
2026-10-29 11:44:17 -04:00
parent d038fe3bab
commit 885f4160a7
11 changed files with 199 additions and 56 deletions
+4
View File
@@ -19,6 +19,10 @@
wikideck_network_policy_peer_egress: "{{ invalid_case.peer_egress | default([]) }}"
wikideck_image_pull_secrets: "{{ invalid_case.pull_secrets | default([]) }}"
wikideck_network_policy_ingress_from: "{{ invalid_case.ingress_from | default([{'podSelector': {}}]) }}"
wikideck_trusted_proxies: "{{ invalid_case.trusted_proxies | default([]) }}"
wikideck_ops_port: "{{ invalid_case.ops_port | default('') }}"
wikideck_mainnet_launch: "{{ invalid_case.mainnet_launch | default('') }}"
wikideck_mainnet_risk_ack: "{{ invalid_case.risk_ack | default('') }}"
block:
- name: Run role input validation
ansible.builtin.include_tasks: ../tasks/validate.yml
+19
View File
@@ -15,6 +15,10 @@
wikideck_namespace: "{{ render_case.namespace | default('wikideck') }}"
wikideck_peers: "{{ render_case.peers | default([]) }}"
wikideck_allow_private_peers: "{{ render_case.allow_private | default(false) }}"
wikideck_mainnet_launch: "{{ render_case.mainnet_launch | default('') }}"
wikideck_mainnet_risk_ack: "{{ render_case.risk_ack | default('') }}"
wikideck_trusted_proxies: "{{ render_case.trusted_proxies | default([]) }}"
wikideck_ops_port: "{{ render_case.ops_port | default('') }}"
wikideck_startup_probe_failure_threshold: "{{ render_case.startup_threshold | default(180) }}"
wikideck_ingress_enabled: "{{ render_case.ingress | default(false) }}"
wikideck_ingress_host: wikideck.example.com
@@ -73,6 +77,13 @@
https_to: []
- label: digest-pinned image
image: registry.example.com/wikideck@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- label: proxy trust and private diagnostics
peers: [https://peer-a.example.org, https://peer-b.example.org]
trusted_proxies: [10.20.30.40, 2001:db8::/64]
ops_port: "9090"
- label: exact mainnet launch configuration
mainnet_launch: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
risk_ack: operator-accepts-unaudited-risk
loop_control:
loop_var: render_case
label: "{{ render_case.label }}"
@@ -146,6 +157,14 @@
peer_egress:
- to: [{podSelector: {}}]
ports: [{protocol: UDP, port: 3001}]
- label: malformed mainnet chain approval
mainnet_launch: not-a-chain-id
- label: unsupported mainnet risk acknowledgement
risk_ack: operator-accepts-risk
- label: proxy entry is not an IP or CIDR
trusted_proxies: [proxy.example.org]
- label: operations port out of range
ops_port: "70000"
loop_control:
loop_var: invalid_case
label: "{{ invalid_case.label }}"
+4
View File
@@ -48,6 +48,10 @@
- env.WIKIDECK_DATA_DIR == '/app/data' and env.NODE_ENV == 'production'
- env.WIKIDECK_PEERS == wikideck_peers | join(',')
- env.WIKIDECK_ALLOW_PRIVATE_PEERS == ('1' if wikideck_allow_private_peers else '0')
- env.WIKIDECK_MAINNET_LAUNCH == wikideck_mainnet_launch
- env.WIKIDECK_MAINNET_RISK_ACK == wikideck_mainnet_risk_ack
- (env.WIKIDECK_TRUSTED_PROXIES | default('')) == wikideck_trusted_proxies | join(',')
- (env.WIKIDECK_OPS_PORT | default('')) == (wikideck_ops_port | string)
- env.WIKIDECK_OFFLINE is not defined
- env.RANDOMX_BINARY is not defined
- container.command is not defined and container.args is not defined
+13 -6
View File
@@ -2,7 +2,8 @@
import assert from 'node:assert/strict';
import { spawn, execFileSync } from 'node:child_process';
import { once } from 'node:events';
import { readFile, access } from 'node:fs/promises';
import { access } from 'node:fs/promises';
import { DatabaseSync } from 'node:sqlite';
assert.equal(process.env.WIKIDECK_DATA_DIR, '/app/data');
assert.equal(process.env.WIKIDECK_PEERS, '');
@@ -39,17 +40,23 @@ async function runNode() {
const body = await response.json();
if (path === '/healthz') {
assert.equal(body.status, 'ok');
assert.equal(body.network, 'wikideck-randomx-testnet-2');
assert.equal(body.network, 'wikideck-randomx-testnet-6');
} else if (path === '/p2p/status') {
assert.equal(body.network, 'wikideck-randomx-testnet-2');
assert.equal(body.network, 'wikideck-randomx-testnet-6');
assert.equal(body.size, 0);
assert.match(body.chainId, /^[a-f0-9]{64}$/);
} else assert.deepEqual(body.peers, []);
}
await access('/app/data/testnet-node.lock');
const ledger = JSON.parse(await readFile('/app/data/testnet/ledger.json', 'utf8'));
assert.equal(ledger.network, 'wikideck-randomx-testnet-2');
assert.deepEqual(ledger.blocks, []);
const ledger = new DatabaseSync('/app/data/testnet/ledger.sqlite');
try {
const metadata = ledger.prepare('SELECT value FROM metadata WHERE key = ?').get('network');
assert.equal(metadata.value, 'wikideck-randomx-testnet-6');
assert.equal(ledger.prepare('SELECT COUNT(*) AS count FROM blocks').get().count, 0);
assert.equal(ledger.prepare('SELECT COUNT(*) AS count FROM pending_transfers').get().count, 0);
} finally {
ledger.close();
}
child.kill('SIGTERM');
assert.deepEqual(await exited, [0, null], output);
await assert.rejects(access('/app/data/testnet-node.lock'), { code: 'ENOENT' });