@Test
  public void testReadEssentialData() throws IOException, ClassNotFoundException {

    final MemberDataBuilderImpl builder = MemberDataBuilderImpl.newBuilder(null, null);
    builder.setVersionOrdinal(unknownVersionOrdinal);
    final MemberData member = builder.build();

    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    final DataOutput dataOutput = new DataOutputStream(baos);
    final DSFIDSerializer dsfidSerializer = new DSFIDSerializerFactory().create();
    final SerializationContext serializationContext =
        dsfidSerializer.createSerializationContext(dataOutput);
    member.writeEssentialData(dataOutput, serializationContext);

    final ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
    final DataInputStream stream = new DataInputStream(bais);
    final DeserializationContext deserializationContext =
        dsfidSerializer.createDeserializationContext(stream);
    final DataInput dataInput = new DataInputStream(bais);
    final GMSMemberData newMember = new GMSMemberData();
    newMember.readEssentialData(dataInput, deserializationContext);

    validate(newMember);
  }
MemberData has to be able to hold an unknown version ordinal since, during a rolling upgrade,
we may receive a MemberData from a member running a future version of the product.
geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberDataVersionJUnitTest.java