Skip to content

Commit

Permalink
Adding Cloning tests for ClientWorker + not cloning Instant and Duration
Browse files Browse the repository at this point in the history
  • Loading branch information
emichael committed Feb 1, 2024
1 parent a2f9c03 commit a292324
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
26 changes: 26 additions & 0 deletions framework/tst-self/dslabs/framework/testing/utils/CloningTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import dslabs.framework.Message;
import dslabs.framework.Node;
import dslabs.framework.Result;
import dslabs.framework.testing.ClientWorker;
import dslabs.framework.testing.Event;
import dslabs.framework.testing.LocalAddress;
import dslabs.framework.testing.MessageEnvelope;
Expand Down Expand Up @@ -126,6 +127,11 @@ public void cloning() {
clonesEqual(new MessageExample("foo", false));
clonesEqual(Address.subAddress(new AddressExample("foo"), "bar"));

clonesEqual(
new ClientWorker(
new ClientExample(new AddressExample("foo")),
Workload.builder().commands(new CommandExample("c")).build()));

clonesEqual(new AlsoNotFastSerializable());
clonesEqual(new ShouldFastSerialize());
}
Expand All @@ -139,6 +145,11 @@ public void serializationDeserialization() {
serializeDeserializeEqual(new MessageExample("foo", false));
serializeDeserializeEqual(Address.subAddress(new AddressExample("foo"), "bar"));

serializeDeserializeEqual(
new ClientWorker(
new ClientExample(new AddressExample("foo")),
Workload.builder().commands(new CommandExample("c")).build()));

serializeDeserializeEqual(new AlsoNotFastSerializable());
}

Expand All @@ -151,6 +162,11 @@ public void fastCloneWorks() throws NoSuchFieldException, IllegalAccessException
Cloning.clone(new MessageExample("foo", false));
Cloning.clone(Address.subAddress(new AddressExample("foo"), "bar"));

Cloning.clone(
new ClientWorker(
new ClientExample(new AddressExample("foo")),
Workload.builder().commands(new CommandExample("c")).build()));

assertFastCloned();

Cloning.clone(new ShouldFastSerialize());
Expand Down Expand Up @@ -495,6 +511,16 @@ public Result execute(Command command) {
}
}

@Data
class CommandExample implements Command {
private final String s;
}

@Data
class ResultExample implements Result {
private final int i;
}

@Data
class MessageExample implements Message {
private final String s;
Expand Down
6 changes: 6 additions & 0 deletions framework/tst/dslabs/framework/testing/utils/Cloning.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.time.Duration;
import java.time.Instant;
import java.util.Collections;
import java.util.Objects;
import java.util.Set;
Expand Down Expand Up @@ -82,6 +84,10 @@ public Strategy strategyFor(Object toBeCloned, Field field) {
return Strategy.IGNORE;
}
});
// Instant is a final class and is immutable and thread-safe.
jdclCloner.registerImmutable(Instant.class);
// Duration is a final class and is immutable and thread-safe.
jdclCloner.registerImmutable(Duration.class);
}

private static <T extends Serializable> T jdclClone(T object) {
Expand Down

0 comments on commit a292324

Please sign in to comment.