amazingJing commented on a change in pull request #16969:
URL: https://github.com/apache/flink/pull/16969#discussion_r701550055



##########
File path: 
flink-state-backends/flink-statebackend-rocksdb/src/test/java/org/apache/flink/contrib/streaming/state/snapshot/RocksIncrementalSnapshotStrategyTest.java
##########
@@ -0,0 +1,148 @@
+package org.apache.flink.contrib.streaming.state.snapshot;
+
+import org.apache.flink.api.common.state.StateDescriptor;
+import org.apache.flink.api.common.typeutils.base.IntSerializer;
+import org.apache.flink.api.java.tuple.Tuple2;
+import org.apache.flink.contrib.streaming.state.RocksDBKeyedStateBackend;
+import org.apache.flink.contrib.streaming.state.RocksDBOptions;
+import org.apache.flink.contrib.streaming.state.RocksDBStateUploader;
+import org.apache.flink.core.fs.CloseableRegistry;
+import org.apache.flink.runtime.checkpoint.CheckpointOptions;
+import org.apache.flink.runtime.state.ArrayListSerializer;
+import org.apache.flink.runtime.state.CompositeKeySerializationUtils;
+import org.apache.flink.runtime.state.KeyGroupRange;
+import org.apache.flink.runtime.state.RegisteredKeyValueStateBackendMetaInfo;
+import org.apache.flink.runtime.state.StateHandleID;
+import org.apache.flink.runtime.state.TestLocalRecoveryConfig;
+import org.apache.flink.runtime.state.filesystem.FsCheckpointStreamFactory;
+import org.apache.flink.util.ResourceGuard;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.rocksdb.ColumnFamilyDescriptor;
+import org.rocksdb.ColumnFamilyHandle;
+import org.rocksdb.RocksDB;
+import org.rocksdb.RocksDBException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.UUID;
+
+import static org.apache.flink.core.fs.Path.fromLocalFile;
+import static org.apache.flink.core.fs.local.LocalFileSystem.getSharedInstance;
+import static org.powermock.api.mockito.PowerMockito.spy;
+
+/**
+ * Test for verifying the changed logic about notifyCheckpointComplete over
+ * RocksIncrementalSnapshotStrategy is incremental.
+ */
+public class RocksIncrementalSnapshotStrategyTest {
+
+    @Rule public final TemporaryFolder tmp = new TemporaryFolder();
+
+    @Test
+    public void testCheckpointIsIncremental() throws Exception {
+        CloseableRegistry closeableRegistry = new CloseableRegistry();
+
+        // prepare components
+        Tuple2<RocksIncrementalSnapshotStrategy, SortedMap<Long, 
Set<StateHandleID>>> prepareData =
+                prepareCreateSnapshotStrategy(closeableRegistry);
+        RocksIncrementalSnapshotStrategy checkpointSnapshotStrategy = 
prepareData.f0;
+        SortedMap<Long, Set<StateHandleID>> materializedSstFiles = 
prepareData.f1;
+
+        // make checkpoint with id 1
+        RocksIncrementalSnapshotStrategy.IncrementalRocksDBSnapshotResources 
snapshotResources =
+                checkpointSnapshotStrategy.syncPrepareResources(1L);
+
+        checkpointSnapshotStrategy
+                .asyncSnapshot(
+                        snapshotResources,
+                        1L,
+                        1L,
+                        new FsCheckpointStreamFactory(
+                                getSharedInstance(),
+                                fromLocalFile(tmp.newFolder("checkpointsDir")),
+                                fromLocalFile(tmp.newFolder("sharedStateDir")),
+                                100,
+                                100),
+                        CheckpointOptions.forCheckpointWithDefaultLocation())
+                .get(closeableRegistry);
+
+        // notify checkpoint with id 1
+        checkpointSnapshotStrategy.notifyCheckpointComplete(1L);
+
+        // notify savepoint with id 2
+        checkpointSnapshotStrategy.notifyCheckpointComplete(2L);
+
+        // verify stateHandleIDSet is not empty after a savepoint 
notifyComplete
+        Set<StateHandleID> stateHandleIDSet = materializedSstFiles.get(1L);
+        Assert.assertNotNull(stateHandleIDSet);
+        Assert.assertTrue(stateHandleIDSet.size() > 0);
+
+        checkpointSnapshotStrategy.close();
+        closeableRegistry.close();
+    }
+
+    public Tuple2<RocksIncrementalSnapshotStrategy, SortedMap<Long, 
Set<StateHandleID>>>
+            prepareCreateSnapshotStrategy(CloseableRegistry closeableRegistry)
+                    throws IOException, RocksDBException {
+
+        // prepare a rocksDB and put data
+        RocksDB rocksDB = RocksDB.open(tmp.newFolder().getAbsolutePath());

Review comment:
       Got it.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to