summaryrefslogtreecommitdiff
path: root/cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-10 13:22:13 -0700
committerGitHub <noreply@github.com>2024-02-10 20:22:13 +0000
commitf5e46c9bf2f50d66a953fa133161fc829cecff06 (patch)
tree8faf2f5831c1c7b11d842cd9908d141082c869a5 /cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js
parentd2477f780630a812bfd65e3987b70c0d309385bb (diff)
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests -> tests, and updates of relative paths for files. This is the first step towards aggregate all of the integration test files under tests/, which will lead to a set of integration tests that can run without the CLI binary being built. While we could leave these tests under `cli`, it would require us to keep a more complex directory structure for the various test runners. In addition, we have a lot of complexity to ignore various test files in the `cli` project itself (cargo publish exclusion rules, autotests = false, etc). And finally, the `tests/` folder will eventually house the `test_ffi`, `test_napi` and other testing code, reducing the size of the root repo directory. For easier review, the extremely large and noisy "move" is in the first commit (with no changes -- just a move), while the remainder of the changes to actual files is in the second commit.
Diffstat (limited to 'cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js')
-rw-r--r--cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js166
1 files changed, 0 insertions, 166 deletions
diff --git a/cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js b/cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js
deleted file mode 100644
index 56409d411..000000000
--- a/cli/tests/node_compat/test/parallel/test-zlib-random-byte-pipes.js
+++ /dev/null
@@ -1,166 +0,0 @@
-// deno-fmt-ignore-file
-// deno-lint-ignore-file
-
-// Copyright Joyent and Node contributors. All rights reserved. MIT license.
-// Taken from Node 16.13.0
-// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
-
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-'use strict';
-const common = require('../common');
-if (!common.hasCrypto)
- common.skip('missing crypto');
-
-const assert = require('assert');
-const crypto = require('crypto');
-const stream = require('stream');
-const zlib = require('zlib');
-
-const Stream = stream.Stream;
-
-// Emit random bytes, and keep a shasum
-class RandomReadStream extends Stream {
- constructor(opt) {
- super();
-
- this.readable = true;
- this._paused = false;
- this._processing = false;
-
- this._hasher = crypto.createHash('sha1');
- opt = opt || {};
-
- // base block size.
- opt.block = opt.block || 256 * 1024;
-
- // Total number of bytes to emit
- opt.total = opt.total || 256 * 1024 * 1024;
- this._remaining = opt.total;
-
- // How variable to make the block sizes
- opt.jitter = opt.jitter || 1024;
-
- this._opt = opt;
-
- this._process = this._process.bind(this);
-
- process.nextTick(this._process);
- }
-
- pause() {
- this._paused = true;
- this.emit('pause');
- }
-
- resume() {
- // console.error("rrs resume");
- this._paused = false;
- this.emit('resume');
- this._process();
- }
-
- _process() {
- if (this._processing) return;
- if (this._paused) return;
-
- this._processing = true;
-
- if (!this._remaining) {
- this._hash = this._hasher.digest('hex').toLowerCase().trim();
- this._processing = false;
-
- this.emit('end');
- return;
- }
-
- // Figure out how many bytes to output
- // if finished, then just emit end.
- let block = this._opt.block;
- const jitter = this._opt.jitter;
- if (jitter) {
- block += Math.ceil(Math.random() * jitter - (jitter / 2));
- }
- block = Math.min(block, this._remaining);
- const buf = Buffer.allocUnsafe(block);
- for (let i = 0; i < block; i++) {
- buf[i] = Math.random() * 256;
- }
-
- this._hasher.update(buf);
-
- this._remaining -= block;
-
- this._processing = false;
-
- this.emit('data', buf);
- process.nextTick(this._process);
- }
-}
-
-// A filter that just verifies a shasum
-class HashStream extends Stream {
- constructor() {
- super();
- this.readable = this.writable = true;
- this._hasher = crypto.createHash('sha1');
- }
-
- write(c) {
- // Simulate the way that an fs.ReadStream returns false
- // on *every* write, only to resume a moment later.
- this._hasher.update(c);
- process.nextTick(() => this.resume());
- return false;
- }
-
- resume() {
- this.emit('resume');
- process.nextTick(() => this.emit('drain'));
- }
-
- end(c) {
- if (c) {
- this.write(c);
- }
- this._hash = this._hasher.digest('hex').toLowerCase().trim();
- this.emit('data', this._hash);
- this.emit('end');
- }
-}
-
-for (const [ createCompress, createDecompress ] of [
- [ zlib.createGzip, zlib.createGunzip ],
- // TODO(kt3k): Enable this when we support brotli in zlib
- // [ zlib.createBrotliCompress, zlib.createBrotliDecompress ],
-]) {
- const inp = new RandomReadStream({ total: 1024, block: 256, jitter: 16 });
- const out = new HashStream();
- const gzip = createCompress();
- const gunz = createDecompress();
-
- inp.pipe(gzip).pipe(gunz).pipe(out);
-
- out.on('data', common.mustCall((c) => {
- assert.strictEqual(c, inp._hash, `Hash '${c}' equals '${inp._hash}'.`);
- }));
-}