tmp-postgres 0.3.0.0 → 0.3.0.1
raw patch · 2 files changed
+14/−11 lines, 2 files
Files
test/Database/Postgres/Temp/InternalSpec.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE OverloadedStrings, DeriveDataTypeable, QuasiQuotes, ScopedTypeVariables #-}+{-# LANGUAGE OverloadedStrings, DeriveDataTypeable, QuasiQuotes, ScopedTypeVariables, LambdaCase #-} module Database.Postgres.Temp.InternalSpec where import Test.Hspec import System.IO.Temp@@ -14,12 +14,8 @@ import System.Exit import System.Timeout(timeout) import Data.Either-{--import qualified Database.PostgreSQL.LibPQ as LibPQ-import qualified Database.PostgreSQL.Simple.Internal as PS-import Control.Monad.Reader-import Data.Traversable--}+import Data.Function (fix)+import Control.Concurrent mkDevNull :: IO Handle mkDevNull = openFile "/dev/null" WriteMode@@ -123,6 +119,8 @@ [ ("wal_level", "replica") , ("archive_mode", "on") , ("max_wal_senders", "2")+ , ("fsync", "on")+ , ("synchronous_commit", "on") ] } @@ -164,12 +162,17 @@ removeDirectoryRecursive dataDir createDirectory dataDir let untarCommand = "tar -C" ++ dataDir ++ " -xf " ++ baseBackupFile ++ "/base.tar"- _ <- system untarCommand- _ <- system ("chmod -R 700 " ++ dataDir)- writeFile (dataDir ++ "/recovery.conf") $ "recovery_target_name='pitr'\nrecovery_target_inclusive=true\nrestore_command='"+ system untarCommand `shouldReturn` ExitSuccess+ system ("chmod -R 700 " ++ dataDir) `shouldReturn` ExitSuccess+ writeFile (dataDir ++ "/recovery.conf") $ "recovery_target_name='pitr'\nrecovery_target_action='promote'\nrecovery_target_inclusive=true\nrestore_command='" ++ "cp " ++ walArchiveDir ++ "/%f %p'" startPostgres db bracket (connectPostgreSQL $ BSC.pack $ connectionString db) close $ \conn1 -> do+ fix $ \next -> do+ fmap (fromOnly . head) (query_ conn1 "SELECT pg_is_in_recovery()") >>= \case+ True -> threadDelay 100000 >> next+ False -> pure ()+ query_ conn1 "SELECT id FROM foo ORDER BY id ASC" `shouldReturn` [Only (1 :: Int)]
tmp-postgres.cabal view
@@ -1,5 +1,5 @@ name: tmp-postgres-version: 0.3.0.0+version: 0.3.0.1 synopsis: Start and stop a temporary postgres for testing description: This module provides functions creating a temporary postgres instance on a random port for testing.