Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
26 lines
1.2 KiB
JavaScript
26 lines
1.2 KiB
JavaScript
const test = require("node:test");
|
||
const assert = require("node:assert/strict");
|
||
|
||
const {
|
||
FAST_DOWNLOAD_CHANNELS_PER_SESSION,
|
||
DOWNLOAD_TRANSFER_CONCURRENCY,
|
||
UPLOAD_TRANSFER_CONCURRENCY,
|
||
TRANSFER_CHUNK_SIZE,
|
||
} = require("./transferLimits.cjs");
|
||
|
||
test("SFTP transfer limits preserve upload safety and the pre-regression download window", () => {
|
||
assert.equal(UPLOAD_TRANSFER_CONCURRENCY, 64);
|
||
assert.equal(DOWNLOAD_TRANSFER_CONCURRENCY, 64);
|
||
assert.equal(FAST_DOWNLOAD_CHANNELS_PER_SESSION, 1);
|
||
// Keep ssh2's default chunk size — larger packets can corrupt uploads on
|
||
// servers that do not honour non-default WRITE sizes (#2022).
|
||
assert.equal(TRANSFER_CHUNK_SIZE, 32 * 1024);
|
||
// #2449 / Electerm-class: upload window is 2MB (64 × 32KB). Raising only
|
||
// concurrency keeps the safe packet size while matching ssh2/Electerm defaults.
|
||
assert.equal(UPLOAD_TRANSFER_CONCURRENCY * TRANSFER_CHUNK_SIZE, 2 * 1024 * 1024);
|
||
// #2030 reduced the shared chunk size from 512KB to 32KB. Downloads need
|
||
// enough parallel reads to preserve the 2MB in-flight window that existed
|
||
// after #1533, otherwise high-latency proxy paths collapse to KB/s speeds.
|
||
assert.equal(DOWNLOAD_TRANSFER_CONCURRENCY * TRANSFER_CHUNK_SIZE, 2 * 1024 * 1024);
|
||
});
|