From 0cc1a9a1167c4998886887b2a338a64060ce7699 Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Wed, 12 Jun 2024 10:02:46 +0300 Subject: [PATCH] wip, lsm test --- .fixme-new/fixme.log | Bin 450066 -> 452950 bytes hbs2-tests/hbs2-tests.cabal | 42 ++++++++++++++++++++++++++++++++ hbs2-tests/test/TestLSMWrite.hs | 36 +++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 hbs2-tests/test/TestLSMWrite.hs diff --git a/.fixme-new/fixme.log b/.fixme-new/fixme.log index ebb11202fc7e3de2512e7f11ce35da09cd8c3ebd..5017bfe8185934d731945b918c7a9644f98424b4 100644 GIT binary patch delta 1345 zcmbQVNBY_&>4p}@7N!>F7M2#)Eo?&f_!&Te?WI{WlT=!!eZ_SChb-D0RsxMp43dlt z(;XkOm}(eVT9}(985&z!n58CK8mAdsq?nncnHi^GK}49M$nK zN;0pk^fSx!^QsE<&h`ojPj)V>a!E0Fu8hcc%q}SM^$Jala*IkzGR&U5(89>r$k@c( z%seI4%skP=EGgN{z|7d#)I2%WEHTk6%`(}-(!$8p)ZE0Ni6JE?GcUD?A=zk}Fq7_d z#m6jOJmyA*=5V*KF=5tZ2fJNj!sLhP!qeZIFe?!6d~;LgqdH#3Y0kM(*(OEazC~G; zsb)TAu7w2^WksbWG=|j($fRxFw0KgWyb7L zkL>bJh9-tIH_r%PSF0w5oRrkG)FR!~vizK~)COQg03!zCDG*1Zd43Z^g|ULdg}oQH zDqPrfu@OXVxv=%Z&Wnu~n=Wj+u;XIC!o{YG4M3rd7n?8kU2IagF!90^9iTQB1%->P z7xn?=_SIkPxUf$FsG?g(;bJ>bBZQ-HVIR=o4G`0TX79VO9ccIlps^b+?7px8Xhjdm zASIyvTY=KMFYJISg5U;jV?Islio|iABE28P566zFxUz zfuP7WAvSUmY17bX`a&K?o#|7iG0Six#pL9Nb>e&$hRCr#{csMW86>?*GEJX&l~H86 zNG_u;(ZMl2GnetGj-!RQpLvE?abk&ENo7e%sA+(ssdJd0mrHp;Qc#LlWt4lEb8%u( zaG-N`C7FIQHG%l)O&((iB;7I?w*ix^6a(ASo4|sCsgvPLgrZ~hR_~WA2}cbs%I-L} zMpP>=mDTO6)f$Um>z1(!E)O?<3D@-KDM-^7uqIWvF!{xoo-ruj6aD)3o93O42Ibag z^O~Qnb$ljcSSI@vuIWKDNK;Z3Sl2(bb+adKDrT(x_adjsXJ>3r@b0knMLM?*T|A!o zHO(B4hBX@ Sad=M%Lcd4?(ku}6-A@3ez2xBl delta 21 ccmcb1NqW*A>4p}@7N!>F7M2#)Eo?&f0Ad>l`Tzg` 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 +