예제 #1
0
  /** When BACKUP_PACKET is received, updates are written to store */
  @Test
  public void whenBACKUP_PACKETThenWriteUpdates() throws Exception {
    final ByteBuffer buffer1 = randomBuffer(50);
    final ByteBuffer buffer2 = randomBuffer(50);
    final ByteBuffer buffer3 = randomBuffer(50);

    final BACKUP_PACKET bp =
        Message.BACKUP_PACKET(
            7,
            Arrays.asList(
                Message.BACKUP(id(1), 4, buffer1),
                Message.BACKUP(id(2), 5, buffer2),
                Message.BACKUP(id(3), 6, buffer3)));
    bp.setNode(sh(10));
    mm.receive(bp);

    InOrder inOrder = inOrder(store, comm);
    inOrder.verify(store).beginTransaction();
    inOrder
        .verify(store)
        .write(eq(id(1)), eq(sh(10)), eq(4L), eq(Persistables.toByteArray(buffer1)), anyObject());
    inOrder
        .verify(store)
        .write(eq(id(2)), eq(sh(10)), eq(5L), eq(Persistables.toByteArray(buffer2)), anyObject());
    inOrder
        .verify(store)
        .write(eq(id(3)), eq(sh(10)), eq(6L), eq(Persistables.toByteArray(buffer3)), anyObject());
    inOrder.verify(store).commit(anyObject());
    inOrder.verify(comm).send(argThat(equalTo(Message.BACKUP_PACKETACK(bp))));
    verify(monitor).addTransaction(3);
    verifyNoMoreInteractions(monitor);
  }