This commit is contained in:
Dmitry Zuikov 2024-05-30 11:29:27 +03:00
parent 9d0fddd417
commit 00c265c7ac
5 changed files with 66 additions and 4 deletions

View File

@ -17,6 +17,7 @@ BINS := \
git-remote-hbs2 \ git-remote-hbs2 \
git-hbs2 \ git-hbs2 \
fixme-new \ fixme-new \
hbs2-storage-simple-benchmarks \
ifeq ($(origin .RECIPEPREFIX), undefined) ifeq ($(origin .RECIPEPREFIX), undefined)
$(error This Make does not support .RECIPEPREFIX. Please use GNU Make 4.0 or later) $(error This Make does not support .RECIPEPREFIX. Please use GNU Make 4.0 or later)

View File

@ -6,6 +6,7 @@ import HBS2.Hash
import HBS2.Data.Types.Refs import HBS2.Data.Types.Refs
import HBS2.Storage import HBS2.Storage
import HBS2.Storage.Simple import HBS2.Storage.Simple
import HBS2.Storage.Compact
import System.TimeIt import System.TimeIt
@ -13,12 +14,14 @@ import DBPipe.SQLite
import System.Environment import System.Environment
import System.FilePath import System.FilePath
import System.IO.Temp
import System.Random (randomRIO) import System.Random (randomRIO)
import Control.Monad (replicateM) import Control.Monad (replicateM)
import Data.ByteString.Lazy qualified as LBS import Data.ByteString.Lazy qualified as LBS
import Data.Word (Word8) import Data.Word (Word8)
import Data.Coerce
import Data.Function import Data.Function
import Text.InterpolatedString.Perl6 (qc) import Text.InterpolatedString.Perl6 (qc)
import Control.Monad import Control.Monad
@ -63,9 +66,10 @@ main = do
let s = readDef @Int 256 ss let s = readDef @Int 256 ss
let p = pref let p = pref
-- let bss = randomByteStrings n s let bss = randomByteStrings n s
let bss2 = randomByteStrings n s let bss2 = randomByteStrings n s
let bss3 = randomByteStrings n s let bss3 = randomByteStrings n s
let bss4 = randomByteStrings n s
-- let bss41 = randomByteStrings (n `div` 2) s -- let bss41 = randomByteStrings (n `div` 2) s
-- let bss42 = randomByteStrings (n`div` 2) s -- let bss42 = randomByteStrings (n`div` 2) s
-- let bss43 = randomByteStrings (n`div`4) s -- let bss43 = randomByteStrings (n`div`4) s
@ -91,8 +95,8 @@ main = do
print $ "preparing to write" <+> pretty n <+> "chunks" print $ "preparing to write" <+> pretty n <+> "chunks"
-- timeItNamed "write chunks test" do timeItNamed "write chunks to simple storage" do
-- S.mapM_ (enqueueBlock storage) bss S.mapM_ (enqueueBlock storage) bss
timeItNamed "write chunks to sqlite test" do timeItNamed "write chunks to sqlite test" do
withDB env $ transactional do withDB env $ transactional do
@ -123,6 +127,17 @@ main = do
LBS.hPut fh (mconcat w) LBS.hPut fh (mconcat w)
hClose fh hClose fh
timeItNamed "write chunks to compact-storage" do
temp <- liftIO $ emptyTempFile "." "compact-storage"
sto <- compactStorageOpen mempty temp
flip S.mapM_ bss4 $ \bs -> do
let h = hashObject @HbSync bs
compactStoragePut sto (coerce h) (LBS.toStrict bs)
compactStorageClose sto
timeItNamed "write chunks to LSM-mock" do timeItNamed "write chunks to LSM-mock" do

View File

@ -99,6 +99,7 @@ test-suite test
other-modules: other-modules:
TestSimpleStorage TestSimpleStorage
TestCompactStorage
-- other-extensions: -- other-extensions:

View File

@ -4,10 +4,11 @@ import Test.Tasty
import Test.Tasty.HUnit import Test.Tasty.HUnit
import TestSimpleStorage import TestSimpleStorage
import TestCompactStorage
main :: IO () main :: IO ()
main = main =
defaultMain $ defaultMain do
testGroup "root" testGroup "root"
[ [
testCase "testSimpleStorageRandomReadWrite" testSimpleStorageRandomReadWrite testCase "testSimpleStorageRandomReadWrite" testSimpleStorageRandomReadWrite
@ -15,6 +16,10 @@ main =
, testCase "testSimpleStorageRefs" testSimpleStorageRefs , testCase "testSimpleStorageRefs" testSimpleStorageRefs
, testCase "testSimpleStorageBundles" testSimpleStorageBundles , testCase "testSimpleStorageBundles" testSimpleStorageBundles
, testCase "testSimpleStorageSymmEncryption" testSimpleStorageSymmEncryption , testCase "testSimpleStorageSymmEncryption" testSimpleStorageSymmEncryption
, testCase "testCompactStorage" testCompactStorageBasic
] ]
-- testGroup "compact"
-- [ testCase "testCompactStorage" testCompactStorageBasic
-- ]

View File

@ -0,0 +1,40 @@
module TestCompactStorage where
import HBS2.Prelude.Plated
import HBS2.OrDie
import HBS2.Hash
import HBS2.Clock
import HBS2.Data.Types.Refs
import HBS2.Storage
import HBS2.Storage.Compact
import HBS2.Data.Bundle
import Control.Monad.Except
import Control.Monad
import Data.Traversable
import Data.Foldable
import Control.Concurrent.Async
import Control.Concurrent
import Data.ByteString.Lazy qualified as LBS
import Data.Maybe
import Data.Word
import Lens.Micro.Platform
import Prettyprinter
import System.Directory
import System.FilePath.Posix
import System.IO.Temp
import Test.QuickCheck
import System.TimeIt
import System.IO
import Test.Tasty.HUnit
testCompactStorageBasic :: IO ()
testCompactStorageBasic = do
withSystemTempFile "simpleStorageTest1" $ \fn ha -> do
pure ()
pure ()