GOSSIP-65 Implement crdt LWW-Element-Set

LWWSet implemented + se/de + unit tests + jackson tests + DataTests
This commit is contained in:
Maxim Rusak
2017-06-19 22:56:36 +03:00
parent 9c9d96e564
commit 602a79bfc6
5 changed files with 442 additions and 134 deletions

View File

@ -22,6 +22,7 @@ import com.codahale.metrics.MetricRegistry;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.gossip.GossipSettings;
import org.apache.gossip.Member;
import org.apache.gossip.crdt.LWWSet;
import org.apache.gossip.crdt.OrSet;
import org.apache.gossip.manager.GossipManager;
import org.apache.gossip.manager.GossipManagerBuilder;
@ -80,6 +81,22 @@ public class JacksonTest {
OrSet<Integer> back = objectMapper.readValue(s, OrSet.class);
Assert.assertEquals(back, i);
}
@Test
public void jacksonCrdtLWWSetTest() {
ObjectMapper objectMapper = JacksonProtocolManager.buildObjectMapper(simpleSettings(new GossipSettings()));
LWWSet<String> lww = new LWWSet<>("a", "b", "c");
try {
String lwwS = objectMapper.writeValueAsString(lww);
@SuppressWarnings("unchecked")
LWWSet<String> parsedLww = objectMapper.readValue(lwwS, LWWSet.class);
Assert.assertEquals(lww, parsedLww);
} catch (Exception e) {
Assert.fail("LWWSet se/de error");
}
}
@Test
public void testMessageEqualityAssumptions() {