@Test
  public void nonInterleavedOperationsTest() throws Exception {
    Random random = new Random();
    for (int i = 0; i < 10; i++) {
      Queue<OperationType> operations = new LinkedList<>();
      operations.add(OperationType.PUT);
      operations.add(OperationType.AWAIT_CREATION);
      operations.add(OperationType.GET_INFO);
      operations.add(OperationType.GET_AUTHORIZATION_FAILURE);
      operations.add(OperationType.GET);
      operations.add(OperationType.TTL_UPDATE);
      operations.add(OperationType.AWAIT_TTL_UPDATE);
      operations.add(OperationType.GET);
      operations.add(OperationType.GET_INFO);
      operations.add(OperationType.DELETE_AUTHORIZATION_FAILURE);
      operations.add(OperationType.DELETE);
      operations.add(OperationType.AWAIT_DELETION);
      operations.add(OperationType.GET_INFO_DELETED);
      operations.add(OperationType.GET_DELETED);
      operations.add(OperationType.GET_DELETED_SUCCESS);
      operations.add(OperationType.GET_INFO_DELETED_SUCCESS);
      int blobSize = random.nextInt(100 * 1024);
      int contIdx = i % refContainers.size();
      testFramework.checkOperationChains(Collections.singletonList(
          testFramework.startOperationChain(blobSize, refContainers.get(contIdx), i, operations)));
    }
  }
Test that the non-blocking router can handle simple operation chains where each chain is completed before
the next one runs. This means that operations on only one blob are being dealt with at a time.
@throws Exception
ambry-server/src/integration-test/java/com/github/ambry/server/RouterServerPlaintextTest.java