diff --git a/.fixme-new/fixme.log b/.fixme-new/fixme.log index ebb11202..5017bfe8 100644 Binary files a/.fixme-new/fixme.log and b/.fixme-new/fixme.log differ diff --git a/hbs2-tests/hbs2-tests.cabal b/hbs2-tests/hbs2-tests.cabal index df2b18b2..8e607b09 100644 --- a/hbs2-tests/hbs2-tests.cabal +++ b/hbs2-tests/hbs2-tests.cabal @@ -1040,3 +1040,45 @@ executable test-merge-limits , unordered-containers , unix , timeit + + +executable test-lsw-write + import: shared-properties + default-language: Haskell2010 + + -- other-extensions: + + hs-source-dirs: test + main-is: TestLSMWrite.hs + build-depends: + base, hbs2-core, hbs2-storage-simple + , async + , bytestring + , cache + , containers + , hashable + , microlens-platform + , mtl + , prettyprinter + , QuickCheck + , quickcheck-instances + , random + , safe + , serialise + , stm + , streaming + , tasty + , tasty-quickcheck + , tasty-hunit + , tasty-quickcheck + , transformers + , uniplate + , vector + , filepath + , temporary + , unliftio + , unordered-containers + , unix + , timeit + + diff --git a/hbs2-tests/test/TestLSMWrite.hs b/hbs2-tests/test/TestLSMWrite.hs new file mode 100644 index 00000000..724aa0f6 --- /dev/null +++ b/hbs2-tests/test/TestLSMWrite.hs @@ -0,0 +1,36 @@ +{-# Language NumericUnderscores #-} +module Main where + +import HBS2.Prelude.Plated + +import HBS2.Hash +import HBS2.Data.Types.Refs +import HBS2.Storage.Compact + +import Data.ByteString.Builder qualified as B +import Data.ByteString.Lazy qualified as LBS +import Data.ByteString.Char8 qualified as BS8 +import Data.Function +import Streaming.Prelude qualified as S +import System.TimeIt +import Data.HashSet qualified as HS +import Data.HashSet (HashSet) +import Data.List qualified as List +import UnliftIO +import System.Random +import Data.Word +import Control.Monad +import System.Environment + +main :: IO () +main = do + [f] <- getArgs + sto <- compactStorageOpen @HbSync mempty f + + for_ [0..10_000_000] $ \i -> do + let k = B.toLazyByteString (B.word64BE i) & LBS.toStrict + let v = BS8.pack (show k) + put sto k v + + compactStorageClose sto +