use of io.atomix.primitive.service.impl.DefaultBackupOutput 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.DefaultBackupOutput 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.DefaultBackupOutput in project atomix by atomix.
the class PrimaryRole method restore.
@Override
public CompletableFuture<RestoreResponse> restore(RestoreRequest request) {
logRequest(request);
if (request.term() != context.currentTerm()) {
return CompletableFuture.completedFuture(logResponse(RestoreResponse.error()));
}
HeapBuffer buffer = HeapBuffer.allocate();
try {
Collection<PrimaryBackupSession> sessions = context.getSessions();
buffer.writeInt(sessions.size());
for (Session session : sessions) {
buffer.writeLong(session.sessionId().id());
buffer.writeString(session.memberId().id());
}
context.service().backup(new DefaultBackupOutput(buffer, context.service().serializer()));
buffer.flip();
byte[] bytes = buffer.readBytes(buffer.remaining());
return CompletableFuture.completedFuture(RestoreResponse.ok(context.currentIndex(), context.currentTimestamp(), bytes)).thenApply(this::logResponse);
} finally {
buffer.release();
}
}
use of io.atomix.primitive.service.impl.DefaultBackupOutput in project atomix by atomix.
the class RaftServiceContext method takeSnapshot.
/**
* Takes a snapshot of the service state.
*/
public void takeSnapshot(SnapshotWriter writer) {
log.debug("Taking snapshot {}", writer.snapshot().index());
// Serialize sessions to the in-memory snapshot and request a snapshot from the state machine.
writer.writeLong(primitiveId.id());
writer.writeString(primitiveType.name());
writer.writeString(serviceName);
writer.writeLong(currentIndex);
writer.writeLong(currentTimestamp);
writer.writeLong(timestampDelta);
writer.writeInt(sessions.getSessions().size());
for (RaftSession session : sessions.getSessions()) {
writer.writeLong(session.sessionId().id());
writer.writeString(session.memberId().id());
writer.writeString(session.readConsistency().name());
writer.writeLong(session.minTimeout());
writer.writeLong(session.maxTimeout());
writer.writeLong(session.getLastUpdated());
writer.writeLong(session.getRequestSequence());
writer.writeLong(session.getCommandSequence());
writer.writeLong(session.getEventIndex());
writer.writeLong(session.getLastCompleted());
}
service.backup(new DefaultBackupOutput(writer, service.serializer()));
}
use of io.atomix.primitive.service.impl.DefaultBackupOutput 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