diff options
author | Ali Ijaz Sheikh <ofrobots@google.com> | 2016-04-05 22:22:42 -0700 |
---|---|---|
committer | Ali Ijaz Sheikh <ofrobots@google.com> | 2016-04-06 06:22:40 -0700 |
commit | b73e1b3c5af7675cb1fcf754bc574d803df2332d (patch) | |
tree | 6eeef5c5b21f312c50c85a055260ea3f4a653b60 /test/addons/stringbytes-external-exceed-max | |
parent | 82d57d39ae04609c53ed2692b2a220edfdcb36e9 (diff) | |
download | android-node-v8-b73e1b3c5af7675cb1fcf754bc574d803df2332d.tar.gz android-node-v8-b73e1b3c5af7675cb1fcf754bc574d803df2332d.tar.bz2 android-node-v8-b73e1b3c5af7675cb1fcf754bc574d803df2332d.zip |
test: fix another flaky stringbytes test
Avoid depending on precise timing of when an object will be collected
by GC. This test was missed by #6039 as it happened to be in a
different directory than the rest.
Ref: https://github.com/nodejs/node/pull/6039
PR-URL: https://github.com/nodejs/node/pull/6073
Reviewed-By: Trott - Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'test/addons/stringbytes-external-exceed-max')
-rw-r--r-- | test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js new file mode 100644 index 0000000000..9903d6787a --- /dev/null +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js @@ -0,0 +1,34 @@ +'use strict'; + +const common = require('../../common'); +const binding = require('./build/Release/binding'); +const assert = require('assert'); + +// v8 fails silently if string length > v8::String::kMaxLength +// v8::String::kMaxLength defined in v8.h +const kStringMaxLength = process.binding('buffer').kStringMaxLength; + +const skipMessage = + '1..0 # Skipped: intensive toString tests due to memory confinements'; +if (!common.enoughTestMem) { + console.log(skipMessage); + return; +} + +try { + var buf = Buffer.allocUnsafe(kStringMaxLength); +} catch (e) { + // If the exception is not due to memory confinement then rethrow it. + if (e.message !== 'Array buffer allocation failed') throw (e); + console.log(skipMessage); + return; +} + +// Ensure we have enough memory available for future allocations to succeed. +if (!binding.ensureAllocation(2 * kStringMaxLength)) { + console.log(skipMessage); + return; +} + +const maxString = buf.toString('binary'); +assert.equal(maxString.length, kStringMaxLength); |