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

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使用并发hashmap减少线程池的内存使用?   java为什么在提交片段后出现错误“getParentActivityIntent:badActivity name”?   vim UltiSnips扩展java包   java给出了一个名称列表,如何插入、删除、显示、搜索和退出?Java程序   java Spring集成:只从FTP服务器下载新的或更新的文件?   使用Java中的Scala:将函数作为参数传递   java线程1每秒填充一个映射,线程2每60秒保存一个条目   java从私有类访问公共类中的方法/字段   如何使用ApacheSpark流媒体和JavaAPI从所有人那里获取英语推文?   java是否可以在父标记和子标记中编写XMLSchemainstance?   java无法读取文本文件,也找不到解决方案   java在运行时加载类时无法创建bean