Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
import { describe, expect, it } from "@suaveplan/testing/runner";
import {
AdmissionController,
AssignmentEngine,
MeshBalancer,
MeshCapacityTracker,
type MeshDescriptor,
type PeerInfo,
} from "../../src/index.js";
describe("assignment end-to-end", () => {
it("admits peers, builds a rebalance plan, and applies moves", () => {
const tracker = new MeshCapacityTracker();
tracker.recordMesh("mesh-A", 10);
tracker.recordMesh("mesh-B", 10);
const meshes: MeshDescriptor[] = [
{ meshId: "mesh-A", region: "us-east", tierFloor: 0 },
{ meshId: "mesh-B", region: "us-west", tierFloor: 0 },
];
const engine = new AssignmentEngine({ tracker });
const controller = new AdmissionController({
engine,
tracker,
meshes: () => meshes,
});
// Force imbalance by manually loading mesh-A.
for (let i = 0; i < 8; i++) tracker.recordJoin("mesh-A", `p${i}`);
const balancer = new MeshBalancer({
tracker,
imbalanceThreshold: 0.3,
maxMovesPerPlan: 2,
});
const plan = balancer.buildPlan((overloaded) => {
expect(overloaded).toBe("mesh-A");
return ["p0", "p1"];
});
expect(plan.moves).toHaveLength(2);
for (const move of plan.moves) {
tracker.recordLeave(move.fromMeshId, move.peerId);
tracker.recordJoin(move.toMeshId, move.peerId);
}
expect(tracker.getUtilization("mesh-A")).toBe(0.6);
expect(tracker.getUtilization("mesh-B")).toBe(0.2);
// A fresh peer can still be admitted via the controller.
const fresh: PeerInfo = {
peerId: "alice",
latencyMap: new Map([
["mesh-A", 50],
["mesh-B", 50],
]),
region: "us-east",
tierEligibility: 1,
capabilities: "STANDARD",
};
const result = controller.admit(fresh);
expect(["mesh-A", "mesh-B"]).toContain(result.meshId);
});
});