Package: pifpaf
Pifpaf is a suite offixturesand a command-line tool that allows to start
and stop daemons for a quick throw-away usage. This is typically useful when
needing these daemons to runintegration testing. It originaly evolved from
its precussorovertest.Supported daemonsPifpaf currently supports:PostgreSQLMySQLMemcachedInfluxDBEtcd(with clustering)Redis(with sentinel mode)ElasticsearchZooKeeperGnocchiAodhCephRabbitMQ(with clustering)FakeS3ConsulKeystoneCouchDBS3rverMongoDBOpenStack SwiftVaultHttpBinUsageTo use Pifpaf, simply call thepifpaf run $daemon <command>program that you
need. It will setup the temporary environment and export a few environment
variable for you to access it:$ pifpaf run postgresql psql template1
Expanded display is used automatically.
Line style is unicode.
SET
psql (9.4.5)
Type "help" for help.

template1=# \l
                              List of databases
   Name    │ Owner │ Encoding │   Collate   │    Ctype    │ Access privileges
───────────┼───────┼──────────┼─────────────┼─────────────┼───────────────────
 postgres  │ jd    │ UTF8     │ en_US.UTF-8 │ en_US.UTF-8 │
 template0 │ jd    │ UTF8     │ en_US.UTF-8 │ en_US.UTF-8 │ =c/jd            ↵
           │       │          │             │             │ jd=CTc/jd
 template1 │ jd    │ UTF8     │ en_US.UTF-8 │ en_US.UTF-8 │ =c/jd            ↵
           │       │          │             │             │ jd=CTc/jd
(3 rows)

template1=# \q
$You can also run it with no command line provided:$ eval `pifpaf run memcached`
$ env | grep PIFPAF
PIFPAF_PID=13387
PIFPAF_DAEMON=memcached
PIFPAF_URL=memcached://localhost:11212
PIFPAF_MEMCACHED_URL=memcached://localhost:11212
$ pifpaf_stopKilling the daemon whose PID is contained in$PIFPAF_PIDwill stop the
launched daemon and clean the test environment. You can kill it yourself or use
the defined functionpifpaf_stop.Environment variablesPifpaf exports a few environment variable:PIFPAF_DAEMONwhich contains the name of the daemon launchedPIFPAF_URLwhich contains the URL to the daemonPIFPAF_PIDthe PID of the pifpaf daemonPIFPAF_$daemon_*variables, which contains daemon specific variables,
such as port, database name, URL, etc.Running several programs at oncePifpaf provides the ability to change the prefix of its environment variable,
allowing you to nest several Pifpaf instances and therefore running several
daemons at once:$ pifpaf --env-prefix STORAGE run memcached -- pifpaf --env-prefix INDEX run postgresql $SHELL
$ env | grep STORAGE
STORAGE_DATA=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmpVreJ0J
STORAGE_MEMCACHED_PORT=11212
STORAGE_URL=memcached://localhost:11212
STORAGE_PID=71019
STORAGE_DAEMON=memcached
STORAGE_MEMCACHED_URL=memcached://localhost:11212
$ env | grep INDEX
INDEX_DATA=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmphAG7tf
INDEX_URL=postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmphAG7tf&port=9824
INDEX_PID=71021
INDEX_DAEMON=postgresql
INDEX_POSTGRESQL_URL=postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmphAG7tf&port=9824
$ echo $PIFPAF_URLS
memcached://localhost:11212;postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmpQ2BWFH&port=9824ThePIFPAF_URLSenvironment variable will contain the list of all URLs
detected and set-up by Pifpaf. You can override this variable name with the–global-urls-variableoption.How it works under the hoodPifpaf will start the asked daemon using the current Posix user. The data file
of the daemon will be placed in a temporary directory. The system-wide
configured daemon that might exists is not touched at all.Pifpaf expected to find daemon binaries on your system (likemysql,mysqld,pg_config,pg_ctl,rabbitmq-server, etc).When the Python fixture is cleaned or when Pifpaf is terminated, the daemon is
stopped and the temporary directory removed.