Skip to content

Commit

Permalink
test: include strace openat test
Browse files Browse the repository at this point in the history
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
  • Loading branch information
RafaelGSS committed Jan 9, 2023
1 parent 22a2ec6 commit 1208513
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 0 deletions.
44 changes: 44 additions & 0 deletions t.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const { ReadableStream } = require('node:stream/web')

async function main() {
const stream = new ReadableStream({
start(controller) {
controller.close();
},
});

const reader = stream.getReader();

await reader.closed;
reader.releaseLock(); // the error is created here
try {
await reader.closed; // this should throw the invalid state error
} catch(e) {
console.log(e)
}
}

let debug

async function main2() {
const stream = new ReadableStream({
start(controller) {
controller.close();
},
});

const reader = stream.getReader();

await reader.closed;
reader.releaseLock(); // the error is created here
try {
await reader.closed; // this should throw the invalid state error
} catch(e) {
debug = e.stack
console.log(e)
}

debugger
}

main().then(main2)
50 changes: 50 additions & 0 deletions test/parallel/test-strace-openat-openssl.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
'use strict';

const common = require('../common');
const { spawn, spawnSync } = require('node:child_process');
const { createInterface } = require('node:readline');
const assert = require('node:assert');

if (!common.hasCrypto)
common.skip('missing crypto');
if (!common.isLinux)
common.skip('linux only');
if (spawnSync('strace', ['-V']).status !== 0) {
common.skip('missing strace');
}

{
const allowedOpenCalls = new Set([
'/etc/ssl/openssl.cnf',
]);
const strace = spawn('strace', [
'-f', '-ff',
'-e', 'trace=open,openat',
'-s', '512',
'-D', process.execPath, '-e', 'require("crypto")',
]);

// stderr is the default for strace
const rl = createInterface({ input: strace.stderr });
rl.on('line', (line) => {
if (!line.startsWith('open')) {
return;
}

const file = line.match(/"(.*?)"/)[1];
// skip .so reading attempt
if (file.match(/.+\.so(\.?)/) !== null) {
return;
}
assert(allowedOpenCalls.delete(file), `${file} is not in the list of allowed openat calls`);
});

strace.on('error', common.mustNotCall());
strace.on('exit', common.mustCall((code) => {
assert.strictEqual(code, 0);
const missingKeys = Array.from(allowedOpenCalls.keys());
if (missingKeys.length) {
assert.fail(`The following openat call are missing: ${missingKeys.join(',')}`);
}
}));
}

0 comments on commit 1208513

Please sign in to comment.