Skip to content

Commit 06d2a98

Browse files
committed
test: 💍 add full encoder to roundtrip tests
1 parent 6fbbdcf commit 06d2a98

File tree

1 file changed

+33
-17
lines changed

1 file changed

+33
-17
lines changed

src/nfs/v3/__tests__/roundtrip.spec.ts

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {RmRecordDecoder, RmRecordEncoder} from '../../../rm';
22
import {RpcCallMessage, RpcMessageDecoder, RpcMessageEncoder} from '../../../rpc';
33
import {Nfsv3Decoder} from '../Nfsv3Decoder';
44
import {Nfsv3Encoder} from '../Nfsv3Encoder';
5+
import {FullNfsv3Encoder} from '../FullNfsv3Encoder';
56
import * as msg from '../messages';
67
import {nfsv3} from './fixtures';
78

@@ -11,8 +12,9 @@ const rpcDecoder = new RpcMessageDecoder();
1112
const rpcEncoder = new RpcMessageEncoder();
1213
const nfsDecoder = new Nfsv3Decoder();
1314
const nfsEncoder = new Nfsv3Encoder();
15+
const fullNfsEncoder = new FullNfsv3Encoder();
1416

15-
const assertCallRoundtrip = (hex: string): void => {
17+
const assertCallRoundtrip = (hex: string, fullEncoder: boolean = false): void => {
1618
const originalHex = hex.toLowerCase();
1719
const buffer = Buffer.from(originalHex, 'hex');
1820
rmDecoder.push(new Uint8Array(buffer));
@@ -23,28 +25,40 @@ const assertCallRoundtrip = (hex: string): void => {
2325
const rpcMessage = rpcDecoder.decodeMessage(rmRecord);
2426
if (!(rpcMessage instanceof RpcCallMessage)) throw new Error(`Expected RPC Call message`);
2527
const nfsRequest = nfsDecoder.decodeMessage(rpcMessage.params!, rpcMessage.proc, true) as msg.Nfsv3Request;
26-
const nfsEncoded = nfsEncoder.encodeMessage(nfsRequest, rpcMessage.proc, true);
27-
const rpcEncoded = rpcEncoder.encodeCall(
28-
rpcMessage.xid,
29-
rpcMessage.prog,
30-
rpcMessage.vers,
31-
rpcMessage.proc,
32-
rpcMessage.cred,
33-
rpcMessage.verf,
34-
nfsEncoded,
35-
);
36-
const rmEncoded = rmEncoder.encodeRecord(rpcEncoded);
28+
let rmEncoded: Uint8Array;
29+
if (fullEncoder) {
30+
rmEncoded = fullNfsEncoder.encodeCall(
31+
rpcMessage.xid,
32+
rpcMessage.proc,
33+
rpcMessage.cred,
34+
rpcMessage.verf,
35+
nfsRequest,
36+
);
37+
} else {
38+
const nfsEncoded = nfsEncoder.encodeMessage(nfsRequest, rpcMessage.proc, true);
39+
const rpcEncoded = rpcEncoder.encodeCall(
40+
rpcMessage.xid,
41+
rpcMessage.prog,
42+
rpcMessage.vers,
43+
rpcMessage.proc,
44+
rpcMessage.cred,
45+
rpcMessage.verf,
46+
nfsEncoded,
47+
);
48+
rmEncoded = rmEncoder.encodeRecord(rpcEncoded);
49+
}
3750
const encodedHex = Buffer.from(rmEncoded).toString('hex').toLowerCase();
3851
totalEncodedHex += encodedHex;
3952
}
4053
expect(totalEncodedHex).toBe(originalHex);
4154
};
4255

4356
test('assert roundtrip of Call messages', () => {
44-
assertCallRoundtrip(nfsv3.GETATTR.Call[0]);
45-
assertCallRoundtrip(nfsv3.GETATTR.Call[0] + nfsv3.ACCESS.Call[0]);
46-
assertCallRoundtrip(
47-
nfsv3.ACCESS.Call[0] +
57+
assertCallRoundtrip(nfsv3.GETATTR.Call[0], false);
58+
assertCallRoundtrip(nfsv3.GETATTR.Call[0], true);
59+
assertCallRoundtrip(nfsv3.GETATTR.Call[0] + nfsv3.ACCESS.Call[0], false);
60+
assertCallRoundtrip(nfsv3.GETATTR.Call[0] + nfsv3.ACCESS.Call[0], true);
61+
const stream = nfsv3.ACCESS.Call[0] +
4862
nfsv3.GETATTR.Call[0] +
4963
nfsv3.COMMIT.Call[0] +
5064
nfsv3.RMDIR.Call[0] +
@@ -54,5 +68,7 @@ test('assert roundtrip of Call messages', () => {
5468
nfsv3.REMOVE.Call[0] +
5569
nfsv3.CREATE.Call[0] +
5670
nfsv3.CREATE.Call[0] +
57-
nfsv3.LOOKUP.Call[0]);
71+
nfsv3.LOOKUP.Call[0];
72+
assertCallRoundtrip(stream, false);
73+
assertCallRoundtrip(stream, true);
5874
});

0 commit comments

Comments
 (0)