契约测试(一) -- 环境搭建

背景:关注这种测试方法很久,却一直困于各种情况,没有启动。最近终于花了一些时间搭建了环境,并且运行出一个简单Demo。在此做一个记录。

环境:JDK1.8 + Gradle4.6 + Postgres9.6 + pact_broker

步骤:

网上有各种介绍介绍的文档,较为推荐的是下载Postgres和Pact-Broker的Docker镜像部署。因为公司限制,这里采用“混血”的方式。即,使用源码安装Postgres和配置,再安装的Pact-Broker镜像。

一、Postgres的安装

1. 这里,参考网上有位大神的源码安装和配置。https://blog.csdn.net/u010177412/article/details/82150207

需要注意的是:

1)如果不设置prefix,一般默认安装在/usr/local/pgsql目录下,可以用which postgresql查看。

2)一般安装完成就有用户postgres了,只是需要修改权限。

2. 配置。仍然参考上述blog。有以下几点根据自己环境修改。

1)新建目录/usr/local/pgsql/data和/usr/local/pgsql/log。用于存放postgres的数据和日志,要记得chown给postgres。

2)用root用户编辑/etc/profile,增加上面blog中所说的环境变量

3)执行到blog第4步时,需要首先切换为用户postgres

4)修改配置文件。因为postgresql默认关闭了远程连接,通过修改/user/local/pgsql/data/下的pg_hba.confpostgresql.conf开启远程连接。

a.在pg_hba.conf中添加如下内容

契约测试(一) -- 环境搭建

b.在postgresql.conf中,注释掉原来的listen_addresses,添加红框中的内容

契约测试(一) -- 环境搭建

5)重启服务。# systemctl restart postgresql.service

6)关闭防火墙。

# systemctl stop firewalld.service   -- 停止防火墙

# systemctl disable firewalld.service  -- 关闭防火墙

3.创建数据库和用户。这里可以用客户端去连接,如Navicat,或者通过命令行创建。

# su postgres  -- 切换用户

bash-4.2$ psql postgres -- 进入数据库

postgres=# create user pact_broker with password 'pact_broker';

postgres=# create database pact_broker with owner pact_broker;

postgres=# grant all privileges on database pact_broker to pact_broker;

二、安装pact-broker

1. 到官网中拉取最新的镜像https://hub.docker.com/r/dius/pact-broker/

# docker pull dius/pact-broker

# docker save -o pact-broker-latest.tar dius/pact-broker:latest

2.将拉取的镜像放到本地仓库

# docker load -i pact-broker-latest.tar

# docker images  -- 查看镜像ID

3.拉起一个容器

# docker run --name pact-broker -e PACT_BROKER_DATABASE_USERNAME=pact_broker -e PACT_BROKER_DATABASE_PASSWORD=pact_broker -e PACT_BROKER_DATABASE_NAME=pact_broker -e PACT_BROKER_DATABASE_HOST=<宿主机的IP> -p 80:80(外部端口号:内部容器端口号) -d <镜像ID>

注意:

1)这里大写的参数前都要添加-e

2)参数的值即前面配置postgres的值

4.配置好以后访问宿主机IP和映射出来的端口号,可以看到如下页面

契约测试(一) -- 环境搭建

参考资料:

1. https://github.com/pact-foundation/pact_broker

2. https://hub.docker.com/r/dius/pact-broker/

3.https://github.com/DiUS/pact_broker-docker -- 这个版本好像新一些