private QuerySchedulerFactory() {
  }
@Test
  public void testQuerySchedulerFactory() {
    QueryExecutor queryExecutor = mock(QueryExecutor.class);
    ServerMetrics serverMetrics = mock(ServerMetrics.class);
    LongAccumulator latestQueryTime = mock(LongAccumulator.class);

    PinotConfiguration config = new PinotConfiguration();
    config.setProperty(QuerySchedulerFactory.ALGORITHM_NAME_CONFIG_KEY, QuerySchedulerFactory.FCFS_ALGORITHM);
    QueryScheduler queryScheduler = QuerySchedulerFactory.create(config, queryExecutor, serverMetrics, latestQueryTime);
    assertTrue(queryScheduler instanceof FCFSQueryScheduler);

    config.setProperty(QuerySchedulerFactory.ALGORITHM_NAME_CONFIG_KEY, QuerySchedulerFactory.TOKEN_BUCKET_ALGORITHM);
    queryScheduler = QuerySchedulerFactory.create(config, queryExecutor, serverMetrics, latestQueryTime);
    assertTrue(queryScheduler instanceof TokenPriorityScheduler);

    config.setProperty(QuerySchedulerFactory.ALGORITHM_NAME_CONFIG_KEY, QuerySchedulerFactory.BOUNDED_FCFS_ALGORITHM);
    queryScheduler = QuerySchedulerFactory.create(config, queryExecutor, serverMetrics, latestQueryTime);
    assertTrue(queryScheduler instanceof BoundedFCFSScheduler);

    config.setProperty(QuerySchedulerFactory.ALGORITHM_NAME_CONFIG_KEY, TestQueryScheduler.class.getName());
    queryScheduler = QuerySchedulerFactory.create(config, queryExecutor, serverMetrics, latestQueryTime);
    assertTrue(queryScheduler instanceof TestQueryScheduler);
  }