Skip to content

Commit 63b0c6c

Browse files
authored
Merge pull request #23 from haskell-nix/conditional-memory-tests
Put bounded-memory NAR format tests behind a cabal flag
2 parents ec29e02 + d6fa9a1 commit 63b0c6c

File tree

6 files changed

+64
-48
lines changed

6 files changed

+64
-48
lines changed

hnix-store-core/hnix-store-core.cabal

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,13 @@ library
4747
hs-source-dirs: src
4848
default-language: Haskell2010
4949

50+
Flag bounded_memory
51+
description: Run tests of constant memory use (requires +RTS -T)
52+
default: False
53+
5054
test-suite format-tests
55+
if flag(bounded_memory)
56+
cpp-options: -DBOUNDED_MEMORY
5157
ghc-options: -rtsopts -fprof-auto
5258
type: exitcode-stdio-1.0
5359
main-is: Driver.hs

hnix-store-core/src/System/Nix/Build.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ data BuildStatus =
3434
deriving (Eq, Ord, Enum, Show)
3535

3636

37-
-- | Result of the build
37+
-- | Result of the build
3838
data BuildResult = BuildResult
3939
{ -- | build status, MiscFailure should be default
4040
status :: !BuildStatus

hnix-store-core/src/System/Nix/GC.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import System.Nix.Path (PathSet)
2323
data Action = ReturnLive | ReturnDead | DeleteDead | DeleteSpecific
2424
deriving (Eq, Ord, Enum, Show)
2525

26-
-- | Garbage collector operation options
26+
-- | Garbage collector operation options
2727
data Options = Options
2828
{ -- | operation
2929
operation :: !Action

hnix-store-core/src/System/Nix/Path.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ data SubstitutablePathInfo = SubstitutablePathInfo
8787
narSize :: !Integer
8888
} deriving (Eq, Ord, Show)
8989

90-
-- | Information about 'Path'.
90+
-- | Information about @Path@
9191
data ValidPathInfo = ValidPathInfo
9292
{ -- | Path itself
9393
path :: !Path

hnix-store-core/tests/NarFormat.hs

Lines changed: 54 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{-# LANGUAGE CPP #-}
12
{-# LANGUAGE LambdaCase #-}
23
{-# LANGUAGE OverloadedStrings #-}
34
{-# LANGUAGE ScopedTypeVariables #-}
@@ -161,8 +162,12 @@ filesystemNixStore testErrorName n = do
161162
-- | Assert that GHC uses less than 100M memory at peak
162163
assertBoundedMemory :: IO ()
163164
assertBoundedMemory = do
165+
#ifdef BOUNDED_MEMORY
164166
bytes <- max_live_bytes <$> getRTSStats
165167
bytes < 100 * 1000 * 1000 `shouldBe` True
168+
#else
169+
return ()
170+
#endif
166171

167172

168173
-- | Read the binary output of `nix-store --dump` for a filepath
@@ -250,58 +255,63 @@ sampleLargeDir fSize = Directory $ Map.fromList $ [
250255

251256
-- "hi" file turned to a NAR with `nix-store --dump`, Base64 encoded
252257
sampleRegularBaseline :: BSL.ByteString
253-
sampleRegularBaseline = B64.decodeLenient
254-
"DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA\
255-
\AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHJlZ3VsYXIACAAAAA\
256-
\AAAABjb250ZW50cwMAAAAAAAAAaGkKAAAAAAABAAAAAAAAACkAA\
257-
\AAAAAAA"
258+
sampleRegularBaseline = B64.decodeLenient $ BSL.concat
259+
["DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA"
260+
,"AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHJlZ3VsYXIACAAAAA"
261+
,"AAAABjb250ZW50cwMAAAAAAAAAaGkKAAAAAAABAAAAAAAAACkAA"
262+
,"AAAAAAA"
263+
]
258264

259265
sampleRegular'Baseline :: BSL.ByteString
260-
sampleRegular'Baseline = B64.decodeLenient
261-
"DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA\
262-
\AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHJlZ3VsYXIACAAAAA\
263-
\AAAABjb250ZW50c0AAAAAAAAAAI2luY2x1ZGUgPHN0ZGlvLmg+C\
264-
\gppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKXsgZXhp\
265-
\dCAwOyB9CgEAAAAAAAAAKQAAAAAAAAA="
266+
sampleRegular'Baseline = B64.decodeLenient $ BSL.concat
267+
["DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA"
268+
,"AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHJlZ3VsYXIACAAAAA"
269+
,"AAAABjb250ZW50c0AAAAAAAAAAI2luY2x1ZGUgPHN0ZGlvLmg+C"
270+
,"gppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKXsgZXhp"
271+
,"dCAwOyB9CgEAAAAAAAAAKQAAAAAAAAA="
272+
]
266273

267274
sampleExecutableBaseline :: BSL.ByteString
268-
sampleExecutableBaseline = B64.decodeLenient
269-
"DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA\
270-
\AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHJlZ3VsYXIACgAAAA\
271-
\AAAABleGVjdXRhYmxlAAAAAAAAAAAAAAAAAAAIAAAAAAAAAGNvb\
272-
\nRlbnRzIgAAAAAAAAAjIS9iaW4vYmFzaAoKZ2NjIC1vIGhlbGxv\
273-
\IGhlbGxvLmMKAAAAAAAAAQAAAAAAAAApAAAAAAAAAA=="
275+
sampleExecutableBaseline = B64.decodeLenient $ BSL.concat
276+
["DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA"
277+
,"AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHJlZ3VsYXIACgAAAA"
278+
,"AAAABleGVjdXRhYmxlAAAAAAAAAAAAAAAAAAAIAAAAAAAAAGNvb"
279+
,"nRlbnRzIgAAAAAAAAAjIS9iaW4vYmFzaAoKZ2NjIC1vIGhlbGxv"
280+
,"IGhlbGxvLmMKAAAAAAAAAQAAAAAAAAApAAAAAAAAAA=="
281+
]
274282

275283
sampleSymLinkBaseline :: BSL.ByteString
276-
sampleSymLinkBaseline = B64.decodeLenient
277-
"DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA\
278-
\AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHN5bWxpbmsABgAAAA\
279-
\AAAAB0YXJnZXQAAAcAAAAAAAAAaGVsbG8uYwABAAAAAAAAACkAA\
280-
\AAAAAAA"
284+
sampleSymLinkBaseline = B64.decodeLenient $ BSL.concat
285+
["DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA"
286+
,"AAAQAAAAAAAAAdHlwZQAAAAAHAAAAAAAAAHN5bWxpbmsABgAAAA"
287+
,"AAAAB0YXJnZXQAAAcAAAAAAAAAaGVsbG8uYwABAAAAAAAAACkAA"
288+
,"AAAAAAA"
289+
]
281290

282291
sampleDirectoryBaseline :: BSL.ByteString
283-
sampleDirectoryBaseline = B64.decodeLenient
284-
"DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA\
285-
\AAAQAAAAAAAAAdHlwZQAAAAAJAAAAAAAAAGRpcmVjdG9yeQAAAA\
286-
\AAAAAFAAAAAAAAAGVudHJ5AAAAAQAAAAAAAAAoAAAAAAAAAAQAA\
287-
\AAAAAAAbmFtZQAAAAAIAAAAAAAAAGJ1aWxkLnNoBAAAAAAAAABu\
288-
\b2RlAAAAAAEAAAAAAAAAKAAAAAAAAAAEAAAAAAAAAHR5cGUAAAA\
289-
\ABwAAAAAAAAByZWd1bGFyAAoAAAAAAAAAZXhlY3V0YWJsZQAAAA\
290-
\AAAAAAAAAAAAAACAAAAAAAAABjb250ZW50cyIAAAAAAAAAIyEvY\
291-
\mluL2Jhc2gKCmdjYyAtbyBoZWxsbyBoZWxsby5jCgAAAAAAAAEA\
292-
\AAAAAAAAKQAAAAAAAAABAAAAAAAAACkAAAAAAAAABQAAAAAAAAB\
293-
\lbnRyeQAAAAEAAAAAAAAAKAAAAAAAAAAEAAAAAAAAAG5hbWUAAA\
294-
\AABwAAAAAAAABoZWxsby5jAAQAAAAAAAAAbm9kZQAAAAABAAAAA\
295-
\AAAACgAAAAAAAAABAAAAAAAAAB0eXBlAAAAAAcAAAAAAAAAcmVn\
296-
\dWxhcgAIAAAAAAAAAGNvbnRlbnRzQAAAAAAAAAAjaW5jbHVkZSA\
297-
\8c3RkaW8uaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcm\
298-
\d2W10peyBleGl0IDA7IH0KAQAAAAAAAAApAAAAAAAAAAEAAAAAA\
299-
\AAAKQAAAAAAAAAFAAAAAAAAAGVudHJ5AAAAAQAAAAAAAAAoAAAA\
300-
\AAAAAAQAAAAAAAAAbmFtZQAAAAAEAAAAAAAAAGhpLmMAAAAABAA\
301-
\AAAAAAABub2RlAAAAAAEAAAAAAAAAKAAAAAAAAAAEAAAAAAAAAH\
302-
\R5cGUAAAAABwAAAAAAAABzeW1saW5rAAYAAAAAAAAAdGFyZ2V0A\
303-
\AAHAAAAAAAAAGhlbGxvLmMAAQAAAAAAAAApAAAAAAAAAAEAAAAA\
304-
\AAAAKQAAAAAAAAABAAAAAAAAACkAAAAAAAAA"
292+
sampleDirectoryBaseline = B64.decodeLenient $ BSL.concat
293+
["DQAAAAAAAABuaXgtYXJjaGl2ZS0xAAAAAQAAAAAAAAAoAAAAAAA"
294+
,"AAAQAAAAAAAAAdHlwZQAAAAAJAAAAAAAAAGRpcmVjdG9yeQAAAA"
295+
,"AAAAAFAAAAAAAAAGVudHJ5AAAAAQAAAAAAAAAoAAAAAAAAAAQAA"
296+
,"AAAAAAAbmFtZQAAAAAIAAAAAAAAAGJ1aWxkLnNoBAAAAAAAAABu"
297+
,"b2RlAAAAAAEAAAAAAAAAKAAAAAAAAAAEAAAAAAAAAHR5cGUAAAA"
298+
,"ABwAAAAAAAAByZWd1bGFyAAoAAAAAAAAAZXhlY3V0YWJsZQAAAA"
299+
,"AAAAAAAAAAAAAACAAAAAAAAABjb250ZW50cyIAAAAAAAAAIyEvY"
300+
,"mluL2Jhc2gKCmdjYyAtbyBoZWxsbyBoZWxsby5jCgAAAAAAAAEA"
301+
,"AAAAAAAAKQAAAAAAAAABAAAAAAAAACkAAAAAAAAABQAAAAAAAAB"
302+
,"lbnRyeQAAAAEAAAAAAAAAKAAAAAAAAAAEAAAAAAAAAG5hbWUAAA"
303+
,"AABwAAAAAAAABoZWxsby5jAAQAAAAAAAAAbm9kZQAAAAABAAAAA"
304+
,"AAAACgAAAAAAAAABAAAAAAAAAB0eXBlAAAAAAcAAAAAAAAAcmVn"
305+
,"dWxhcgAIAAAAAAAAAGNvbnRlbnRzQAAAAAAAAAAjaW5jbHVkZSA"
306+
,"8c3RkaW8uaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcm"
307+
,"d2W10peyBleGl0IDA7IH0KAQAAAAAAAAApAAAAAAAAAAEAAAAAA"
308+
,"AAAKQAAAAAAAAAFAAAAAAAAAGVudHJ5AAAAAQAAAAAAAAAoAAAA"
309+
,"AAAAAAQAAAAAAAAAbmFtZQAAAAAEAAAAAAAAAGhpLmMAAAAABAA"
310+
,"AAAAAAABub2RlAAAAAAEAAAAAAAAAKAAAAAAAAAAEAAAAAAAAAH"
311+
,"R5cGUAAAAABwAAAAAAAABzeW1saW5rAAYAAAAAAAAAdGFyZ2V0A"
312+
,"AAHAAAAAAAAAGhlbGxvLmMAAQAAAAAAAAApAAAAAAAAAAEAAAAA"
313+
,"AAAAKQAAAAAAAAABAAAAAAAAACkAAAAAAAAA"
314+
]
305315

306316

307317
-- | Control testcase sizes (bytes) by env variable

hnix-store-remote/src/System/Nix/Store/Remote.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ buildPaths ps bm = void $ simpleOpArgs EnsurePath $ do
175175
putPaths ps
176176
putInt $ fromEnum bm
177177

178-
buildDerivation :: PathName -> Drv.BasicDerivation -> Build.BuildMode -> MonadStore Build.BuildResult
178+
buildDerivation :: PathName -> Drv.Derivation -> Build.BuildMode -> MonadStore Build.BuildResult
179179
buildDerivation = undefined -- XXX
180180

181181
ensurePath :: Path -> MonadStore ()

0 commit comments

Comments
 (0)