@Override
    public MetadataStore create(String metadataURL, MetadataStoreConfig metadataStoreConfig,
                                boolean enableSessionWatcher) throws MetadataStoreException {
        return new LocalMemoryMetadataStore(metadataURL, metadataStoreConfig);
    }
@Test
    public void testSyncListener() throws Exception {
        TestMetadataEventSynchronizer sync = new TestMetadataEventSynchronizer();
        @Cleanup
        MetadataStore store1 = MetadataStoreFactory.create("memory:local",
                MetadataStoreConfig.builder().synchronizer(sync).build());

        String path = "/test";
        byte[] value1 = "value1".getBytes(StandardCharsets.UTF_8);
        byte[] value2 = "value2".getBytes(StandardCharsets.UTF_8);
        store1.put(path, value1, Optional.empty()).join();

        assertTrue(store1.exists(path).join());

        Stat stats = store1.get(path).get().get().getStat();
        MetadataEvent event = new MetadataEvent(path, value2, EMPTY_SET, stats.getVersion(),
                stats.getModificationTimestamp() + 1, sync.clusterName, NotificationType.Modified);
        sync.listener.apply(event).get();
        assertEquals(store1.get(path).get().get().getValue(), value2);
    }