private void applyOperation()

in hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java [303:415]


  private void applyOperation(long counter) throws Exception {
    OmKeyArgs keyArgs;
    final long threadSeqId = getThreadSequenceId();
    String startKeyName;
    if (mixedOperation) {
      operation = operations[(int)threadSeqId];
    }
    if (randomOp) {
      counter = ThreadLocalRandom.current().nextLong(getTestNo());
    }
    final String keyName = getPath(counter);
    switch (operation) {
    case CREATE_KEY:
      getMetrics().timer(operation.name()).time(() -> performWriteOperation(() ->
          bucket.createKey(keyName, dataSize.toBytes(), replicationConfig, emptyMap()), contentGenerator));
      break;
    case CREATE_STREAM_KEY:
      getMetrics().timer(operation.name()).time(() -> performWriteOperation(() ->
          bucket.createStreamKey(keyName, dataSize.toBytes(), replicationConfig, emptyMap()), contentGenerator));
      break;
    case LOOKUP_KEY:
      keyArgs = omKeyArgsBuilder.get().setKeyName(keyName).build();
      getMetrics().timer(operation.name()).time(() -> ozoneManagerClient.lookupKey(keyArgs));
      break;
    case GET_KEYINFO:
      keyArgs = omKeyArgsBuilder.get().setKeyName(keyName).build();
      getMetrics().timer(operation.name()).time(() -> ozoneManagerClient.getKeyInfo(keyArgs, false));
      break;
    case HEAD_KEY:
      keyArgs = omKeyArgsBuilder.get()
          .setKeyName(keyName).setHeadOp(true).build();
      getMetrics().timer(operation.name()).time(() -> ozoneManagerClient.getKeyInfo(keyArgs, false));
      break;
    case READ_KEY:
      getMetrics().timer(operation.name()).time(() -> performReadOperation(() -> bucket.readKey(keyName), readBuffer));
      break;
    case READ_FILE:
      getMetrics().timer(operation.name()).time(() -> performReadOperation(() -> bucket.readFile(keyName), readBuffer));
      break;
    case CREATE_FILE:
      getMetrics().timer(operation.name()).time(() -> performWriteOperation(() ->
          bucket.createFile(keyName, dataSize.toBytes(), replicationConfig, true, false), contentGenerator));
      break;
    case CREATE_STREAM_FILE:
      getMetrics().timer(operation.name()).time(() -> performWriteOperation(() ->
          bucket.createStreamFile(keyName, dataSize.toBytes(), replicationConfig, true, false), contentGenerator));
      break;
    case LOOKUP_FILE:
      keyArgs = omKeyArgsBuilder.get().setKeyName(keyName).build();
      getMetrics().timer(operation.name()).time(() -> ozoneManagerClient.lookupFile(keyArgs));
      break;
    case LIST_KEYS:
      startKeyName = getPath(threadSeqId * batchSize);
      getMetrics().timer(operation.name()).time(() -> {
        List<OmKeyInfo> keyInfoList =
            ozoneManagerClient.listKeys(volumeName, bucketName, startKeyName, "", batchSize).getKeys();
        if (keyInfoList.size() + 1 < batchSize) {
          throw new NoSuchFileException("There are not enough keys for testing you should use "
                  + "CREATE_KEY to create at least batch-size * threads = " + batchSize * getThreadNo());
        }
        return null;
      });
      break;
    case LIST_KEYS_LIGHT:
      startKeyName = getPath(threadSeqId * batchSize);
      getMetrics().timer(operation.name()).time(() -> {
        List<BasicOmKeyInfo> keyInfoList =
            ozoneManagerClient.listKeysLight(volumeName, bucketName, startKeyName, "", batchSize).getKeys();
        if (keyInfoList.size() + 1 < batchSize) {
          throw new NoSuchFileException("There are not enough keys for testing you should use "
                  + "CREATE_KEY to create at least batch-size * threads = " + batchSize * getThreadNo());
        }
        return null;
      });
      break;
    case LIST_STATUS:
      startKeyName = getPath(threadSeqId * batchSize);
      keyArgs = omKeyArgsBuilder.get().setKeyName("").build();
      getMetrics().timer(operation.name()).time(() -> {
        List<OzoneFileStatus> fileStatusList = ozoneManagerClient.listStatus(
            keyArgs, false, startKeyName, batchSize);
        if (fileStatusList.size() + 1 < batchSize) {
          throw new NoSuchFileException("There are not enough files for testing you should use "
                  + "CREATE_FILE to create at least batch-size * threads = " + batchSize * getThreadNo());
        }
        return null;
      });
      break;
    case LIST_STATUS_LIGHT:
      startKeyName = getPath(threadSeqId * batchSize);
      keyArgs = omKeyArgsBuilder.get().setKeyName("").build();
      getMetrics().timer(operation.name()).time(() -> {
        List<OzoneFileStatusLight> fileStatusList = ozoneManagerClient.listStatusLight(
            keyArgs, false, startKeyName, batchSize, false);
        if (fileStatusList.size() + 1 < batchSize) {
          throw new NoSuchFileException("There are not enough files for testing you should use "
              + "CREATE_FILE to create at least batch-size * threads = " + batchSize * getThreadNo());
        }
        return null;
      });
      break;
    case INFO_BUCKET:
      getMetrics().timer(operation.name()).time(() -> ozoneManagerClient.getBucketInfo(volumeName, bucketName)
      );
      break;
    case INFO_VOLUME:
      getMetrics().timer(operation.name()).time(() -> ozoneManagerClient.getVolumeInfo(volumeName));
      break;
    default:
      throw new IllegalStateException("Unrecognized write command " +
          "type request " + operation);
    }
  }