-
Notifications
You must be signed in to change notification settings - Fork 114
/
Copy pathtox.ini
405 lines (394 loc) · 20.2 KB
/
tox.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
; Formatting Conventions
; Each part of the env name
; 1. Services required to be present to run test suite. Allows us to select which Github Actions runner to place the test suite on.
; Examples: postgres, mysql, python (pure python, no service required)
; 2. Folder under tests/ that includes the test suite.
; Requires an entry under changedir to run the test suite from the correct folder.
; Should be prepended to any deps definitions as well to prevent environments from colliding.
; Examples: adapter_gunicorn, datastore_asyncpg, framework_aiohttp
; changedir =
; adapter_gunicorn: tests/adapter_gunicorn
; datastore_asyncpg: tests/datastore_asyncpg
; framework_aiohttp: tests/framework_aiohttp
; deps =
; adapter_gunicorn-gunicornlatest: gunicorn
; datastore_asyncpg: asyncpg
; framework_aiohttp-aiohttp01: aiohttp<2
; framework_aiohttp-aiohttp0202: aiohttp<2.3
; 3. Python version required. Uses the standard tox definitions. (https://tox.readthedocs.io/en/latest/config.html#tox-environments)
; Examples: py27,py36,py37,py38,py39,pypy,pypy3
; 4. Library and version (Optional). Used when testing multiple versions of the library, and may be omitted when only testing a single version.
; Versions should be specified with 2 digits per version number, so <3 becomes 02 and <3.5 becomes 0304. latest and master are also acceptable versions.
; Examples: uvicorn03, CherryPy0302, uvicornlatest
; deps =
; adapter_uvicorn-uvicorn03: uvicorn<0.4
; adapter_uvicorn-uvicornlatest: uvicorn
; framework_cherrypy-CherryPy0302: CherryPy<3.3.0
; framework_cherrypy-CherryPy0303: CherryPy<3.4.0
; 5. With or without New Relic C extensions (Optional). Used for testing agent features.
; Examples: with_extensions, without_extensions
; envlist =
; python-agent_features-pypy3-without_extensions,
; python-agent_streaming-py37-{with,without}_extensions,
;
; Full Format:
; services_required-tests_folder-python_version-library_and_version[optional]-with/without_c_extensions[optional]
;
; Full Examples:
; - memcached-datastore_bmemcached-py37-memcached030
; - python-agent_unittests-py38-with_extensions
; - python-adapter_gevent-py27
[tox]
setupdir = {toxinidir}
envlist =
python-adapter_cheroot-{py27,py36,py37,py38,py39,py310},
python-adapter_gevent-{py27,py36,py37,py38,py310},
python-adapter_gunicorn-{py36}-aiohttp1-gunicorn{19,latest},
python-adapter_gunicorn-{py36,py37,py38,py39,py310}-aiohttp3-gunicornlatest,
python-adapter_uvicorn-{py36,py37}-uvicorn03,
; Temporarily testing py36 on the uvicorn version preceeding v0.15
python-adapter_uvicorn-{py36}-uvicorn014
python-adapter_uvicorn-{py37,py38,py39,py310}-uvicornlatest,
python-agent_features-{py27,py36,py37,py38,py39,py310}-{with,without}_extensions,
python-agent_features-{pypy,pypy3}-without_extensions,
python-agent_streaming-{py27,py36,py37,py38,py39,py310}-{with,without}_extensions,
python-agent_unittests-{py27,py36,py37,py38,py39,py310}-{with,without}_extensions,
python-agent_unittests-{pypy,pypy3}-without_extensions,
python-application_celery-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
gearman-application_gearman-{py27,pypy},
python-component_djangorestframework-py27-djangorestframework0300,
python-component_djangorestframework-{py36,py37,py38,py39,py310}-djangorestframeworklatest,
python-component_flask_rest-{py27,py36,py37,py38,py39,pypy,pypy3},
python-component_tastypie-{py27,pypy}-tastypie0143,
python-component_tastypie-{py36,py37,py38,py39,pypy3}-tastypie{0143,latest},
python-coroutines_asyncio-{py36,py37,py38,py39,py310,pypy3},
python-cross_agent-{py27,py36,py37,py38,py39,py310}-{with,without}_extensions,
python-cross_agent-pypy-without_extensions,
postgres-datastore_asyncpg-{py36,py37,py38,py39,py310},
memcached-datastore_bmemcached-{pypy,py27,py36,py37,py38,py39,py310}-memcached030,
elasticsearchserver01-datastore_pyelasticsearch-{py27,py36,pypy},
elasticsearchserver01-datastore_elasticsearch-py27-elasticsearch{00,01,02,05},
elasticsearchserver07-datastore_elasticsearch-{py27,py36,py37,py38,py39,py310,pypy,pypy3}-elasticsearch{07},
memcached-datastore_memcache-{py27,py36,py37,py38,py39,py310,pypy,pypy3}-memcached01,
mysql-datastore_mysql-mysql080023-py27,
mysql-datastore_mysql-mysqllatest-{py36,py37,py38,py39,py310},
postgres-datastore_postgresql-{py36,py37,py38,py39},
postgres-datastore_psycopg2-{py27,py36,py37,py38,py39,py310}-psycopg20208,
postgres-datastore_psycopg2cffi-{py27,py36,pypy}-psycopg2cffi{0207,0208},
postgres-datastore_psycopg2cffi-{py37,py38,py39,py310}-psycopg2cffi0208,
memcached-datastore_pylibmc-{py27,py36,py37},
memcached-datastore_pymemcache-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
mongodb-datastore_pymongo-{py27,py36,py37,py38,py39,py310,pypy}-pymongo{03},
mysql-datastore_pymysql-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
solr-datastore_pysolr-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
redis-datastore_redis-{py27,py36,py37,py38,pypy,pypy3}-redis03,
redis-datastore_redis-{py36,py37,py38,py39,py310,pypy3}-redis{0400,latest},
solr-datastore_solrpy-{py27,pypy}-solrpy{00,01},
python-datastore_sqlite-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
memcached-datastore_umemcache-{py27,pypy},
python-external_boto3-{py27,py36,py37,py38,py39,py310}-boto01,
python-external_botocore-{py27,py36,py37,py38,py39,py310},
python-external_feedparser-py27-feedparser{05,06},
python-external_http-{py27,py36,py37,py38,py39,py310,pypy},
python-external_httplib-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
python-external_httplib2-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
python-external_httpx-{py36,py37,py38,py39,py310},
python-external_requests-{py27,py36,py37,py38,py39,py310,pypy,pypy3},
python-external_urllib3-{py27,py37,pypy}-urllib3{0109},
python-external_urllib3-{py27,py36,py37,py38,py39,py310,pypy,pypy3}-urllib3latest,
python-framework_aiohttp-{py36,py37,py38,py39,py310,pypy3}-aiohttp03,
python-framework_ariadne-{py36,py37,py38,py39,py310}-ariadnelatest,
python-framework_ariadne-py37-ariadne{0011,0012,0013},
python-framework_bottle-py27-bottle{0008,0009,0010},
python-framework_bottle-{py27,py36,py37,py38,py39,pypy3}-bottle{0011,0012},
python-framework_bottle-py310-bottle0012,
python-framework_bottle-pypy-bottle{0008,0009,0010,0011,0012},
python-framework_cherrypy-{py36,py37,py38,py39,py310,pypy3}-CherryPy18,
python-framework_cherrypy-{py36,py37}-CherryPy0302,
python-framework_cherrypy-pypy3-CherryPy0303,
python-framework_django-{pypy,py27}-Django0103,
python-framework_django-{pypy,py27,py37}-Django0108,
python-framework_django-{py39}-Django{0200,0201,0202,0300,0301,latest},
python-framework_django-{py36,py37,py38,py39,py310}-Django0302,
python-framework_falcon-{py27,py36,py37,py38,py39,pypy,pypy3}-falcon0103,
python-framework_falcon-{py36,py37,py38,py39,py310,pypy3}-falcon{0200,master},
python-framework_fastapi-{py36,py37,py38,py39,py310},
python-framework_flask-{pypy,py27}-flask0012,
python-framework_flask-{pypy,py27,py36,py37,py38,py39,py310,pypy3}-flask0101,
;temporarily disabling tests on flask master
;python-framework_flask-{py37,py38,py39,py310,pypy3}-flask{latest,master},
python-framework_flask-{py37,py38,py39,py310,pypy3}-flask{latest},
python-framework_graphene-{py36,py37,py38,py39,py310}-graphenelatest,
python-framework_graphene-{py27,py36,py37,py38,py39,pypy,pypy3}-graphene{0200,0201},
python-framework_graphene-py310-graphene0201,
python-framework_graphql-{py27,py36,py37,py38,py39,py310,pypy,pypy36}-graphql02,
python-framework_graphql-{py36,py37,py38,py39,py310,pypy36}-graphql03,
python-framework_graphql-py37-graphql{0202,0203,0300,0301,0302,master},
grpc-framework_grpc-{py27,py36}-grpc0125,
grpc-framework_grpc-{py36,py37,py38,py39,py310}-grpclatest,
python-framework_pyramid-{pypy,py27,py38}-Pyramid0104,
python-framework_pyramid-{pypy,py27,pypy3,py36,py37,py38,py39,py310}-Pyramid0110-cornice,
python-framework_pyramid-{pypy3,py36,py37,py38,py39,py310}-Pyramidmaster,
python-framework_sanic-{py38,pypy3}-sanic{190301,1906,1812,1912,200904,210300},
python-framework_sanic-{py36,py37,py38,py310,pypy3}-saniclatest,
python-framework_starlette-{py36,py310,pypy3}-starlette{0014,0015},
python-framework_starlette-{py36,py37,py38,py39,py310,pypy3}-starlette{latest},
python-framework_strawberry-{py37,py38,py39,py310}-strawberrylatest,
libcurl-framework_tornado-{py36,py37,py38,py39,py310,pypy3}-tornado0600,
libcurl-framework_tornado-{py37,py38,py39,py310}-tornadomaster,
rabbitmq-messagebroker_pika-{py27,py36,py37,py38,py39,pypy,pypy3}-pika0.13,
rabbitmq-messagebroker_pika-{py27,py36,py37,py38,py39,py310,pypy,pypy3}-pikalatest,
python-template_mako-{py27,py36,py37,py38,py39,py310}
[pytest]
usefixtures =
collector_available_fixture
collector_agent_registration
code_coverage
[testenv]
deps =
# Base Dependencies
{py36,py37,py38,py39,py310,pypy3}: pytest==6.2.5
{py27,pypy}: pytest==4.6.11
iniconfig
pytest-cov
WebTest==2.0.35
# Test Suite Dependencies
adapter_cheroot: cheroot
adapter_gevent: WSGIProxy2
adapter_gevent: gevent
adapter_gevent: urllib3
adapter_gunicorn-aiohttp1: aiohttp<2.0
adapter_gunicorn-aiohttp3: aiohttp<4.0
adapter_gunicorn-gunicorn19: gunicorn<20
adapter_gunicorn-gunicornlatest: gunicorn
adapter_uvicorn-uvicorn03: uvicorn<0.4
adapter_uvicorn-uvicorn014: uvicorn<0.15
adapter_uvicorn-uvicornlatest: uvicorn
agent_features: beautifulsoup4
agent_streaming-py27: protobuf<3.18.0
application_celery: celery<6.0
application_gearman: gearman<3.0.0
component_djangorestframework-djangorestframework0300: Django < 1.9
component_djangorestframework-djangorestframework0300: djangorestframework < 3.1
component_djangorestframework-djangorestframeworklatest: Django
component_djangorestframework-djangorestframeworklatest: djangorestframework
component_flask_rest: flask<0.13
component_flask_rest: flask-restful
component_flask_rest: flask-restplus
component_flask_rest: flask-restx
component_tastypie-tastypie0143: django-tastypie<0.14.4
component_tastypie-{py27,pypy}-tastypie0143: django<1.12
component_tastypie-{py36,py37,py38,py39,pypy3}-tastypie0143: django<3.0.1
component_tastypie-tastypielatest: django-tastypie
component_tastypie-tastypielatest: django
coroutines_asyncio: uvloop
cross_agent: mock==1.0.1
cross_agent: requests
datastore_asyncpg: asyncpg
datastore_bmemcached-memcached030: python-binary-memcached<0.31
datastore_bmemcached-memcached030: uhashring<2.0
datastore_elasticsearch: requests
datastore_elasticsearch-elasticsearch00: elasticsearch<1.0
datastore_elasticsearch-elasticsearch01: elasticsearch<2.0
datastore_elasticsearch-elasticsearch02: elasticsearch<3.0
datastore_elasticsearch-elasticsearch05: elasticsearch<6.0
datastore_elasticsearch-elasticsearch07: elasticsearch<8.0
datastore_memcache-memcached01: python-memcached<2
datastore_mysql-mysqllatest: mysql-connector-python
datastore_mysql-mysql080023: mysql-connector-python<8.0.24
datastore_postgresql: py-postgresql<1.3
datastore_psycopg2-psycopg20208: psycopg2-binary<2.9
datastore_psycopg2cffi-psycopg2cffi0207: psycopg2cffi<2.8
datastore_psycopg2cffi-psycopg2cffi0208: psycopg2cffi<2.9
datastore_pyelasticsearch: pyelasticsearch<2.0
datastore_pylibmc: pylibmc
datastore_pymemcache: pymemcache
datastore_pymongo-pymongo03: pymongo<4.0
datastore_pymysql: PyMySQL<0.11
datastore_pysolr: pysolr<4.0
datastore_redis-redislatest: redis
datastore_redis-redis0400: redis<4.1
datastore_redis-redis03: redis<4.0
datastore_redis-{py27,pypy}: rb
datastore_solrpy-solrpy00: solrpy<1.0
datastore_solrpy-solrpy01: solrpy<2.0
datastore_umemcache: umemcache<1.7
external_boto3-boto01: boto3<2.0
external_boto3-boto01: moto<2.0
external_boto3-py27: rsa<4.7.1
external_botocore: botocore
external_botocore-{py36,py37,py38,py39,py310}: moto[awslambda,ec2,iam]<3.0
external_botocore-py27: rsa<4.7.1
external_botocore-py27: moto[awslambda,ec2,iam]<2.0
external_feedparser-feedparser05: feedparser<6
external_feedparser-feedparser06: feedparser<7
external_httplib2: httplib2<1.0
external_httpx: httpx<0.17
external_requests: urllib3
external_requests: requests
external_urllib3-urllib30109: urllib3<1.10
external_urllib3-urllib3latest: urllib3
framework_aiohttp-aiohttp03: aiohttp<4
framework_ariadne-ariadnelatest: ariadne
framework_ariadne-ariadne0011: ariadne<0.12
framework_ariadne-ariadne0012: ariadne<0.13
framework_ariadne-ariadne0013: ariadne<0.14
framework_bottle-bottle0008: bottle<0.9.0
framework_bottle-bottle0009: bottle<0.10.0
framework_bottle-bottle0010: bottle<0.11.0
framework_bottle-bottle0011: bottle<0.12.0
framework_bottle-bottle0012: bottle<0.13.0
framework_cherrypy: routes
framework_cherrypy-CherryPy0302: CherryPy<3.3.0
framework_cherrypy-CherryPy0303: CherryPy<3.4.0
framework_cherrypy-CherryPy18: CherryPy<18.6.0
framework_django-Django0103: Django<1.4
framework_django-Django0108: Django<1.9
framework_django-Django0200: Django<2.1
framework_django-Django0201: Django<2.2
framework_django-Django0202: Django<2.3
framework_django-Django0300: Django<3.1
framework_django-Django0301: Django<3.2
framework_django-Django0302: Django<3.3
framework_django-Djangolatest: Django
framework_django-Djangomaster: https://github.com/django/django/archive/main.zip
framework_falcon-falcon0103: falcon<1.4
framework_falcon-falcon0200: falcon<2.1
framework_falcon-falconmaster: https://github.com/falconry/falcon/archive/master.zip
framework_fastapi: fastapi
framework_fastapi: asyncio
framework_flask: Flask-Compress
framework_flask-flask0012: flask<0.13
framework_flask-flask0101: flask<1.2
framework_flask-flasklatest: flask[async]
framework_flask-flaskmaster: https://github.com/pallets/werkzeug/archive/main.zip
framework_flask-flaskmaster: https://github.com/pallets/flask/archive/main.zip#egg=flask[async]
framework_graphene-graphenelatest: graphene
framework_graphene-graphene0200: graphene<2.1
framework_graphene-graphene0201: graphene<2.2
framework_graphql-graphql02: graphql-core<3
framework_graphql-graphql03: graphql-core<4
framework_graphql-graphql0202: graphql-core<2.3
framework_graphql-graphql0203: graphql-core<2.4
framework_graphql-graphql0300: graphql-core<3.1
framework_graphql-graphql0301: graphql-core<3.2
framework_graphql-graphql0302: graphql-core<3.3
framework_graphql-graphqlmaster: https://github.com/graphql-python/graphql-core/archive/main.zip
framework_grpc-grpc0125: grpcio<1.26
framework_grpc-grpc0125: grpcio-tools<1.26
framework_grpc-grpc0125: protobuf<3.18.0
framework_grpc-grpclatest: grpcio
framework_grpc-grpclatest: grpcio-tools
framework_pyramid: routes
framework_pyramid-cornice: cornice!=5.0.0
framework_pyramid-Pyramid0104: Pyramid<1.5
framework_pyramid-Pyramid0110: Pyramid<1.11
framework_pyramid-Pyramidmaster: https://github.com/Pylons/pyramid/archive/master.zip
framework_sanic-sanic1812: sanic<18.13
framework_sanic-sanic190301: sanic<19.3.2
framework_sanic-sanic1906: sanic<19.7
framework_sanic-sanic1912: sanic<19.13
framework_sanic-sanic200904: sanic<20.9.5
framework_sanic-sanic210300: sanic<21.3.1
; Temporarily test older sanic version until issues are resolved
framework_sanic-saniclatest: sanic<21.9.0
framework_sanic-sanic{1812,190301,1906}: aiohttp
framework_starlette: graphene<3
framework_starlette-starlette0014: starlette<0.15
framework_starlette-starlette0015: starlette<0.16
framework_starlette-starlettelatest: starlette
framework_strawberry: starlette
framework_strawberry-strawberrylatest: strawberry-graphql
framework_tornado: pycurl
framework_tornado-tornado0600: tornado<6.1
framework_tornado-tornadomaster: https://github.com/tornadoweb/tornado/archive/master.zip
framework-tornado: pycurl
messagebroker_pika-pika0.13: pika<0.14
messagebroker_pika-pikalatest: pika
messagebroker_pika: tornado<5
messagebroker_pika-{py27,pypy}: enum34
template_mako: mako<1.2
setenv =
PYTHONPATH = {toxinidir}/tests
TOX_ENVDIR = {envdir}
with_extensions: NEW_RELIC_EXTENSIONS = true
without_extensions: NEW_RELIC_EXTENSIONS = false
agent_features: NEW_RELIC_APDEX_T = 1000
datastore_umemcache: CFLAGS="-Wno-error"
framework_grpc: PYTHONPATH={toxinidir}/tests/:{toxinidir}/tests/framework_grpc/sample_application
passenv =
NEW_RELIC_DEVELOPER_MODE
NEW_RELIC_LICENSE_KEY
NEW_RELIC_HOST
GITHUB_ACTIONS
commands =
framework_grpc: python -m grpc_tools.protoc \
framework_grpc: --proto_path={toxinidir}/tests/framework_grpc/sample_application \
framework_grpc: --python_out={toxinidir}/tests/framework_grpc/sample_application \
framework_grpc: --grpc_python_out={toxinidir}/tests/framework_grpc/sample_application \
framework_grpc: /{toxinidir}/tests/framework_grpc/sample_application/sample_application.proto
py.test -v []
install_command=
pip install {opts} {packages}
extras =
agent_streaming: infinite-tracing
changedir =
adapter_cheroot: tests/adapter_cheroot
adapter_gevent: tests/adapter_gevent
adapter_gunicorn: tests/adapter_gunicorn
adapter_uvicorn: tests/adapter_uvicorn
agent_features: tests/agent_features
agent_streaming: tests/agent_streaming
agent_unittests: tests/agent_unittests
application_celery: tests/application_celery
application_gearman: tests/application_gearman
component_djangorestframework: tests/component_djangorestframework
component_flask_rest: tests/component_flask_rest
component_tastypie: tests/component_tastypie
coroutines_asyncio: tests/coroutines_asyncio
cross_agent: tests/cross_agent
datastore_asyncpg: tests/datastore_asyncpg
datastore_bmemcached: tests/datastore_bmemcached
datastore_elasticsearch: tests/datastore_elasticsearch
datastore_memcache: tests/datastore_memcache
datastore_mysql: tests/datastore_mysql
datastore_postgresql: tests/datastore_postgresql
datastore_psycopg2: tests/datastore_psycopg2
datastore_psycopg2cffi: tests/datastore_psycopg2cffi
datastore_pyelasticsearch: tests/datastore_pyelasticsearch
datastore_pylibmc: tests/datastore_pylibmc
datastore_pymemcache: tests/datastore_pymemcache
datastore_pymongo: tests/datastore_pymongo
datastore_pymysql: tests/datastore_pymysql
datastore_pysolr: tests/datastore_pysolr
datastore_redis: tests/datastore_redis
datastore_solrpy: tests/datastore_solrpy
datastore_sqlite: tests/datastore_sqlite
datastore_umemcache: tests/datastore_umemcache
external_boto3: tests/external_boto3
external_botocore: tests/external_botocore
external_feedparser: tests/external_feedparser
external_http: tests/external_http
external_httplib: tests/external_httplib
external_httplib2: tests/external_httplib2
external_httpx: tests/external_httpx
external_requests: tests/external_requests
external_urllib3: tests/external_urllib3
framework_aiohttp: tests/framework_aiohttp
framework_ariadne: tests/framework_ariadne
framework_bottle: tests/framework_bottle
framework_cherrypy: tests/framework_cherrypy
framework_django: tests/framework_django
framework_falcon: tests/framework_falcon
framework_fastapi: tests/framework_fastapi
framework_flask: tests/framework_flask
framework_graphene: tests/framework_graphene
framework_graphql: tests/framework_graphql
framework_grpc: tests/framework_grpc
framework_pyramid: tests/framework_pyramid
framework_sanic: tests/framework_sanic
framework_starlette: tests/framework_starlette
framework_strawberry: tests/framework_strawberry
framework_tornado: tests/framework_tornado
messagebroker_pika: tests/messagebroker_pika
template_mako: tests/template_mako