tmp-postgres-0.1.0.8: Start and stop a temporary postgres for testing

Safe HaskellNone
LanguageHaskell2010

Database.Postgres.Temp

Contents

Description

This module provides functions greating a temporary postgres instance on a random port for testing.

result <- start []
case result of
  Left err -> print err
  Right tempDB -> do
     -- Do stuff
     stop tempDB

The are few different methods for starting postgres which provide different methods of dealing with stdout and stderr.

The start methods use a config based on the one used by pg_tmp, but can be overriden by in different values to the first argument of the start functions.

WARNING!! Ubuntu's PostgreSQL installation does not put initdb on the PATH. We need to add it manually. The necessary binaries are in the /usr/lib/postgresql/VERSION/bin/ directory, and should be added to the PATH

echo "export PATH=$PATH:/usr/lib/postgresql/VERSION/bin/" >> /home/ubuntu/.bashrc

Synopsis

Types

data DB Source #

Constructors

DB 

Fields

Starting postgres

startWithHandles is the most general way to start postgres. It allows the user to pass in it's own handles for stdout and stderr. start and startAndLogToTmp both call startWithHandles passing in different handles. start uses the current process's stdout and stderr and startAndLogToTmp logs to files in the mainDir.

postgres is started with a default config with the following options:

  listen_addresses = ''
  shared_buffers = 12MB
  fsync = off
  synchronous_commit = off
  full_page_writes = off
  log_min_duration_statement = 0
  log_connections = on
  log_disconnections = on
  unix_socket_directories = {mainDir}
  client_min_messages = ERROR

Any of the options can be overriden by passing in a different value when starting

  Right db <- start [("log_min_duration_statement", "1000")]

start Source #

Arguments

:: [(String, String)]

Extra options which override the defaults

-> IO (Either StartError DB) 

start postgres and use the current processes stdout and stderr

startAndLogToTmp Source #

Arguments

:: [(String, String)]

Extra options which override the defaults

-> IO (Either StartError DB) 

Start postgres and log it's all stdout to {mainDir}/output.txt and {mainDir}/error.txt

startWithHandles Source #

Arguments

:: [(String, String)]

Extra options which override the defaults

-> Handle
stdout
-> Handle
stderr
-> IO (Either StartError DB) 

Start postgres and pass in handles for stdout and stderr

Stopping postgres

stop :: DB -> IO ExitCode Source #

Stop postgres and clean up the temporary database folder.