/**
   * Test delete API with a entry has not existed in simulator/drive. The test result should be
   * false.
   *
   * <p>
   *
   * @throws KineticException if any internal error occurred.
   */
  @Test(dataProvider = "transportProtocolOptions")
  public void testDelete_ReturnsFalse_ForMissingKey(String clientName) throws KineticException {
    byte[] key = toByteArray("asdfgh#$@257");
    assertKeyNotFound(getClient(clientName), key);

    // delete key which does not exist in Simulator/Drive
    byte[] value = toByteArray("value");
    EntryMetadata entryMetadata = new EntryMetadata();
    entryMetadata.setVersion(int32(0));
    Entry versioned = new Entry(key, value, entryMetadata);
    assertFalse(getClient(clientName).delete(versioned));

    logger.info(this.testEndInfo());
  }
  /**
   * Test putForced API result with a serial entries. The entries have already existed in
   * simulator/drive. Give new entry with db version different with version in simulator/drive, the
   * test result should be successful.
   *
   * <p>
   *
   * @throws KineticException if any internal error occurred.
   */
  @Test(dataProvider = "transportProtocolOptions")
  public void testPutForced(String clientName) throws KineticException {
    Long start = System.nanoTime();

    cleanData(MAX_KEYS, getClient(clientName));

    for (int i = 0; i < MAX_KEYS; i++) {
      byte[] key = toByteArray(KEY_PREFIX + i);
      byte[] value = ByteBuffer.allocate(8).putLong(start + i).array();
      EntryMetadata entryMetadata = new EntryMetadata();
      Entry versionedPut = new Entry(key, value, entryMetadata);

      getClient(clientName).put(versionedPut, int32(i));
    }

    start = System.nanoTime();
    byte[] version = int32(8);
    for (int i = 0; i < MAX_KEYS; i++) {
      byte[] key = toByteArray(KEY_PREFIX + i);
      byte[] value = ByteBuffer.allocate(8).putLong(start + i).array();

      EntryMetadata entryMetadata = new EntryMetadata();

      entryMetadata.setVersion(version);

      Entry versionedPutForced = new Entry(key, value, entryMetadata);

      getClient(clientName).putForced(versionedPutForced);

      Entry entryGet = getClient(clientName).get(key);
      assertArrayEquals(key, entryGet.getKey());
      assertArrayEquals(version, entryGet.getEntryMetadata().getVersion());
      assertArrayEquals(value, entryGet.getValue());
    }

    cleanData(MAX_KEYS, getClient(clientName));

    logger.info(this.testEndInfo());
  }