summaryrefslogtreecommitdiff
path: root/test/addons/stringbytes-external-exceed-max
diff options
context:
space:
mode:
authorAli Ijaz Sheikh <ofrobots@google.com>2016-04-05 22:22:42 -0700
committerAli Ijaz Sheikh <ofrobots@google.com>2016-04-06 06:22:40 -0700
commitb73e1b3c5af7675cb1fcf754bc574d803df2332d (patch)
tree6eeef5c5b21f312c50c85a055260ea3f4a653b60 /test/addons/stringbytes-external-exceed-max
parent82d57d39ae04609c53ed2692b2a220edfdcb36e9 (diff)
downloadandroid-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.js34
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);