public void initConf(HiveConf conf) throws IOException {
    if (mr != null) {
      mr.setupConfiguration(conf);

      // TODO Ideally this should be done independent of whether mr is setup or not.
      setFsRelatedProperties(conf, fs.getScheme().equals("file"), fs);
    }

    if (llapCluster != null) {
      Configuration clusterSpecificConf = llapCluster.getClusterSpecificConfiguration();
      for (Map.Entry<String, String> confEntry : clusterSpecificConf) {
        // Conf.get takes care of parameter replacement, iterator.value does not.
        conf.set(confEntry.getKey(), clusterSpecificConf.get(confEntry.getKey()));
      }
    }
    if (druidCluster != null) {
      final Path druidDeepStorage = fs.makeQualified(new Path(druidCluster.getDeepStorageDir()));
      fs.mkdirs(druidDeepStorage);
      conf.set("hive.druid.storage.storageDirectory", druidDeepStorage.toUri().getPath());
      conf.set("hive.druid.metadata.db.type", "derby");
      conf.set("hive.druid.metadata.uri", druidCluster.getMetadataURI());
      conf.set("hive.druid.coordinator.address.default", druidCluster.getCoordinatorURI());
      conf.set("hive.druid.overlord.address.default", druidCluster.getOverlordURI());
      conf.set("hive.druid.broker.address.default", druidCluster.getBrokerURI());
      final Path scratchDir =
          fs.makeQualified(new Path(QTestSystemProperties.getTempDir(), "druidStagingDir"));
      fs.mkdirs(scratchDir);
      conf.set("hive.druid.working.directory", scratchDir.toUri().getPath());
    }

    if (testArgs.isWithLlapIo() && (clusterType == MiniClusterType.NONE)) {
      LOG.info("initializing llap IO");
      LlapProxy.initializeLlapIo(conf);
    }
  }
QTestSetup defines test fixtures which are reused across testcases, and are needed before any
test can be run
itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestMiniClusters.java