testremote: Fix over-allocation of resources and bad caching

Including starting up a large number of external special remote processes.
(Regression introduced in version 8.20200501)
This commit is contained in:
Joey Hess 2020-06-22 14:25:49 -04:00
parent 10db6c7a41
commit 5098236c6b
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
4 changed files with 81 additions and 32 deletions

11
Test.hs
View file

@ -257,22 +257,25 @@ testRemote remotetype config preinitremote =
@? "init failed"
r <- annexeval $ either error return
=<< Remote.byName' remotename
cache <- Command.TestRemote.newRemoteVariantCache
unavailr <- annexeval $ Types.Remote.mkUnavailable r
exportr <- annexeval $ Command.TestRemote.exportTreeVariant r
exportr <- annexeval $ Command.TestRemote.exportTreeVariant cache r
ks <- annexeval $ mapM Command.TestRemote.randKey keysizes
v <- getv
cv <- annexeval cache
liftIO $ atomically $ putTMVar v
(r, (unavailr, (exportr, ks)))
(r, (unavailr, (exportr, (ks, cv))))
go getv = Command.TestRemote.mkTestTrees runannex mkrs mkunavailr mkexportr mkks
where
runannex = inmainrepo . annexeval
mkrs = Command.TestRemote.remoteVariants mkr basesz False
mkrs = Command.TestRemote.remoteVariants cache mkr basesz False
mkr = descas (remotetype ++ " remote") (fst <$> v)
mkunavailr = fst . snd <$> v
mkexportr = fst . snd . snd <$> v
mkks = map (\(sz, n) -> desckeysize sz (getk n))
(zip keysizes [0..])
getk n = fmap (!! n) (snd . snd . snd <$> v)
getk n = fmap (!! n) (fst . snd . snd . snd <$> v)
cache = snd . snd . snd . snd <$> v
v = liftIO $ atomically . readTMVar =<< getv
descas = Command.TestRemote.Described
desckeysize sz = descas ("key size " ++ show sz)