89 lines
2.5 KiB
TypeScript
89 lines
2.5 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import type { SecurityTier } from '@pig/core';
|
|
import {
|
|
capacityMeetsRequirement,
|
|
type AvailabilityRow,
|
|
} from '../src/services/capacity';
|
|
|
|
function capacity(securityTier: SecurityTier): AvailabilityRow {
|
|
return {
|
|
commitmentId: '10000000-0000-4000-8000-000000000001',
|
|
accountId: '20000000-0000-4000-8000-000000000001',
|
|
name: `${securityTier} block`,
|
|
gpuType: 'H100_80GB',
|
|
gpuCount: 8,
|
|
interconnectType: 'Infiniband',
|
|
securityTier,
|
|
startsAt: new Date('2026-01-01T00:00:00Z'),
|
|
endsAt: new Date('2027-01-01T00:00:00Z'),
|
|
totalGpuHours: 10_000,
|
|
soldGpuHours: 0,
|
|
heldGpuHours: 0,
|
|
availableGpuHours: 10_000,
|
|
costPerGpuHourCents: 100,
|
|
utilisation: 0,
|
|
breakEvenPriceCents: 100,
|
|
};
|
|
}
|
|
|
|
test('government demand excludes both community and ordinary secure cloud', () => {
|
|
const requirement = { gpuCount: 1, minSecurityTier: 'government' as const };
|
|
assert.equal(capacityMeetsRequirement(capacity('community_cloud'), requirement), false);
|
|
assert.equal(capacityMeetsRequirement(capacity('secure_cloud'), requirement), false);
|
|
assert.equal(capacityMeetsRequirement(capacity('government'), requirement), true);
|
|
});
|
|
|
|
test('higher classifications may satisfy lower requirements', () => {
|
|
assert.equal(
|
|
capacityMeetsRequirement(capacity('government'), {
|
|
gpuCount: 1,
|
|
minSecurityTier: 'secure_cloud',
|
|
}),
|
|
true,
|
|
);
|
|
assert.equal(
|
|
capacityMeetsRequirement(capacity('secure_cloud'), {
|
|
gpuCount: 1,
|
|
minSecurityTier: 'community_cloud',
|
|
}),
|
|
true,
|
|
);
|
|
});
|
|
|
|
test('security sufficiency never overrides the export-control predicate', () => {
|
|
const block = capacity('government');
|
|
assert.equal(
|
|
capacityMeetsRequirement(block, {
|
|
gpuCount: 1,
|
|
minSecurityTier: 'government',
|
|
complianceDecision: { decision: 'block', supersededAt: null },
|
|
}),
|
|
false,
|
|
);
|
|
assert.equal(
|
|
capacityMeetsRequirement(block, {
|
|
gpuCount: 1,
|
|
minSecurityTier: 'government',
|
|
complianceDecision: null,
|
|
}),
|
|
false,
|
|
);
|
|
assert.equal(
|
|
capacityMeetsRequirement(block, {
|
|
gpuCount: 1,
|
|
minSecurityTier: 'government',
|
|
complianceDecision: { decision: 'allow', supersededAt: new Date() },
|
|
}),
|
|
false,
|
|
);
|
|
assert.equal(
|
|
capacityMeetsRequirement(block, {
|
|
gpuCount: 1,
|
|
minSecurityTier: 'government',
|
|
complianceDecision: { decision: 'allow', supersededAt: null },
|
|
}),
|
|
true,
|
|
);
|
|
});
|