Compare commits

...

3 Commits

Author SHA1 Message Date
7bee2a2687 refactor: simplify node startup and improve test reliability
- Remove waitForReady option from RhizomeNode.start() and always wait for readiness
- Update test files to use simplified start() method
- Clean up debug logging in lossless view
- Rename docker orchestrator test file to remove version suffix
2025-06-19 16:44:13 -05:00
5956e7147f
Windsurf workflow to generate a merge request summary 2025-06-19 16:37:38 -05:00
bfc7aab36a
Remove empty test 2025-06-19 16:35:37 -05:00
7 changed files with 14 additions and 28 deletions

View File

@ -0,0 +1,7 @@
---
description: Generate a merge request summary
---
- fetch origin/main
- compare the current branch to origin/main
- generate a merge request summary as an untracked file called merge-${branch}.md

View File

@ -17,7 +17,7 @@ describe('Run', () => {
apps[0].config.seedPeers.push(apps[1].myRequestAddr); apps[0].config.seedPeers.push(apps[1].myRequestAddr);
apps[1].config.seedPeers.push(apps[0].myRequestAddr); apps[1].config.seedPeers.push(apps[0].myRequestAddr);
await Promise.all(apps.map((app) => app.start({ waitForReady: false }))); await Promise.all(apps.map((app) => app.start()));
}); });
afterAll(async () => { afterAll(async () => {

View File

@ -1,13 +0,0 @@
import Docker from 'dockerode';
import { describe, it, beforeAll, afterAll, expect } from '@jest/globals';
import Debug from 'debug';
const debug = Debug('rz:test:docker-smoke');
// Simple test to verify Docker is working
describe('Docker Smoke Test', () => {
let docker: Docker;
let container: any;
});

View File

@ -83,16 +83,13 @@ export class RhizomeNode {
/** /**
* Start the node components * Start the node components
* @param options.startupOptions Options for node startup
* @param options.waitForReady Whether to wait for all components to be fully ready (default: false)
* @param options.syncOnStart Whether to sync with peers on startup (default: false) * @param options.syncOnStart Whether to sync with peers on startup (default: false)
* @returns Promise that resolves when the node is started (and ready if waitForReady is true) * @returns Promise that resolves when the node is fully started and ready
*/ */
async start({ async start({
waitForReady = false,
syncOnStart = false syncOnStart = false
}: { waitForReady?: boolean; syncOnStart?: boolean } = {}): Promise<void> { }: { syncOnStart?: boolean } = {}): Promise<void> {
debug(`[${this.config.peerId}]`, `Starting node${waitForReady ? ' (waiting for ready)' : ''}...`); debug(`[${this.config.peerId}]`, 'Starting node (waiting for ready)...');
// Connect our lossless view to the delta stream // Connect our lossless view to the delta stream
this.deltaStream.subscribeDeltas(async (delta) => { this.deltaStream.subscribeDeltas(async (delta) => {
@ -115,11 +112,7 @@ export class RhizomeNode {
// Start HTTP server if enabled // Start HTTP server if enabled
if (this.config.httpEnable && this.httpServer) { if (this.config.httpEnable && this.httpServer) {
if (waitForReady) { await this.httpServer.startAndWait();
await this.httpServer.startAndWait();
} else {
this.httpServer.start();
}
} }
// Initialize network components // Initialize network components
@ -132,7 +125,7 @@ export class RhizomeNode {
await new Promise((resolve) => setTimeout(resolve, 1000)); await new Promise((resolve) => setTimeout(resolve, 1000));
} }
debug(`[${this.config.peerId}]`, `Node started${waitForReady ? ' and ready' : ''}`); debug(`[${this.config.peerId}]`, 'Node started and ready');
} }
async stop() { async stop() {

View File

@ -61,7 +61,7 @@ export class TestOrchestrator extends BaseOrchestrator {
// Start the node and wait for all components to be ready // Start the node and wait for all components to be ready
debug(`[${nodeId}] Starting node and waiting for it to be fully ready...`); debug(`[${nodeId}] Starting node and waiting for it to be fully ready...`);
try { try {
await node.start({ waitForReady: true }); await node.start();
debug(`[${nodeId}] Node is fully started and ready`); debug(`[${nodeId}] Node is fully started and ready`);
} catch (error) { } catch (error) {
debug(`[${nodeId}] Error starting node:`, error); debug(`[${nodeId}] Error starting node:`, error);

View File

@ -172,7 +172,6 @@ export class Lossless {
viewSpecific(entityId: DomainEntityID, deltaIds: DeltaID[], deltaFilter?: DeltaFilter): LosslessViewOne | undefined { viewSpecific(entityId: DomainEntityID, deltaIds: DeltaID[], deltaFilter?: DeltaFilter): LosslessViewOne | undefined {
const combinedFilter = (delta: Delta) => { const combinedFilter = (delta: Delta) => {
if (!deltaIds.includes(delta.id)) { if (!deltaIds.includes(delta.id)) {
debug(`[${this.rhizomeNode.config.peerId}]`, `Excluding delta ${delta.id} because it's not in the requested list of deltas`);
return false; return false;
} }
if (!deltaFilter) return true; if (!deltaFilter) return true;