Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v10.x] test: mark test-repl-envvars as flaky on AIX #25219

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
91b8c5b
src: remove function hasTextDecoder in encoding.js
chichiwang Oct 12, 2018
acd7312
crypto: reduce memory usage of SignFinal
tniessen Oct 11, 2018
22ee1e3
zlib: do not leak on destroy
mafintosh Oct 18, 2018
c00a830
src: memory management using smart pointer
uttampawar Oct 12, 2018
e8200c0
src: simplify `TimerFunctionCall()` in `node_perf.cc`
addaleax Oct 20, 2018
93d4163
tls: throw if protocol too long
Oct 12, 2018
50b22de
doc, test: document and test vm timeout escapes
jasnell Oct 18, 2018
83888e8
test: mark test-vm-timeout-* known issue tests flaky
jasnell Oct 24, 2018
9df556c
build: expose more openssl categories for addons
JCMais Oct 9, 2018
784f1a0
src: avoid extra `Persistent` in `DefaultTriggerAsyncIdScope`
addaleax Oct 24, 2018
1156606
src: cache the result of GetOptions() in JS land
joyeecheung Nov 4, 2018
2ff9143
build: only try to find node when it's needed by the target
joyeecheung Nov 6, 2018
c85c2ce
test: http-client-timeout error assert arguments
rangle-tadhg Nov 6, 2018
a4620ab
test: fix arguments order
franher Nov 6, 2018
abf575d
child_process: allow 'http_parser' monkey patching again
Jimbly Oct 31, 2018
4ca0134
test: fs readfile, swap arguments in strictEqual
dodev Nov 6, 2018
9dbe096
test: swap the order of arguments
mhamwala Nov 6, 2018
71a61dd
test: strictEqual argument order (actual, expected)
Nov 6, 2018
c769b8b
test: fix invalid argument order in test-http-expect-continue.js
mroderick Nov 6, 2018
7574f3f
test: change order of assert.strictEqual()
remypar5 Nov 6, 2018
27cb911
test: fix assert parameter order
Nov 6, 2018
e06bb47
test: swap expected and actual in assert.strictEqual
fbilbie Nov 6, 2018
84a9ba4
test: add tests for OutgoingMessage setTimeout
robin-drexler Nov 6, 2018
d175a2e
test: fixing arguments order in `assert.strictEqual()`
gcarcaci Nov 6, 2018
d9489e1
test: fixe argument order in assert.strictEqual
posth Nov 6, 2018
1d88f01
test: fix arguments order
simonaco Nov 6, 2018
88231ca
test: switch arguments in strictEqual
mthpvg Nov 6, 2018
a7f604a
test: fix argument order in assert.strictEqual()
Nov 6, 2018
30d9588
test: fix arguments order in test-fs-write-buffer
razvanbh Nov 6, 2018
040ed21
test: removed extraneous argument 's'
jacksonchui Nov 7, 2018
0e5fe9a
test: fix assert argument order
manishepoch Nov 6, 2018
561ac4c
test: fix arguments order in assert.strictEqual
Nov 6, 2018
ee821b4
test: fix order in assert.strictEqual to actual, expected
Nov 6, 2018
56edd9f
test: fix the arguments order in `assert.strictEqual`
michael-zucker Nov 7, 2018
52f3ecc
test: fix the arguments order in `assert.strictEqual`
michael-zucker Nov 7, 2018
042e379
doc: fix some inconsistent use of hostname
sam-github Nov 6, 2018
81ff70d
test: switch order of strictEqual arguments
jpolack Nov 6, 2018
b264d7e
test: change arguments order in strictEqual
Paul-Isache Nov 6, 2018
f657e40
buffer: fix writeUInt16BE range check
mscdex Nov 6, 2018
c2f7f26
test: fix order of arguments in test-delayed-require assertion
reineke-fox Nov 6, 2018
d6f6c62
test: add error code tests in dgram test
MarkArranz Nov 7, 2018
0056c08
url: make the context non-enumerable
joyeecheung Nov 7, 2018
8c59ebb
benchmark: support more options in startup benchmark
joyeecheung Nov 6, 2018
d35739d
doc: describe what tls servername is for
sam-github Nov 7, 2018
2de3376
src: reuse std::make_unique
alyssaq Nov 6, 2018
64f7622
test: fix NewFromUtf8 compiler warning
danbev Nov 7, 2018
bb871c9
test: add coverage for escape key switch case
Nov 6, 2018
f50beda
test: add test for 'ERR_INVALID_CALLBACK'
razvanbh Nov 7, 2018
802d4b8
doc: fix code examples in stream.md
grantcarthew Nov 5, 2018
5dec2ca
tracing: fix static destruction order issue
addaleax Nov 6, 2018
9f023c4
test: fix order of arguments in assert.strictEqual
eiskalteschatten Nov 6, 2018
36861ad
test: add coverage for systemerror set name
amer8 Nov 6, 2018
899245f
test: add test for strictDeepEqual
nikita-malyschkin Nov 7, 2018
8209ecd
test: use assert.strictEqual instead of assert.equal
prog1dev Oct 15, 2018
a3289bd
test: fix uses of deprecated assert.fail with multiple args
prog1dev Oct 15, 2018
c0dad7a
doc: edit BUILDING.md
Trott Nov 8, 2018
ae2f959
test: move test-fs-watch-system-limit from sequential to pummel
mmmscott Oct 16, 2018
ee09fe3
lib: combine contructor, tag, Object into a function
Paul-Isache Nov 6, 2018
8e7f075
build,tools: update make-v8.sh for s390x
refack Oct 23, 2018
7d2bcf9
test: use NULL instead of 0 in common.h
danbev Nov 5, 2018
08c9e2b
net: simplify Socket.prototype._final
addaleax Nov 4, 2018
e9ca5bf
test: increase coverage internal readline
cyanic-webdesign Nov 6, 2018
db709c5
net: partially revert "simplify Socket.prototype._final"
addaleax Nov 10, 2018
f41eddc
stream: make `.destroy()` interact better with write queue
addaleax Nov 3, 2018
7ba4b9f
test: replacing fixture directory with temp
saurabhSiddhu Nov 4, 2018
043c70a
build: lint commit message in separate Travis job
richardlau Nov 8, 2018
c777ce7
test : compare objects not identical by reference
meelie Nov 6, 2018
07c6db9
test: fix assert.strictEqual argument order
mcqj Nov 6, 2018
3f7d7da
test: fix arguments order in assert.strictEqual()
ulisesantana Nov 6, 2018
e6ae331
doc: add oyyd to collaborators
oyyd Nov 11, 2018
808355e
test: add test for deepEqual Float32Array
yehiyam Nov 6, 2018
b23b6a4
test: add test case for completion bash flag
Nov 6, 2018
0d65b4b
doc: correct async_hooks sample outputs
Flarna Nov 2, 2018
7483c5b
test: correct order of args in assert.strictEqual()
Nov 6, 2018
a4037bc
doc: add links to Stream section
dmitigr Nov 11, 2018
d52709f
console: cover .assert with single argument
mroderick Nov 6, 2018
6805908
doc: update fs.open() changes record for optional 'flags'
rvagg Nov 8, 2018
77c2cc9
test: fix strictEqual argument order
KaskMartin Nov 6, 2018
13fead6
test: fix expectation in test-bootstrap-modules
ofrobots Dec 18, 2018
a5727ff
doc: sort bottom-of-file markdown links
sam-github Nov 27, 2018
57ccaf6
doc: correct async_hooks resource names
Flarna Nov 27, 2018
844bd62
deps: V8: cherry-pick 52a9e67
ofrobots Dec 14, 2018
c5140f5
http: fix regression of binary upgrade response body
mcollina Dec 14, 2018
5f649f6
test: move benchmark tests out of main test suite
Trott Nov 9, 2018
dc79fea
deps: cherry-pick http_parser_set_max_header_size
cjihrig Nov 29, 2018
82ad2c2
src: add kUInteger parsing
mcollina Dec 18, 2018
d21ff98
cli: add --max-http-header-size flag
cjihrig Dec 3, 2018
b7bb114
test: remove magic numbers in test-gc-http-client-onerror
Trott Dec 10, 2018
f30d169
doc: describe current HTTP header size limit
sam-github Nov 28, 2018
17f4208
http: add maxHeaderSize property
cjihrig Dec 6, 2018
47364b7
test: mark test-repl-envvars as flaky on AIX
MylesBorins Dec 26, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 8 additions & 4 deletions .travis.yml
Expand Up @@ -4,17 +4,21 @@ cache: ccache
os: linux
matrix:
include:
- name: "First commit message adheres to guidelines at <a href=\"https://goo.gl/p2fr5Q\">https://goo.gl/p2fr5Q</a>"
if: type = pull_request
language: node_js
node_js: "node"
script:
- if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
bash -x tools/lint-pr-commit-message.sh ${TRAVIS_PULL_REQUEST};
fi
- name: "Linter"
language: node_js
node_js: "node"
env:
- NODE=$(which node)
script:
- make lint
# Lint the first commit in the PR.
- if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
bash tools/lint-pr-commit-message.sh ${TRAVIS_PULL_REQUEST} || true;
fi
- name: "Test Suite"
addons:
apt:
Expand Down
26 changes: 10 additions & 16 deletions BUILDING.md
Expand Up @@ -69,8 +69,7 @@ There are three support tiers:
### Supported platforms

The community does not build or test against end-of-life distributions (EoL).
Thus, we do not recommend that you use Node.js on end-of-life or unsupported
platforms in production.
For production applications, run Node.js on supported platforms only.

| System | Support type | Version | Architectures | Notes |
|--------------|--------------|----------------------------------|----------------------|------------------|
Expand Down Expand Up @@ -134,21 +133,20 @@ OpenSSL-1.1.0 requires the following assembler version for use of asm
support on x86_64 and ia32.

* gas (GNU assembler) version 2.23 or higher
* xcode version 5.0 or higher
* Xcode version 5.0 or higher
* llvm version 3.3 or higher
* nasm version 2.10 or higher in Windows

Otherwise `configure` will fail with an error. This can be avoided by
either providing a newer assembler as per the list above or by
using the `--openssl-no-asm` flag.
If compiling without one of the above, use `configure` with the
`--openssl-no-asm` flag. Otherwise, `configure` will fail.

The forthcoming OpenSSL-1.1.1 will have different requirements. Please refer to
https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_ia32cap.html for details.

## Building Node.js on supported platforms

*Note:* All prerequisites can be easily installed by following
[this bootstrapping guide](https://github.com/nodejs/node/blob/master/tools/bootstrap/README.md).
The [bootstrapping guide](https://github.com/nodejs/node/blob/master/tools/bootstrap/README.md)
explains how to install all prerequisites.

### Unix/macOS

Expand All @@ -159,7 +157,7 @@ The forthcoming OpenSSL-1.1.1 will have different requirements. Please refer to
* Python 2.6 or 2.7
* GNU Make 3.81 or newer

On macOS, you will need to install the `Xcode Command Line Tools` by running
On macOS, install the `Xcode Command Line Tools` by running
`xcode-select --install`. Alternatively, if you already have the full Xcode
installed, you can find them under the menu `Xcode -> Open Developer Tool ->
More Developer Tools...`. This step will install `clang`, `clang++`, and
Expand All @@ -180,13 +178,9 @@ $ ./configure
$ make -j4
```

Running `make` with the `-j4` flag will cause it to run 4 compilation jobs
concurrently which may significantly reduce build time. The number after `-j`
can be changed to best suit the number of processor cores on your machine. If
you run into problems running `make` with concurrency, try running it without
the `-j4` flag. See the
[GNU Make Documentation](https://www.gnu.org/software/make/manual/html_node/Parallel.html)
for more information.
The `-j4` option will cause `make` to run 4 simultaneous compilation jobs which
may reduce build time. For more information, see the
[GNU Make Documentation](https://www.gnu.org/software/make/manual/html_node/Parallel.html).

Note that the above requires that `python` resolve to Python 2.6 or 2.7
and not a newer version.
Expand Down
39 changes: 21 additions & 18 deletions Makefile
Expand Up @@ -270,7 +270,7 @@ v8:
tools/make-v8.sh $(V8_ARCH).$(BUILDTYPE_LOWER) $(V8_BUILD_OPTIONS)

.PHONY: jstest
jstest: build-addons build-addons-napi bench-addons-build ## Runs addon tests and JS tests
jstest: build-addons build-addons-napi ## Runs addon tests and JS tests
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \
--skip-tests=$(CI_SKIP_TESTS) \
$(CI_JS_SUITES) \
Expand Down Expand Up @@ -332,16 +332,16 @@ ifeq ($(OSTYPE),aix)
DOCBUILDSTAMP_PREREQS := $(DOCBUILDSTAMP_PREREQS) out/$(BUILDTYPE)/node.exp
endif

node_use_openssl = $(shell $(call available-node,"-p" \
"process.versions.openssl != undefined"))
node_use_openssl = $(call available-node,"-p" \
"process.versions.openssl != undefined")
test/addons/.docbuildstamp: $(DOCBUILDSTAMP_PREREQS) tools/doc/node_modules
ifeq ($(node_use_openssl),true)
$(RM) -r test/addons/??_*/
[ -x $(NODE) ] && $(NODE) $< || node $<
touch $@
else
@echo "Skipping .docbuildstamp (no crypto)"
endif
@if [ "$(shell $(node_use_openssl))" != "true" ]; then \
echo "Skipping .docbuildstamp (no crypto)"; \
else \
$(RM) -r test/addons/??_*/; \
[ -x $(NODE) ] && $(NODE) $< || node $< ; \
touch $@; \
fi

ADDONS_BINDING_GYPS := \
$(filter-out test/addons/??_*/binding.gyp, \
Expand Down Expand Up @@ -414,7 +414,7 @@ clear-stalled:
echo $${PS_OUT} | xargs kill -9; \
fi

test-build: | all build-addons build-addons-napi bench-addons-build
test-build: | all build-addons build-addons-napi

test-build-addons-napi: all build-addons-napi

Expand Down Expand Up @@ -455,7 +455,7 @@ test-ci-js: | clear-stalled
.PHONY: test-ci
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
test-ci: LOGLEVEL := info
test-ci: | clear-stalled build-addons build-addons-napi doc-only bench-addons-build
test-ci: | clear-stalled build-addons build-addons-napi doc-only
out/Release/cctest --gtest_output=tap:cctest.tap
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
Expand Down Expand Up @@ -496,7 +496,7 @@ test-debug: test-build
test-message: test-build
$(PYTHON) tools/test.py $(PARALLEL_ARGS) message

test-simple: | cctest bench-addons-build # Depends on 'all'.
test-simple: | cctest # Depends on 'all'.
$(PYTHON) tools/test.py $(PARALLEL_ARGS) parallel sequential

test-pummel: all
Expand All @@ -509,6 +509,9 @@ test-node-inspect: $(NODE_EXE)
USE_EMBEDDED_NODE_INSPECT=1 $(NODE) tools/test-npm-package \
--install deps/node-inspect test

test-benchmark: | bench-addons-build
$(PYTHON) tools/test.py $(PARALLEL_ARGS) benchmark

test-tick-processor: all
$(PYTHON) tools/test.py $(PARALLEL_ARGS) tick-processor

Expand Down Expand Up @@ -609,11 +612,11 @@ apidocs_json = $(addprefix out/,$(apidoc_sources:.md=.json))
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))

tools/doc/node_modules: tools/doc/package.json
ifeq ($(node_use_openssl),true)
cd tools/doc && $(call available-node,$(run-npm-ci))
else
@echo "Skipping tools/doc/node_modules (no crypto)"
endif
@if [ "$(shell $(node_use_openssl))" != "true" ]; then \
echo "Skipping tools/doc/node_modules (no crypto)"; \
else \
cd tools/doc && $(call available-node,$(run-npm-ci)) \
fi

.PHONY: doc-only
doc-only: tools/doc/node_modules \
Expand Down
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -401,6 +401,8 @@ For information about the governance of the Node.js project, see
**Alexis Campailla** &lt;orangemocha@nodejs.org&gt;
* [othiym23](https://github.com/othiym23) -
**Forrest L Norvell** &lt;ogd@aoaioxxysz.net&gt; (he/him)
* [oyyd](https://github.com/oyyd) -
**Ouyang Yadong** &lt;oyydoibh@gmail.com&gt; (he/him)
* [pmq20](https://github.com/pmq20) -
**Minqi Pan** &lt;pmq2001@gmail.com&gt;
* [princejwesley](https://github.com/princejwesley) -
Expand Down
13 changes: 13 additions & 0 deletions benchmark/fixtures/require-cachable.js
@@ -0,0 +1,13 @@
'use strict';

const list = require('internal/bootstrap/cache');
const {
isMainThread
} = require('worker_threads');

for (const key of list.cachableBuiltins) {
if (!isMainThread && key === 'trace_events') {
continue;
}
require(key);
}
88 changes: 64 additions & 24 deletions benchmark/misc/startup.js
@@ -1,36 +1,76 @@
'use strict';
const common = require('../common.js');
const spawn = require('child_process').spawn;
const { spawn } = require('child_process');
const path = require('path');
const emptyJsFile = path.resolve(__dirname, '../../test/fixtures/semicolon.js');

const bench = common.createBenchmark(startNode, {
dur: [1]
let Worker; // Lazy loaded in main

const bench = common.createBenchmark(main, {
dur: [1],
script: ['benchmark/fixtures/require-cachable', 'test/fixtures/semicolon'],
mode: ['process', 'worker']
}, {
flags: ['--expose-internals', '--experimental-worker'] // for workers
});

function startNode({ dur }) {
var go = true;
var starts = 0;
function spawnProcess(script) {
const cmd = process.execPath || process.argv[0];
const argv = ['--expose-internals', script];
return spawn(cmd, argv);
}

function spawnWorker(script) {
return new Worker(script, { stderr: true, stdout: true });
}

function start(state, script, bench, getNode) {
const node = getNode(script);
let stdout = '';
let stderr = '';

node.stdout.on('data', (data) => {
stdout += data;
});

node.stderr.on('data', (data) => {
stderr += data;
});

node.on('exit', (code) => {
if (code !== 0) {
console.error('------ stdout ------');
console.error(stdout);
console.error('------ stderr ------');
console.error(stderr);
throw new Error(`Error during node startup, exit code ${code}`);
}
state.throughput++;

if (state.go) {
start(state, script, bench, getNode);
} else {
bench.end(state.throughput);
}
});
}

function main({ dur, script, mode }) {
const state = {
go: true,
throughput: 0
};

setTimeout(function() {
go = false;
state.go = false;
}, dur * 1000);

bench.start();
start();

function start() {
const node = spawn(process.execPath || process.argv[0], [emptyJsFile]);
node.on('exit', function(exitCode) {
if (exitCode !== 0) {
throw new Error('Error during node startup');
}
starts++;

if (go)
start();
else
bench.end(starts);
});
script = path.resolve(__dirname, '../../', `${script}.js`);
if (mode === 'worker') {
Worker = require('worker_threads').Worker;
bench.start();
start(state, script, bench, spawnWorker);
} else {
bench.start();
start(state, script, bench, spawnProcess);
}
}
2 changes: 1 addition & 1 deletion common.gypi
Expand Up @@ -33,7 +33,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.45',
'v8_embedder_string': '-node.46',

# Enable disassembler for `--print-code` v8 options
'v8_enable_disassembler': 1,
Expand Down
15 changes: 11 additions & 4 deletions deps/http_parser/http_parser.c
Expand Up @@ -25,6 +25,8 @@
#include <string.h>
#include <limits.h>

static uint32_t max_header_size = HTTP_MAX_HEADER_SIZE;

#ifndef ULLONG_MAX
# define ULLONG_MAX ((uint64_t) -1) /* 2^64-1 */
#endif
Expand Down Expand Up @@ -137,20 +139,20 @@ do { \
} while (0)

/* Don't allow the total size of the HTTP headers (including the status
* line) to exceed HTTP_MAX_HEADER_SIZE. This check is here to protect
* line) to exceed max_header_size. This check is here to protect
* embedders against denial-of-service attacks where the attacker feeds
* us a never-ending header that the embedder keeps buffering.
*
* This check is arguably the responsibility of embedders but we're doing
* it on the embedder's behalf because most won't bother and this way we
* make the web a little safer. HTTP_MAX_HEADER_SIZE is still far bigger
* make the web a little safer. max_header_size is still far bigger
* than any reasonable request or response so this should never affect
* day-to-day operation.
*/
#define COUNT_HEADER_SIZE(V) \
do { \
parser->nread += (V); \
if (UNLIKELY(parser->nread > (HTTP_MAX_HEADER_SIZE))) { \
if (UNLIKELY(parser->nread > max_header_size)) { \
SET_ERRNO(HPE_HEADER_OVERFLOW); \
goto error; \
} \
Expand Down Expand Up @@ -1471,7 +1473,7 @@ size_t http_parser_execute (http_parser *parser,
const char* p_lf;
size_t limit = data + len - p;

limit = MIN(limit, HTTP_MAX_HEADER_SIZE);
limit = MIN(limit, max_header_size);

p_cr = (const char*) memchr(p, CR, limit);
p_lf = (const char*) memchr(p, LF, limit);
Expand Down Expand Up @@ -2437,3 +2439,8 @@ http_parser_version(void) {
HTTP_PARSER_VERSION_MINOR * 0x00100 |
HTTP_PARSER_VERSION_PATCH * 0x00001;
}

void
http_parser_set_max_header_size(uint32_t size) {
max_header_size = size;
}
3 changes: 3 additions & 0 deletions deps/http_parser/http_parser.h
Expand Up @@ -427,6 +427,9 @@ void http_parser_pause(http_parser *parser, int paused);
/* Checks if this is the final chunk of the body. */
int http_body_is_final(const http_parser *parser);

/* Change the maximum header size provided at compile time. */
void http_parser_set_max_header_size(uint32_t size);

#ifdef __cplusplus
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion deps/v8/src/compiler/js-operator.cc
Expand Up @@ -598,7 +598,7 @@ CompareOperationHint CompareOperationHintOf(const Operator* op) {
V(CreateKeyValueArray, Operator::kEliminatable, 2, 1) \
V(CreatePromise, Operator::kEliminatable, 0, 1) \
V(CreateTypedArray, Operator::kNoProperties, 5, 1) \
V(CreateObject, Operator::kNoWrite, 1, 1) \
V(CreateObject, Operator::kNoProperties, 1, 1) \
V(ObjectIsArray, Operator::kNoProperties, 1, 1) \
V(HasProperty, Operator::kNoProperties, 2, 1) \
V(HasInPrototypeChain, Operator::kNoProperties, 2, 1) \
Expand Down