Commit Graph

7 Commits

Author SHA1 Message Date
a269da4520 [Issue #4] Add SnapshotStore unit tests (#31)
All checks were successful
CI / build (push) Successful in 15s
2026-01-09 16:37:23 +00:00
032fda41ce Add comprehensive unit tests for InMemoryEventStore
All checks were successful
CI / build (pull_request) Successful in 15s
CI / build (push) Successful in 15s
- Test SaveEvent persists events correctly (single, multiple, multi-actor)
- Test GetEvents retrieves events in insertion order
- Test GetEvents with fromVersion filtering
- Test GetLatestVersion returns correct version
- Test behavior with non-existent actor IDs (returns empty/zero)
- Test concurrent access safety with race detector
- Add mutex protection to InMemoryEventStore for thread safety

Closes #3

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 17:14:18 +01:00
3cd4d75e50 Add comprehensive unit tests for ConsistentHashRing
All checks were successful
CI / build (pull_request) Successful in 17s
CI / build (push) Successful in 14s
Test all public methods with 100% coverage:
- AddNode: updates ring, is idempotent, handles multiple nodes
- RemoveNode: updates ring, handles non-existent nodes
- GetNode: returns consistent results, handles empty ring and single node
- GetNodes and IsEmpty helper methods

Distribution tests verify:
- Balanced key distribution across nodes (< 25% deviation)
- Minimal key movement when adding nodes (< 35% moved)
- Virtual nodes improve distribution (CV < 15%)
- Ring behavior with 100+ nodes

Includes benchmarks for GetNode, AddNode, and distribution operations.

Closes #2

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 16:52:34 +01:00
c2a78c4915 Add comprehensive unit tests for Event and ActorSnapshot types
All checks were successful
CI / build (pull_request) Successful in 45s
CI / build (push) Successful in 16s
Test JSON serialization/deserialization, field names, omitempty behavior,
edge cases (empty/nil data, large payloads, special characters including
unicode and control chars), timestamp handling across timezones, nanosecond
precision, version edge cases, and nested data structures.

Closes #1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 16:44:51 +01:00
1ce5b3ab77 Rename model package to eventstorming
All checks were successful
CI / build (push) Successful in 32s
Clearer package name that describes what it contains.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 10:08:32 +01:00
f7b7335ef5 Fix manifesto links
All checks were successful
CI / build (push) Successful in 1m25s
- Update manifesto links to use absolute Gitea URLs

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 19:39:16 +01:00
e9e50c021f Initial aether repository structure
All checks were successful
CI / build (push) Successful in 1m13s
Distributed actor system with event sourcing for Go:
- event.go - Event, ActorSnapshot, EventStore interface
- eventbus.go - EventBus, EventBroadcaster for pub/sub
- nats_eventbus.go - NATS-backed cross-node event broadcasting
- store/ - InMemoryEventStore (testing), JetStreamEventStore (production)
- cluster/ - Node discovery, leader election, shard distribution
- model/ - EventStorming model types

Extracted from arcadia as open-source infrastructure component.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 19:30:02 +01:00