Compare commits

..

10 Commits

Author SHA1 Message Date
ac1fb9fa07 docs: enhance JSDoc for DockerOrchestrator cleanup methods
- Add detailed documentation for `cleanup()` and `cleanupFailedStart()` methods
- Clarify the purpose, behavior, and differences between the methods
- Document parameters, return values, and error handling
- Add @remarks sections for important implementation details
2025-06-19 16:53:05 -05:00
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
4868a8d405
refactor: remove dockerOptions and fix resource limits
- Removed unused dockerOptions from DockerOrchestrator and all manager classes
- Updated container-manager to use NanoCpus for CPU limits instead of CpuQuota/CpuPeriod
- Fixed resource limit enforcement in container configuration
- Improved test reliability and error handling
- Cleaned up test files and removed unused code
2025-06-19 16:01:30 -05:00
675a0656c6
feat: Refactor Docker orchestrator and enhance test utilities
This commit includes a major refactoring of the Docker orchestrator implementation
along with improvements to the testing infrastructure:

- Refactored Docker orchestrator to handle dynamic port assignment
- Added comprehensive test utilities in docker-test-utils.ts
- Improved error handling and resource cleanup in test environments
- Enhanced NodeStatus interface with containerId and networkId
- Added support for different storage types in NodeConfig
- Fixed request port handling in TestOrchestrator
- Added proper cleanup method to NodeOrchestrator interface

The changes ensure more reliable container management and better test isolation
while maintaining backward compatibility with existing implementations.

BREAKING CHANGE: The NodeOrchestrator interface now requires a cleanup() method.
2025-06-18 19:56:09 -05:00
f6a3bbba56
docker orchestrator is working 2025-06-18 01:20:25 -05:00
95dd1c5338
Fixed/simplified tsconfig and docker setup 2025-06-17 19:59:55 -05:00
fdcc01da1c
Implement Docker orchestrator and fix test infrastructure
- Add DockerOrchestrator implementation with container management
- Refactor InMemoryOrchestrator to use RhizomeNode directly
- Fix orchestrated test files for single and two-node scenarios
- Update package.json with dockerode dependency
- Clean up old test files and imports
2025-06-15 17:08:58 -05:00
b2ec6fe157
npm audit fix 2025-06-15 15:09:40 -05:00

View File

@ -1,5 +1,23 @@
See [spec.md](spec.md) for additional specification details about this project.
# Concepts
| | Implemented | Notes |
| ------------- | ----------- | ------------------------------------------------------------------------ |
| Peering | Yes | Implemented with ZeroMQ and/or Libp2p. Libp2p solves more problems. |
| Schemas | Not really | Currently very thin layer allowing TypedCollections |
| Relationships | No | Supporting relational algebra among domain entities |
| Views | Yes | Lossless: Map the `targetContext`s as properties of domain entities. |
| | | Lossy: Use a delta filter and a resolver function to produce a view. |
| | | Currently using functions rather than JSON-Logic expressions. |
| Functions | No | Arbitrary subscribers to delta stream (that can also emit deltas?) |
| Tests | Yes | We are set up to run unit tests and multi-node tests |
| Identity | Sort of | We have an identity service via Libp2p |
| Contexts | No | Each context may involve different lossy functions and delta filters |
| HTTP API | Yes | Basic peering info and entity CRUD |
If we express views and filter rules as JSON-Logic, we can easily include them in records.
# Development / Demo
## Setup
@ -138,23 +156,7 @@ EOF
curl -s -X PUT -H 'content-type:application/json' -d @/tmp/user.json http://localhost:3000/api/user | jq
```
# Concepts
| | Implemented | Notes |
| ------------- | ----------- | ------------------------------------------------------------------------ |
| Peering | Yes | Implemented with ZeroMQ and/or Libp2p. Libp2p solves more problems. |
| Schemas | Not really | Currently very thin layer allowing TypedCollections |
| Relationships | No | Supporting relational algebra among domain entities |
| Views | Yes | Lossless: Map the `targetContext`s as properties of domain entities. |
| | | Lossy: Use a delta filter and a resolver function to produce a view. |
| | | Currently using functions rather than JSON-Logic expressions. |
| Functions | No | Arbitrary subscribers to delta stream (that can also emit deltas?) |
| Tests | Yes | We are set up to run unit tests and multi-node tests |
| Identity | Sort of | We have an identity service via Libp2p |
| Contexts | No | Each context may involve different lossy functions and delta filters |
| HTTP API | Yes | Basic peering info and entity CRUD |
If we express views and filter rules as JSON-Logic, we can easily include them in records.
# More About Concepts
## Clocks?