File tree Expand file tree Collapse file tree 3 files changed +37
-0
lines changed
Test/Database/LSMTree/Internal/Snapshot Expand file tree Collapse file tree 3 files changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -374,6 +374,7 @@ test-suite lsm-tree-test
374374 Test.Database.LSMTree.Internal.Serialise
375375 Test.Database.LSMTree.Internal.Serialise.Class
376376 Test.Database.LSMTree.Internal.Snapshot.Codec
377+ Test.Database.LSMTree.Internal.Snapshot.FS
377378 Test.Database.LSMTree.Internal.Vector
378379 Test.Database.LSMTree.Internal.Vector.Growing
379380 Test.Database.LSMTree.Model.Table
Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ import qualified Test.Database.LSMTree.Internal.RunReaders
2929import qualified Test.Database.LSMTree.Internal.Serialise
3030import qualified Test.Database.LSMTree.Internal.Serialise.Class
3131import qualified Test.Database.LSMTree.Internal.Snapshot.Codec
32+ import qualified Test.Database.LSMTree.Internal.Snapshot.FS
3233import qualified Test.Database.LSMTree.Internal.Vector
3334import qualified Test.Database.LSMTree.Internal.Vector.Growing
3435import qualified Test.Database.LSMTree.Model.Table
@@ -66,6 +67,7 @@ main = do
6667 , Test.Database.LSMTree.Internal.Serialise. tests
6768 , Test.Database.LSMTree.Internal.Serialise.Class. tests
6869 , Test.Database.LSMTree.Internal.Snapshot.Codec. tests
70+ , Test.Database.LSMTree.Internal.Snapshot.FS. tests
6971 , Test.Database.LSMTree.Internal.Vector. tests
7072 , Test.Database.LSMTree.Internal.Vector.Growing. tests
7173 , Test.Database.LSMTree.Model.Table. tests
Original file line number Diff line number Diff line change 1+ {-# OPTIONS_GHC -Wno-orphans #-}
2+
3+ -- | Tests for snapshots and their interaction with the file system
4+ --
5+ -- TODO: add fault injection tests using fs-sim
6+ module Test.Database.LSMTree.Internal.Snapshot.FS (tests ) where
7+
8+ import Database.LSMTree.Internal.Snapshot
9+ import Database.LSMTree.Internal.Snapshot.Codec
10+ import qualified System.FS.API as FS
11+ import Test.Database.LSMTree.Internal.Snapshot.Codec ()
12+ import Test.Tasty
13+ import Test.Tasty.QuickCheck
14+ import Test.Util.FS
15+
16+ tests :: TestTree
17+ tests = testGroup " Test.Database.LSMTree.Internal.Snapshot.FS" [
18+ testProperty " prop_fsRoundtripSnapshotMetaData"
19+ prop_fsRoundtripSnapshotMetaData
20+ ]
21+
22+ -- | @readFileSnapshotMetaData . writeFileSnapshotMetaData = id@
23+ prop_fsRoundtripSnapshotMetaData :: SnapshotMetaData -> Property
24+ prop_fsRoundtripSnapshotMetaData metaData =
25+ ioProperty $
26+ withTempIOHasFS " temp" $ \ hfs -> do
27+ writeFileSnapshotMetaData hfs contentPath checksumPath metaData
28+ eMetaData' <- readFileSnapshotMetaData hfs contentPath checksumPath
29+ pure $ case eMetaData' of
30+ Left e -> counterexample (show e) False
31+ Right metaData' -> metaData === metaData'
32+ where
33+ contentPath = FS. mkFsPath [" content" ]
34+ checksumPath = FS. mkFsPath [" checksum" ]
You can’t perform that action at this time.
0 commit comments