Fix telemetry delivery and report loaded island names; record Workshop 0.0.130
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -92,6 +92,24 @@ test('concurrent retries store once; reordered JSON is equivalent; conflicting c
|
||||
assert.equal((await ingest({...e, serverId: otherServer}, otherToken)).status, 201);
|
||||
});
|
||||
|
||||
test('published fractional-duration defeats are accepted, counted and retry idempotently', async () => {
|
||||
const terrain = '{1234567890ABCDEF}Worlds/FractionalDuration.ent';
|
||||
const e = event({terrain, outcome: 'defeat', phase: 6, players: [], elapsedSeconds: 261.593994140625});
|
||||
const first = await ingest(e);
|
||||
assert.equal(first.status, 201, await first.clone().text());
|
||||
assert.equal((await first.json()).accepted, true);
|
||||
assert.equal((await detail(e)).elapsedSeconds, 261);
|
||||
assert.equal((await ingest(e)).status, 200);
|
||||
assert.equal((await ingest({...e, elapsedSeconds: 261})).status, 200);
|
||||
const summary = await (await call(`/api/summary?terrain=${encodeURIComponent(terrain)}`)).json();
|
||||
assert.equal(summary.allServers.losses, 1);
|
||||
assert.equal(summary.allServers.completed, 1);
|
||||
for (const elapsedSeconds of [-0.1, 2147483647.1, '261.594', null]) {
|
||||
assert.equal((await ingest(event({elapsedSeconds}))).status, 400);
|
||||
}
|
||||
assert.equal((await ingest(event({connectedPlayers: 0.5}))).status, 400);
|
||||
});
|
||||
|
||||
test('out-of-order snapshots and second terminal reports cannot reopen or double count a mission', async () => {
|
||||
const e = event({players: []});
|
||||
const heartbeat = {...e, type: 'heartbeat', phase: 4, outcome: '', elapsedSeconds: 100};
|
||||
|
||||
Reference in New Issue
Block a user