public void start() throws IOException {
    this.start(new ArrayList<>());
  }
@Test
  public void testCuratorFrameworkFactory() throws Exception{
    // By not explicitly calling the NewZooKeeper method validate that the Curator override works.
    ZKClientConfig zkClientConfig = new ZKClientConfig();
    Configuration conf = new Configuration();
    conf.set(CommonConfigurationKeys.ZK_ADDRESS, this.server.getConnectString());
    int numRetries = conf.getInt(CommonConfigurationKeys.ZK_NUM_RETRIES,
        CommonConfigurationKeys.ZK_NUM_RETRIES_DEFAULT);
    int zkSessionTimeout = conf.getInt(CommonConfigurationKeys.ZK_TIMEOUT_MS,
        CommonConfigurationKeys.ZK_TIMEOUT_MS_DEFAULT);
    int zkRetryInterval = conf.getInt(
        CommonConfigurationKeys.ZK_RETRY_INTERVAL_MS,
        CommonConfigurationKeys.ZK_RETRY_INTERVAL_MS_DEFAULT);
    RetryNTimes retryPolicy = new RetryNTimes(numRetries, zkRetryInterval);

    CuratorFramework client = CuratorFrameworkFactory.builder()
        .connectString(conf.get(CommonConfigurationKeys.ZK_ADDRESS))
        .zkClientConfig(zkClientConfig)
        .sessionTimeoutMs(zkSessionTimeout).retryPolicy(retryPolicy)
        .authorization(new ArrayList<>())
        .zookeeperFactory(new ZKCuratorManager.HadoopZookeeperFactory(
            "foo1", "bar1", "bar1.keytab", false,
            new SecurityUtil.TruststoreKeystore(conf))

        ).build();
    client.start();
    validateJaasConfiguration(ZKCuratorManager.HadoopZookeeperFactory.JAAS_CLIENT_ENTRY,
        "bar1", "bar1.keytab", client.getZookeeperClient().getZooKeeper());
  }