glean-0.2.0.0: glean/glass/test/regression/lib/Glean/Glass/Regression/Util.hs
{-
Copyright (c) Meta Platforms, Inc. and affiliates.
All rights reserved.
This source code is licensed under the BSD-style license found in the
LICENSE file in the root directory of this source tree.
-}
module Glean.Glass.Regression.Util (withTestEnv, withTestEnvScm) where
import qualified Haxl.Core as Haxl
import Util.EventBase
import Glean.Util.ConfigProvider
import Glean.Impl.TestConfigProvider () -- don't use the real ConfigProvider in tests
import Facebook.Fb303 ( withFb303 )
import Logger.IO (withLogger)
import Glean
import Glean.Util.Some
import Util.Time
import Glean.Glass.Env as Glass
import Glean.Glass.Repos
import Glean.Glass.SnapshotBackend as SB
import Glean.Glass.RepoMapping
import Glean.Glass.SourceControl
withTestEnv :: Backend b => b -> (Glass.Env -> IO a) -> IO a
withTestEnv b = withTestEnvScm b (Some NilSourceControl)
withTestEnvScm
:: Backend b
=> b
-> Some SourceControl
-> (Glass.Env -> IO a)
-> IO a
withTestEnvScm backend scm f =
withEventBaseDataplane $ \evp ->
withConfigProvider defaultConfigOptions $ \cfgapi ->
withLogger cfgapi $ \logger ->
withFb303 "glass-test" $ \fb303 ->
withLatestRepos backend scm Nothing Nothing (hours 1) $
\latestGleanRepos ->
f Glass.Env
{ gleanBackend = Some backend
, snapshotBackend = Some SB.NilSnapshotBackend
, gleanDB = Nothing
, repoMapping = fixedRepoMapping
, sourceControl = scm
, tracer = mempty
, haxlState = Haxl.stateEmpty
, useSnapshotsForSymbolsList = pure True
, allocationLimit = return Nothing
, ..
}