@Override
    public MetadataStore create(String metadataURL, MetadataStoreConfig metadataStoreConfig,
                                boolean enableSessionWatcher) throws MetadataStoreException {
        return new EtcdMetadataStore(metadataURL, metadataStoreConfig, enableSessionWatcher);
    }
@Test
    public void testCluster() throws Exception {
        @Cleanup
        EtcdCluster etcdCluster = EtcdClusterExtension.builder().withClusterName("test-cluster").withNodes(3)
                .withSsl(false).build().cluster();
        etcdCluster.start();

        EtcdConfig etcdConfig = EtcdConfig.builder().useTls(false)
                .tlsProvider(null)
                .authority("etcd0")
                .build();

        Path etcdConfigPath = Files.createTempFile("etcd_config_cluster", ".yml");
        new ObjectMapper(new YAMLFactory()).writeValue(etcdConfigPath.toFile(), etcdConfig);

        String metadataURL =
                "etcd:" + etcdCluster.clientEndpoints().stream().map(URI::toString).collect(Collectors.joining(","));

        @Cleanup
        MetadataStore store = MetadataStoreFactory.create(metadataURL,
                MetadataStoreConfig.builder().configFilePath(etcdConfigPath.toString()).build());

        store.put("/test", "value".getBytes(StandardCharsets.UTF_8), Optional.empty()).join();

        assertTrue(store.exists("/test").join());

    }