用于管理用于测试的守护程序的工具和装置套件

pifpaf的Python项目详细描述


Build Statushttps://badge.fury.io/py/pifpaf.svg

pifpaf是一套fixtures和命令行工具,允许启动 停止守护进程以快速丢弃使用。当 需要这些守护进程运行integration testing。它最初是从 它的前苏联。

用法

要使用pifpaf,只需调用 需要。它将设置临时环境并导出一些环境 变量供您访问:

$ 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
$

您也可以在不提供命令行的情况下运行它:

$ 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

杀死pid包含在$pifpaf\u pid中的守护进程将停止 启动守护进程并清理测试环境。你可以自己杀或者用 定义的函数pifpaf_stop。

环境变量

pifpaf导出几个环境变量:

  • pifpaf_守护进程其中包含启动的守护进程的名称
  • pifpaf_url其中包含守护进程的url
  • pifpaf_pidpifpaf守护进程的pid
  • pifpaf\$daemon\*变量,其中包含特定于守护进程的变量, 例如端口、数据库名称、url等。

一次运行多个程序

pifpaf提供了更改其环境变量前缀的能力, 允许您嵌套多个pifpaf实例,从而运行多个 一次守护进程:

$ 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

pifpaf_url环境变量将包含所有url的列表 由PIFPAF检测和设置。您可以用 –全局url变量选项。

如何在发动机罩下工作

pifpaf将使用当前posix用户启动所请求的守护进程。数据文件 的守护进程将被放置在临时目录中。全系统 可能存在的配置守护进程根本不被触摸。

pifpaf希望在您的系统上找到守护程序二进制文件(如mysqlcite>,mysqldpg_configpg_ctlrabbitmq server等)。

清理python fixture或终止pifpaf时,守护进程是 已停止并删除临时目录。

pifpaf.jpg

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:在迭代器类型(接口/实现类)之间转换?   java“Click Method”不断返回“Stale Element Exceoption”?   Android应用程序/进程的java生命周期?   java在发布消息时收到“无法识别的Windowssocket错误:0:recv失败”   java如何返回第二个值   java将基本授权头添加到一些请求中   使用改型安卓的java Post请求错误   PropertyPlaceHolderConfigure位置内的java Spring占位符   java是导入com的工具。谷歌。安卓gms。gcm无法解决,Google Play服务已经安装   java如何获取JSON数据的多个可选值?   java如何使用ApachePOI从word中的形状读取文本   安卓 java。Eclipse中的lang.NoClassDefFoundError,但不适用于Ant   如何在Java中用stream()将Map<v1,Set<v2>>转换为Map<v2,Set<v1>>   循环在java中循环时,如何从数组列表中删除某些内容?