@@ -5,35 +5,21 @@ import Control.Exception as E
55import Control.Monad
66import Control.Monad.Codensity
77import Control.Monad.IO.Class
8- import Control.Monad.Reader.Class (asks )
9- import Data.Default
108import Data.Foldable
119import Data.Function
1210import Data.Functor
1311import Data.List
1412import Data.Maybe (fromMaybe )
15- import Data.String (IsString (fromString ))
16- import Data.String.Conversions (cs )
17- import Data.Text (Text )
18- import qualified Data.Text as T
1913import Data.Time
20- import qualified Data.Yaml as Yaml
21- import Network.AMQP.Extended
22- import Network.RabbitMqAdmin
2314import RunAllTests
2415import System.Directory
2516import System.Environment
2617import System.Exit
2718import System.FilePath
28- import System.IO.Temp (writeTempFile )
29- import System.Process
3019import Testlib.Assertions
3120import Testlib.Env
32- import Testlib.ModService (readAndUpdateConfig )
3321import Testlib.Options
3422import Testlib.Printing
35- import Testlib.ResourcePool (acquireResources )
36- import Testlib.RunServices (backendA , backendB )
3723import Testlib.Types
3824import Testlib.XML
3925import Text.Printf
@@ -127,12 +113,12 @@ runTests tests mXMLOutput cfg shardingGroup = do
127113 Nothing -> pure ()
128114 let writeOutput = writeChan output . Just
129115
130- runCodensity (mkEnvs cfg) $ \ (genv, env ) ->
116+ runCodensity (mkEnvs cfg) $ \ (genv, _env ) ->
131117 withAsync displayOutput $ \ displayThread -> do
132118 -- Although migrations are run on service start up we are running them here before
133119 -- to prevent race conditions between brig and galley
134120 -- which cause flakiness and can make the complete test suite fail
135- runAppWithEnv env runMigrations
121+ -- runAppWithEnv env runMigrations
136122 -- Currently 4 seems to be stable, more seems to create more timeouts.
137123 report <- fmap mconcat $ pooledForConcurrentlyN 4 tests $ \ (qname, _, _, action) -> do
138124 timestamp <- getCurrentTime
@@ -156,7 +142,7 @@ runTests tests mXMLOutput cfg shardingGroup = do
156142 pure (TestSuiteReport [TestCaseReport qname TestSuccess tm])
157143 writeChan output Nothing
158144 wait displayThread
159- deleteFederationV0AndV1Queues genv
145+ -- deleteFederationV0AndV1Queues genv
160146 printReport report
161147 mapM_ (saveXMLReport report) mXMLOutput
162148 when (any (\ testCase -> testCase. result /= TestSuccess ) report. cases) $
@@ -168,58 +154,58 @@ runTests tests mXMLOutput cfg shardingGroup = do
168154 e <- mkEnv Nothing g
169155 pure (g, e)
170156
171- runMigrations :: App ()
172- runMigrations = do
173- cwdBase <- asks (. servicesCwdBase)
174- let brig = " brig"
175- let (cwd, exe) = case cwdBase of
176- Nothing -> (Nothing , brig)
177- Just dir ->
178- (Just (dir </> brig), " ../../dist" </> brig)
179- getConfig <- readAndUpdateConfig def backendA Brig
180- config <- liftIO getConfig
181- tempFile <- liftIO $ writeTempFile " /tmp" " brig-migrations.yaml" (cs $ Yaml. encode config)
182- dynDomains <- asks (. dynamicDomains)
183- pool <- asks (. resourcePool)
184- lowerCodensity $ do
185- resources <- acquireResources (length dynDomains) pool
186- let dbnames = [backendA. berPostgresqlDBName, backendB. berPostgresqlDBName] <> map (. berPostgresqlDBName) resources
187- for_ dbnames $ runMigration exe tempFile cwd
188- liftIO $ putStrLn " Postgres migrations finished"
189- where
190- runMigration :: (MonadIO m ) => FilePath -> FilePath -> Maybe FilePath -> String -> m ()
191- runMigration exe tempFile cwd dbname = do
192- let cp = (proc exe [" -c" , tempFile, " migrate-postgres" , " --dbname" , dbname]) {cwd}
193- (_, _, _, ph) <- liftIO $ createProcess cp
194- void $ liftIO $ waitForProcess ph
195-
196- deleteFederationV0AndV1Queues :: GlobalEnv -> IO ()
197- deleteFederationV0AndV1Queues env = do
198- let testDomains = env. gDomain1 : env. gDomain2 : env. gDynamicDomains
199- putStrLn " Attempting to delete federation V0 queues..."
200- (mV0User, mV0Pass) <- readCredsFromEnvWithSuffix " V0"
201- fromMaybe (putStrLn " No or incomplete credentials for fed V0 RabbitMQ" ) $
202- deleteFederationQueues testDomains env. gRabbitMQConfigV0 <$> mV0User <*> mV0Pass
203-
204- putStrLn " Attempting to delete federation V1 queues..."
205- (mV1User, mV1Pass) <- readCredsFromEnvWithSuffix " V1"
206- fromMaybe (putStrLn " No or incomplete credentials for fed V1 RabbitMQ" ) $
207- deleteFederationQueues testDomains env. gRabbitMQConfigV1 <$> mV1User <*> mV1Pass
208- where
209- readCredsFromEnvWithSuffix :: String -> IO (Maybe Text , Maybe Text )
210- readCredsFromEnvWithSuffix suffix =
211- (,)
212- <$> (fmap fromString <$> lookupEnv (" RABBITMQ_USERNAME_" <> suffix))
213- <*> (fmap fromString <$> lookupEnv (" RABBITMQ_PASSWORD_" <> suffix))
214-
215- deleteFederationQueues :: [String ] -> RabbitMqAdminOpts -> Text -> Text -> IO ()
216- deleteFederationQueues testDomains opts username password = do
217- client <- mkRabbitMqAdminClientEnvWithCreds opts username password
218- for_ testDomains $ \ domain -> do
219- page <- client. listQueuesByVHost opts. vHost (fromString $ " ^backend-notifications\\ ." <> domain <> " $" ) True 100 1
220- for_ page. items $ \ queue -> do
221- putStrLn $ " Deleting queue " <> T. unpack queue. name
222- void $ deleteQueue client opts. vHost queue. name
157+ -- runMigrations :: App ()
158+ -- runMigrations = do
159+ -- cwdBase <- asks (.servicesCwdBase)
160+ -- let brig = "brig"
161+ -- let (cwd, exe) = case cwdBase of
162+ -- Nothing -> (Nothing, brig)
163+ -- Just dir ->
164+ -- (Just (dir </> brig), "../../dist" </> brig)
165+ -- getConfig <- readAndUpdateConfig def backendA Brig
166+ -- config <- liftIO getConfig
167+ -- tempFile <- liftIO $ writeTempFile "/tmp" "brig-migrations.yaml" (cs $ Yaml.encode config)
168+ -- dynDomains <- asks (.dynamicDomains)
169+ -- pool <- asks (.resourcePool)
170+ -- lowerCodensity $ do
171+ -- resources <- acquireResources (length dynDomains) pool
172+ -- let dbnames = [backendA.berPostgresqlDBName, backendB.berPostgresqlDBName] <> map (.berPostgresqlDBName) resources
173+ -- for_ dbnames $ runMigration exe tempFile cwd
174+ -- liftIO $ putStrLn "Postgres migrations finished"
175+ -- where
176+ -- runMigration :: (MonadIO m) => FilePath -> FilePath -> Maybe FilePath -> String -> m ()
177+ -- runMigration exe tempFile cwd dbname = do
178+ -- let cp = (proc exe ["-c", tempFile, "migrate-postgres", "--dbname", dbname]) {cwd}
179+ -- (_, _, _, ph) <- liftIO $ createProcess cp
180+ -- void $ liftIO $ waitForProcess ph
181+
182+ -- deleteFederationV0AndV1Queues :: GlobalEnv -> IO ()
183+ -- deleteFederationV0AndV1Queues env = do
184+ -- let testDomains = env.gDomain1 : env.gDomain2 : env.gDynamicDomains
185+ -- putStrLn "Attempting to delete federation V0 queues..."
186+ -- (mV0User, mV0Pass) <- readCredsFromEnvWithSuffix "V0"
187+ -- fromMaybe (putStrLn "No or incomplete credentials for fed V0 RabbitMQ") $
188+ -- deleteFederationQueues testDomains env.gRabbitMQConfigV0 <$> mV0User <*> mV0Pass
189+ --
190+ -- putStrLn "Attempting to delete federation V1 queues..."
191+ -- (mV1User, mV1Pass) <- readCredsFromEnvWithSuffix "V1"
192+ -- fromMaybe (putStrLn "No or incomplete credentials for fed V1 RabbitMQ") $
193+ -- deleteFederationQueues testDomains env.gRabbitMQConfigV1 <$> mV1User <*> mV1Pass
194+ -- where
195+ -- readCredsFromEnvWithSuffix :: String -> IO (Maybe Text, Maybe Text)
196+ -- readCredsFromEnvWithSuffix suffix =
197+ -- (,)
198+ -- <$> (fmap fromString <$> lookupEnv ("RABBITMQ_USERNAME_" <> suffix))
199+ -- <*> (fmap fromString <$> lookupEnv ("RABBITMQ_PASSWORD_" <> suffix))
200+ --
201+ -- deleteFederationQueues :: [String] -> RabbitMqAdminOpts -> Text -> Text -> IO ()
202+ -- deleteFederationQueues testDomains opts username password = do
203+ -- client <- mkRabbitMqAdminClientEnvWithCreds opts username password
204+ -- for_ testDomains $ \domain -> do
205+ -- page <- client.listQueuesByVHost opts.vHost (fromString $ "^backend-notifications\\." <> domain <> "$") True 100 1
206+ -- for_ page.items $ \queue -> do
207+ -- putStrLn $ "Deleting queue " <> T.unpack queue.name
208+ -- void $ deleteQueue client opts.vHost queue.name
223209
224210doListTests :: [(String , String , String , x )] -> IO ()
225211doListTests tests = for_ tests $ \ (qname, _desc, _full, _) -> do
0 commit comments