public void demonstrateGSet() { // #gset final GSet<String> s0 = GSet.create(); final GSet<String> s1 = s0.add("a"); final GSet<String> s2 = s1.add("b").add("c"); if (s2.contains("a")) System.out.println(s2.getElements()); // a, b, c // #gset }
@Test public void demonstrateUpdate() { probe = new JavaTestKit(system); // #update final Cluster node = Cluster.get(system); final ActorRef replicator = DistributedData.get(system).replicator(); final Key<PNCounter> counter1Key = PNCounterKey.create("counter1"); final Key<GSet<String>> set1Key = GSetKey.create("set1"); final Key<ORSet<String>> set2Key = ORSetKey.create("set2"); final Key<Flag> activeFlagKey = FlagKey.create("active"); replicator.tell( new Replicator.Update<PNCounter>( counter1Key, PNCounter.create(), Replicator.writeLocal(), curr -> curr.increment(node, 1)), self()); final WriteConsistency writeTo3 = new WriteTo(3, Duration.create(1, SECONDS)); replicator.tell( new Replicator.Update<GSet<String>>( set1Key, GSet.create(), writeTo3, curr -> curr.add("hello")), self()); final WriteConsistency writeMajority = new WriteMajority(Duration.create(5, SECONDS)); replicator.tell( new Replicator.Update<ORSet<String>>( set2Key, ORSet.create(), writeMajority, curr -> curr.add(node, "hello")), self()); final WriteConsistency writeAll = new WriteAll(Duration.create(5, SECONDS)); replicator.tell( new Replicator.Update<Flag>( activeFlagKey, Flag.create(), writeAll, curr -> curr.switchOn()), self()); // #update probe.expectMsgClass(UpdateSuccess.class); // #update-response1 receive( ReceiveBuilder.match( UpdateSuccess.class, a -> a.key().equals(counter1Key), a -> { // ok }) .build()); // #update-response1 // #update-response2 receive( ReceiveBuilder.match( UpdateSuccess.class, a -> a.key().equals(set1Key), a -> { // ok }) .match( UpdateTimeout.class, a -> a.key().equals(set1Key), a -> { // write to 3 nodes failed within 1.second }) .build()); // #update-response2 }