Search in sources :

Example 16 with SerializableDataOutputStream

use of com.swirlds.common.io.SerializableDataOutputStream in project hedera-services by hashgraph.

the class MerkleSpecialFilesTest method liveFireSerdeWorksWithEmpty.

@Test
void liveFireSerdeWorksWithEmpty() throws IOException, ConstructableRegistryException {
    final var baos = new ByteArrayOutputStream();
    final var dos = new SerializableDataOutputStream(baos);
    ConstructableRegistry.registerConstructable(new ClassConstructorPair(MerkleSpecialFiles.class, MerkleSpecialFiles::new));
    subject.serialize(dos);
    dos.flush();
    final var bytes = baos.toByteArray();
    final var bais = new ByteArrayInputStream(bytes);
    final var din = new SerializableDataInputStream(bais);
    final var newSubject = new MerkleSpecialFiles();
    newSubject.deserialize(din, MerkleSpecialFiles.CURRENT_VERSION);
    assertTrue(newSubject.getFileContents().isEmpty(), "Deserialized instance should be empty");
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) SerializableDataOutputStream(com.swirlds.common.io.SerializableDataOutputStream) SerializableDataInputStream(com.swirlds.common.io.SerializableDataInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ClassConstructorPair(com.swirlds.common.constructable.ClassConstructorPair) Test(org.junit.jupiter.api.Test)

Example 17 with SerializableDataOutputStream

use of com.swirlds.common.io.SerializableDataOutputStream in project hedera-services by hashgraph.

the class MerkleSpecialFilesTest method liveFireSerdeWorksWithNonEmpty.

@Test
void liveFireSerdeWorksWithNonEmpty() throws IOException, ConstructableRegistryException {
    final var baos = new ByteArrayOutputStream();
    final var dos = new SerializableDataOutputStream(baos);
    ConstructableRegistry.registerConstructable(new ClassConstructorPair(MerkleSpecialFiles.class, MerkleSpecialFiles::new));
    ConstructableRegistry.registerConstructable(new ClassConstructorPair(FCQueue.class, FCQueue::new));
    ConstructableRegistry.registerConstructable(new ClassConstructorPair(FilePart.class, FilePart::new));
    subject.update(fid, Arrays.copyOfRange(stuff, 0, stuff.length / 2));
    subject.update(secondFid, Arrays.copyOfRange(stuff, stuff.length / 2, stuff.length));
    subject.serialize(dos);
    dos.flush();
    final var bytes = baos.toByteArray();
    final var bais = new ByteArrayInputStream(bytes);
    final var din = new SerializableDataInputStream(bais);
    final var newSubject = new MerkleSpecialFiles();
    newSubject.deserialize(din, MerkleSpecialFiles.CURRENT_VERSION);
    assertArrayEquals(subject.get(fid), newSubject.get(fid), "Deserialized contents should match for first file");
    assertArrayEquals(subject.get(secondFid), newSubject.get(secondFid), "Deserialized contents should match for second file");
}
Also used : FCQueue(com.swirlds.fcqueue.FCQueue) ByteArrayInputStream(java.io.ByteArrayInputStream) SerializableDataOutputStream(com.swirlds.common.io.SerializableDataOutputStream) SerializableDataInputStream(com.swirlds.common.io.SerializableDataInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) FilePart(com.hedera.services.state.merkle.internals.FilePart) ClassConstructorPair(com.swirlds.common.constructable.ClassConstructorPair) Test(org.junit.jupiter.api.Test)

Example 18 with SerializableDataOutputStream

use of com.swirlds.common.io.SerializableDataOutputStream in project hedera-services by hashgraph.

the class MerkleUniqueTokenTest method liveFireSerdeWorks.

@Test
void liveFireSerdeWorks() throws IOException, ConstructableRegistryException {
    // setup:
    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    final var dos = new SerializableDataOutputStream(baos);
    ConstructableRegistry.registerConstructable(new ClassConstructorPair(MerkleUniqueToken.class, MerkleUniqueToken::new));
    ConstructableRegistry.registerConstructable(new ClassConstructorPair(EntityId.class, EntityId::new));
    // given:
    subject.serialize(dos);
    dos.flush();
    // and:
    final var bytes = baos.toByteArray();
    final ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    final var din = new SerializableDataInputStream(bais);
    // when:
    final var newSubject = new MerkleUniqueToken();
    newSubject.deserialize(din, MerkleToken.CURRENT_VERSION);
    // then:
    assertEquals(subject, newSubject);
}
Also used : EntityId(com.hedera.services.state.submerkle.EntityId) ByteArrayInputStream(java.io.ByteArrayInputStream) SerializableDataOutputStream(com.swirlds.common.io.SerializableDataOutputStream) SerializableDataInputStream(com.swirlds.common.io.SerializableDataInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ClassConstructorPair(com.swirlds.common.constructable.ClassConstructorPair) Test(org.junit.jupiter.api.Test)

Aggregations

SerializableDataOutputStream (com.swirlds.common.io.SerializableDataOutputStream)18 Test (org.junit.jupiter.api.Test)16 SerializableDataInputStream (com.swirlds.common.io.SerializableDataInputStream)15 ByteArrayOutputStream (java.io.ByteArrayOutputStream)15 ByteArrayInputStream (java.io.ByteArrayInputStream)14 ClassConstructorPair (com.swirlds.common.constructable.ClassConstructorPair)9 DomainSerdes (com.hedera.services.state.serdes.DomainSerdes)2 EntityId (com.hedera.services.state.submerkle.EntityId)2 JKeySerializer (com.hedera.services.legacy.core.jproto.JKeySerializer)1 FilePart (com.hedera.services.state.merkle.internals.FilePart)1 FcCustomFee (com.hedera.services.state.submerkle.FcCustomFee)1 Hash (com.swirlds.common.crypto.Hash)1 FCQueue (com.swirlds.fcqueue.FCQueue)1 IOException (java.io.IOException)1 UncheckedIOException (java.io.UncheckedIOException)1 InOrder (org.mockito.InOrder)1