Name | pifpaf JSON |
Version |
3.2.3
JSON |
| download |
home_page | https://github.com/jd/pifpaf |
Summary | Suite of tools and fixtures to manage daemons for testing |
upload_time | 2024-10-11 14:12:26 |
maintainer | None |
docs_url | None |
author | Julien Danjou |
requires_python | None |
license | None |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
==========
Pifpaf
==========
.. image:: https://badge.fury.io/py/pifpaf.svg
:target: https://badge.fury.io/py/pifpaf
Pifpaf is a suite of `fixtures`_ and 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 run `integration testing`_. It originaly evolved from
its precussor `overtest`_.
.. _fixtures: https://pypi.python.org/pypi/fixtures
.. _overtest: https://github.com/jd/overtest
Supported daemons
=================
Pifpaf currently supports:
* `PostgreSQL`_
* `MySQL`_
* `Memcached`_
* `InfluxDB`_
* `Etcd`_ (with clustering)
* `Redis`_ (with sentinel mode)
* `Valkey`_
* `Elasticsearch`_
* `ZooKeeper`_
* `Gnocchi`_
* `Aodh`_
* `Ceph`_
* `RabbitMQ`_ (with clustering)
* `FakeS3`_
* `Consul`_
* `Keystone`_
* `CouchDB`_
* `S3rver`_
* `MongoDB`_
* `OpenStack Swift`_
* `Vault`_
* `HttpBin`_
.. _Consul: https://www.consul.io/
.. _PostgreSQL: http://postgresql.org
.. _MySQL: http://mysql.org
.. _Memcached: http://memcached.org
.. _InfluxDB: http://influxdb.org
.. _Etcd: https://coreos.com/etcd/
.. _Redis: http://redis.io/
.. _Valkey: https://valkey.io/
.. _Elasticsearch: https://www.elastic.co/
.. _ZooKeeper: https://zookeeper.apache.org/
.. _Gnocchi: http://gnocchi.xyz
.. _Aodh: http://launchpad.net/aodh
.. _Ceph: http://ceph.com
.. _RabbitMQ: https://www.rabbitmq.com/
.. _FakeS3: https://github.com/jubos/fake-s3
.. _Keystone: https://launchpad.net/keystone
.. _CouchDB: http://couchdb.apache.org/
.. _S3rver: https://www.npmjs.com/package/s3rver
.. _MongoDB: https://www.mongodb.com
.. _OpenStack Swift: https://docs.openstack.org/developer/swift/
.. _Vault: https://www.vaultproject.io/
.. _HttpBin: https://httpbin.org/
Usage
=====
To use Pifpaf, simply call the `pifpaf 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_stop
Killing the daemon whose PID is contained in `$PIFPAF_PID` will stop the
launched daemon and clean the test environment. You can kill it yourself or use
the defined function `pifpaf_stop`.
Environment variables
=====================
Pifpaf exports a few environment variable:
* `PIFPAF_DAEMON` which contains the name of the daemon launched
* `PIFPAF_URL` which contains the URL to the daemon
* `PIFPAF_PID` the PID of the pifpaf daemon
* `PIFPAF_$daemon_*` variables, which contains daemon specific variables,
such as port, database name, URL, etc.
.. _integration testing: https://en.wikipedia.org/wiki/Integration_testing
Running several programs at once
================================
Pifpaf 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=9824
The `PIFPAF_URLS` environment variable will contain the list of all URLs
detected and set-up by Pifpaf. You can override this variable name with the
`--global-urls-variable` option.
How it works under the hood
===========================
Pifpaf 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 (like `mysql`, `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.
.. image:: pifpaf.jpg
Raw data
{
"_id": null,
"home_page": "https://github.com/jd/pifpaf",
"name": "pifpaf",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Julien Danjou",
"author_email": "julien@danjou.info",
"download_url": "https://files.pythonhosted.org/packages/90/cf/9409d3fbfb6c7c8df434bcf342bfd5f03497ec50d38b5ae7245ba4cd3557/pifpaf-3.2.3.tar.gz",
"platform": null,
"description": "==========\n Pifpaf\n==========\n\n.. image:: https://badge.fury.io/py/pifpaf.svg\n :target: https://badge.fury.io/py/pifpaf\n\nPifpaf is a suite of `fixtures`_ and a command-line tool that allows to start\nand stop daemons for a quick throw-away usage. This is typically useful when\nneeding these daemons to run `integration testing`_. It originaly evolved from\nits precussor `overtest`_.\n\n.. _fixtures: https://pypi.python.org/pypi/fixtures\n.. _overtest: https://github.com/jd/overtest\n\nSupported daemons\n=================\n\nPifpaf currently supports:\n\n* `PostgreSQL`_\n* `MySQL`_\n* `Memcached`_\n* `InfluxDB`_\n* `Etcd`_ (with clustering)\n* `Redis`_ (with sentinel mode)\n* `Valkey`_\n* `Elasticsearch`_\n* `ZooKeeper`_\n* `Gnocchi`_\n* `Aodh`_\n* `Ceph`_\n* `RabbitMQ`_ (with clustering)\n* `FakeS3`_\n* `Consul`_\n* `Keystone`_\n* `CouchDB`_\n* `S3rver`_\n* `MongoDB`_\n* `OpenStack Swift`_\n* `Vault`_\n* `HttpBin`_\n\n.. _Consul: https://www.consul.io/\n.. _PostgreSQL: http://postgresql.org\n.. _MySQL: http://mysql.org\n.. _Memcached: http://memcached.org\n.. _InfluxDB: http://influxdb.org\n.. _Etcd: https://coreos.com/etcd/\n.. _Redis: http://redis.io/\n.. _Valkey: https://valkey.io/\n.. _Elasticsearch: https://www.elastic.co/\n.. _ZooKeeper: https://zookeeper.apache.org/\n.. _Gnocchi: http://gnocchi.xyz\n.. _Aodh: http://launchpad.net/aodh\n.. _Ceph: http://ceph.com\n.. _RabbitMQ: https://www.rabbitmq.com/\n.. _FakeS3: https://github.com/jubos/fake-s3\n.. _Keystone: https://launchpad.net/keystone\n.. _CouchDB: http://couchdb.apache.org/\n.. _S3rver: https://www.npmjs.com/package/s3rver\n.. _MongoDB: https://www.mongodb.com\n.. _OpenStack Swift: https://docs.openstack.org/developer/swift/\n.. _Vault: https://www.vaultproject.io/\n.. _HttpBin: https://httpbin.org/\n\nUsage\n=====\nTo use Pifpaf, simply call the `pifpaf run $daemon <command>` program that you\nneed. It will setup the temporary environment and export a few environment\nvariable for you to access it::\n\n $ pifpaf run postgresql psql template1\n Expanded display is used automatically.\n Line style is unicode.\n SET\n psql (9.4.5)\n Type \"help\" for help.\n\n template1=# \\l\n List of databases\n Name \u2502 Owner \u2502 Encoding \u2502 Collate \u2502 Ctype \u2502 Access privileges\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n postgres \u2502 jd \u2502 UTF8 \u2502 en_US.UTF-8 \u2502 en_US.UTF-8 \u2502\n template0 \u2502 jd \u2502 UTF8 \u2502 en_US.UTF-8 \u2502 en_US.UTF-8 \u2502 =c/jd \u21b5\n \u2502 \u2502 \u2502 \u2502 \u2502 jd=CTc/jd\n template1 \u2502 jd \u2502 UTF8 \u2502 en_US.UTF-8 \u2502 en_US.UTF-8 \u2502 =c/jd \u21b5\n \u2502 \u2502 \u2502 \u2502 \u2502 jd=CTc/jd\n (3 rows)\n\n template1=# \\q\n $\n\nYou can also run it with no command line provided::\n\n $ eval `pifpaf run memcached`\n $ env | grep PIFPAF\n PIFPAF_PID=13387\n PIFPAF_DAEMON=memcached\n PIFPAF_URL=memcached://localhost:11212\n PIFPAF_MEMCACHED_URL=memcached://localhost:11212\n $ pifpaf_stop\n\nKilling the daemon whose PID is contained in `$PIFPAF_PID` will stop the\nlaunched daemon and clean the test environment. You can kill it yourself or use\nthe defined function `pifpaf_stop`.\n\nEnvironment variables\n=====================\nPifpaf exports a few environment variable:\n\n* `PIFPAF_DAEMON` which contains the name of the daemon launched\n* `PIFPAF_URL` which contains the URL to the daemon\n* `PIFPAF_PID` the PID of the pifpaf daemon\n* `PIFPAF_$daemon_*` variables, which contains daemon specific variables,\n such as port, database name, URL, etc.\n\n.. _integration testing: https://en.wikipedia.org/wiki/Integration_testing\n\n\nRunning several programs at once\n================================\nPifpaf provides the ability to change the prefix of its environment variable,\nallowing you to nest several Pifpaf instances and therefore running several\ndaemons at once::\n\n $ pifpaf --env-prefix STORAGE run memcached -- pifpaf --env-prefix INDEX run postgresql $SHELL\n $ env | grep STORAGE\n STORAGE_DATA=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmpVreJ0J\n STORAGE_MEMCACHED_PORT=11212\n STORAGE_URL=memcached://localhost:11212\n STORAGE_PID=71019\n STORAGE_DAEMON=memcached\n STORAGE_MEMCACHED_URL=memcached://localhost:11212\n $ env | grep INDEX\n INDEX_DATA=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmphAG7tf\n INDEX_URL=postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmphAG7tf&port=9824\n INDEX_PID=71021\n INDEX_DAEMON=postgresql\n INDEX_POSTGRESQL_URL=postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmphAG7tf&port=9824\n $ echo $PIFPAF_URLS\n memcached://localhost:11212;postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmpQ2BWFH&port=9824\n\nThe `PIFPAF_URLS` environment variable will contain the list of all URLs\ndetected and set-up by Pifpaf. You can override this variable name with the\n`--global-urls-variable` option.\n\nHow it works under the hood\n===========================\n\nPifpaf will start the asked daemon using the current Posix user. The data file\nof the daemon will be placed in a temporary directory. The system-wide\nconfigured daemon that might exists is not touched at all.\n\nPifpaf expected to find daemon binaries on your system (like `mysql`, `mysqld`,\n`pg_config`, `pg_ctl`, `rabbitmq-server`, etc).\n\nWhen the Python fixture is cleaned or when Pifpaf is terminated, the daemon is\nstopped and the temporary directory removed.\n\n.. image:: pifpaf.jpg\n",
"bugtrack_url": null,
"license": null,
"summary": "Suite of tools and fixtures to manage daemons for testing",
"version": "3.2.3",
"project_urls": {
"Homepage": "https://github.com/jd/pifpaf"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "410794380a430676891516b301f6015ebe4520c7e4c0ae0382c84fd82e802bd1",
"md5": "c2c2bdb03c08dccacce84294830032eb",
"sha256": "dbe5e5f46a5aa51883a5d086f2bb5ae5aca55d8d7d60da964c0f4814000d1e08"
},
"downloads": -1,
"filename": "pifpaf-3.2.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c2c2bdb03c08dccacce84294830032eb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 63519,
"upload_time": "2024-10-11T14:12:20",
"upload_time_iso_8601": "2024-10-11T14:12:20.726277Z",
"url": "https://files.pythonhosted.org/packages/41/07/94380a430676891516b301f6015ebe4520c7e4c0ae0382c84fd82e802bd1/pifpaf-3.2.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "90cf9409d3fbfb6c7c8df434bcf342bfd5f03497ec50d38b5ae7245ba4cd3557",
"md5": "3e71313e365fdf3b78cc5493fbf19f69",
"sha256": "2f4dfd64016760b094e7687549ccc95344fbfb582e7f142557342bd443c2a9cf"
},
"downloads": -1,
"filename": "pifpaf-3.2.3.tar.gz",
"has_sig": false,
"md5_digest": "3e71313e365fdf3b78cc5493fbf19f69",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 185673,
"upload_time": "2024-10-11T14:12:26",
"upload_time_iso_8601": "2024-10-11T14:12:26.960812Z",
"url": "https://files.pythonhosted.org/packages/90/cf/9409d3fbfb6c7c8df434bcf342bfd5f03497ec50d38b5ae7245ba4cd3557/pifpaf-3.2.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-11 14:12:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jd",
"github_project": "pifpaf",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "pifpaf"
}