use of io.atomix.primitive.service.impl.DefaultBackupInput in project atomix by atomix.
the class DefaultAtomicCounterMapServiceTest method testSnapshot.
@Test
public void testSnapshot() throws Exception {
DefaultAtomicCounterMapService service = new DefaultAtomicCounterMapService();
service.put("foo", 1);
Buffer buffer = HeapBuffer.allocate();
service.backup(new DefaultBackupOutput(buffer, service.serializer()));
service = new DefaultAtomicCounterMapService();
service.restore(new DefaultBackupInput(buffer.flip(), service.serializer()));
long value = service.get("foo");
assertEquals(1, value);
}
use of io.atomix.primitive.service.impl.DefaultBackupInput in project atomix by atomix.
the class DefaultAtomicMultimapServiceTest method testSnapshot.
@Test
@SuppressWarnings("unchecked")
public void testSnapshot() throws Exception {
ServiceContext context = mock(ServiceContext.class);
when(context.serviceType()).thenReturn(AtomicMultimapType.instance());
when(context.serviceName()).thenReturn("test");
when(context.serviceId()).thenReturn(PrimitiveId.from(1));
when(context.wallClock()).thenReturn(new WallClock());
Session session = mock(Session.class);
when(session.sessionId()).thenReturn(SessionId.from(1));
DefaultAtomicMultimapService service = new DefaultAtomicMultimapService();
service.init(context);
service.put("foo", "Hello world!".getBytes());
Buffer buffer = HeapBuffer.allocate();
service.backup(new DefaultBackupOutput(buffer, service.serializer()));
service = new DefaultAtomicMultimapService();
service.init(context);
service.restore(new DefaultBackupInput(buffer.flip(), service.serializer()));
Versioned<Collection<byte[]>> value = service.get("foo");
assertNotNull(value);
assertEquals(1, value.value().size());
assertArrayEquals("Hello world!".getBytes(), value.value().iterator().next());
}
use of io.atomix.primitive.service.impl.DefaultBackupInput in project atomix by atomix.
the class DefaultDistributedListServiceTest method testSnapshot.
@Test
@SuppressWarnings("unchecked")
public void testSnapshot() throws Exception {
ServiceContext context = mock(ServiceContext.class);
when(context.serviceType()).thenReturn(DistributedSetType.instance());
when(context.serviceName()).thenReturn("test");
when(context.serviceId()).thenReturn(PrimitiveId.from(1));
when(context.wallClock()).thenReturn(new WallClock());
Session session = mock(Session.class);
when(session.sessionId()).thenReturn(SessionId.from(1));
DefaultDistributedListService service = new DefaultDistributedListService();
service.init(context);
service.add("foo");
Buffer buffer = HeapBuffer.allocate();
service.backup(new DefaultBackupOutput(buffer, service.serializer()));
service = new DefaultDistributedListService();
service.restore(new DefaultBackupInput(buffer.flip(), service.serializer()));
assertEquals("foo", service.get(0));
}
use of io.atomix.primitive.service.impl.DefaultBackupInput in project atomix by atomix.
the class RaftServiceContext method installSnapshot.
/**
* Installs a snapshot.
*/
public void installSnapshot(SnapshotReader reader) {
log.debug("Installing snapshot {}", reader.snapshot().index());
// Skip the service ID
reader.skip(Bytes.LONG);
PrimitiveType primitiveType;
try {
primitiveType = raft.getPrimitiveTypes().getPrimitiveType(reader.readString());
} catch (ConfigurationException e) {
log.error(e.getMessage(), e);
return;
}
String serviceName = reader.readString();
currentIndex = reader.readLong();
currentTimestamp = reader.readLong();
timestampDelta = reader.readLong();
int sessionCount = reader.readInt();
for (int i = 0; i < sessionCount; i++) {
SessionId sessionId = SessionId.from(reader.readLong());
MemberId node = MemberId.from(reader.readString());
ReadConsistency readConsistency = ReadConsistency.valueOf(reader.readString());
long minTimeout = reader.readLong();
long maxTimeout = reader.readLong();
long sessionTimestamp = reader.readLong();
// Only create a new session if one does not already exist. This is necessary to ensure only a single session
// is ever opened and exposed to the state machine.
RaftSession session = raft.getSessions().addSession(new RaftSession(sessionId, node, serviceName, primitiveType, readConsistency, minTimeout, maxTimeout, sessionTimestamp, service.serializer(), this, raft, threadContextFactory));
session.setRequestSequence(reader.readLong());
session.setCommandSequence(reader.readLong());
session.setEventIndex(reader.readLong());
session.setLastCompleted(reader.readLong());
session.setLastApplied(reader.snapshot().index());
session.setLastUpdated(sessionTimestamp);
session.open();
service.register(sessions.addSession(session));
}
service.restore(new DefaultBackupInput(reader, service.serializer()));
}
use of io.atomix.primitive.service.impl.DefaultBackupInput in project atomix by atomix.
the class DefaultAtomicValueServiceTest method testSnapshot.
@Test
@SuppressWarnings("unchecked")
public void testSnapshot() throws Exception {
ServiceContext context = mock(ServiceContext.class);
when(context.serviceType()).thenReturn(AtomicMapType.instance());
when(context.serviceName()).thenReturn("test");
when(context.serviceId()).thenReturn(PrimitiveId.from(1));
when(context.wallClock()).thenReturn(new WallClock());
Session session = mock(Session.class);
when(session.sessionId()).thenReturn(SessionId.from(1));
DefaultAtomicValueService service = new DefaultAtomicValueService();
service.init(context);
assertNull(service.get());
Buffer buffer = HeapBuffer.allocate();
service.backup(new DefaultBackupOutput(buffer, service.serializer()));
assertNull(service.get());
service = new DefaultAtomicValueService();
service.restore(new DefaultBackupInput(buffer.flip(), service.serializer()));
assertNull(service.get());
service.set("Hello world!".getBytes());
assertArrayEquals("Hello world!".getBytes(), service.get());
buffer = HeapBuffer.allocate();
service.backup(new DefaultBackupOutput(buffer, service.serializer()));
assertArrayEquals("Hello world!".getBytes(), service.get());
service = new DefaultAtomicValueService();
service.restore(new DefaultBackupInput(buffer.flip(), service.serializer()));
assertArrayEquals("Hello world!".getBytes(), service.get());
service.set(null);
assertNull(service.get());
}
Aggregations