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

test/parallel/test-v8-serdes: You probably don't want to test the exact binary V8 ValueSerializer produces #41519

Closed
marjakh opened this issue Jan 14, 2022 · 1 comment
Labels
test Issues and PRs related to the tests. v8 module Issues and PRs related to the "v8" subsystem.

Comments

@marjakh
Copy link
Contributor

marjakh commented Jan 14, 2022

Version

No response

Platform

No response

Subsystem

No response

What steps will reproduce the bug?

The test has this subtest:

{
  const buf = Buffer.from('ff0d6f2203666f6f5e007b01', 'hex');

  const des = new v8.DefaultDeserializer(buf);
  des.readHeader();

  const ser = new v8.DefaultSerializer();
  ser.writeHeader();

  ser.writeValue(des.readValue());

  assert.deepStrictEqual(buf, ser.releaseBuffer()); <<< here
  assert.strictEqual(des.getWireFormatVersion(), 0x0d);
}

Where you're asserting that V8's ValueSerializer produces exactly this buffer when you serialize a TypedArray.

Asserting this prevents V8 from upgrading the ValueSerializer format and is generally not very useful.

The guarantee we have though is that you can still deserialize this exact data and you'll get a TypedArray, since the format is backwards-compatible.

What we don't guarantee is that if you serialize the TypedArray again, you'll get this exact buffer back. Note that the buffer contains the ValueSerializer version number (the first 0d right after ff). We don't guarantee that we don't ever upgrade the version.

How often does it reproduce? Is there a required condition?

No response

What is the expected behavior?

No response

What do you see instead?

(See above)

Additional information

No response

@marjakh
Copy link
Contributor Author

marjakh commented Jan 14, 2022

cc @addaleax who added this test

@VoltrexKeyva VoltrexKeyva added the test Issues and PRs related to the tests. label Jan 15, 2022
@targos targos added the v8 module Issues and PRs related to the "v8" subsystem. label Feb 24, 2022
targos added a commit to targos/node that referenced this issue Feb 24, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs#41519
targos added a commit that referenced this issue Feb 24, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: #41519
targos added a commit that referenced this issue Feb 24, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: #41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Feb 24, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Feb 25, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
targos added a commit that referenced this issue Feb 25, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: #41519
targos added a commit that referenced this issue Feb 25, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: #41519
targos added a commit to targos/node that referenced this issue Feb 25, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Feb 25, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Feb 26, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Feb 27, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Feb 28, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 1, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
targos added a commit that referenced this issue Mar 1, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: #41519
targos added a commit that referenced this issue Mar 1, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: #41519
targos added a commit to targos/node that referenced this issue Mar 1, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 2, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 3, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 4, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 5, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 6, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 7, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
targos added a commit to targos/node that referenced this issue Mar 7, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 8, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 9, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 10, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: nodejs/node#41519
targos added a commit that referenced this issue Mar 12, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Closes: #41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 28, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 29, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 30, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Mar 31, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
targos added a commit to targos/node that referenced this issue Mar 31, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 1, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 2, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 3, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 4, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 5, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
targos added a commit that referenced this issue Apr 5, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: #41519
targos added a commit to targos/node that referenced this issue Apr 5, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
targos added a commit to targos/node that referenced this issue Apr 5, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 6, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 7, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 8, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
targos added a commit to targos/node that referenced this issue Apr 8, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
targos added a commit that referenced this issue Apr 9, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: #41519
targos added a commit to targos/node that referenced this issue Apr 9, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 9, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 10, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 11, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
targos added a commit to targos/node that referenced this issue Apr 12, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
targos added a commit that referenced this issue Apr 12, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: #41519
targos added a commit to targos/node that referenced this issue Apr 12, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519
nodejs-github-bot pushed a commit to nodejs/node-v8 that referenced this issue Apr 12, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs/node#41519
@targos targos closed this as completed in 0854fce Apr 12, 2022
vmoroz pushed a commit to vmoroz/node that referenced this issue Apr 13, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519

PR-URL: nodejs#42657
Reviewed-By: Darshan Sen <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
xtx1130 pushed a commit to xtx1130/node that referenced this issue Apr 25, 2022
V8 changed the serialization format so we cannot expect that a value
serialized by an old version can be reserialized to the same bytes.
Change the test to expect that deserialization of the old value still
works.

Add another test which is expected to fail when the format changes so
that we are aware when it happens and can call it out in the release
notes.

Closes: nodejs#41519

PR-URL: nodejs#42657
Reviewed-By: Darshan Sen <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
test Issues and PRs related to the tests. v8 module Issues and PRs related to the "v8" subsystem.
Projects
None yet
Development

No branches or pull requests

3 participants