Skip to content

Commit 7b5795d

Browse files
authored
Merge pull request #291 from NikolayBaranovv/feat_add_docker_tests
Feat: add docker tests
2 parents 3e2c57c + 77b8c86 commit 7b5795d

File tree

15 files changed

+605
-262
lines changed

15 files changed

+605
-262
lines changed

.github/workflows/txmongo.yml

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,46 +7,47 @@ jobs:
77
runs-on: ubuntu-latest
88
strategy:
99
matrix:
10-
python: ["3.8", "3.9", "3.10", "3.11"]
11-
mongodb-version: ['4.2', '4.4']
10+
python-version: ['3.8', '3.11', '3.12']
11+
mongodb-version: ['3.6', '4.2', '4.4']
1212
steps:
13-
- uses: actions/checkout@v3
14-
- name: Start MongoDB (27017)
15-
uses: supercharge/mongodb-github-action@1.8.0
13+
- uses: actions/checkout@v4
14+
- name: Start MongoDB on port 27017
15+
uses: supercharge/mongodb-github-action@1.11.0
1616
with:
1717
mongodb-version: ${{ matrix.mongodb-version }}
18-
- name: Setup Python
19-
uses: actions/setup-python@v4
18+
- name: Set up Python ${{ matrix.python-version }}
19+
uses: actions/setup-python@v5
2020
with:
21-
python-version: ${{ matrix.python }}
22-
- name: Install tox and any other packages
21+
python-version: ${{ matrix.python-version }}
22+
- name: Install tox
2323
run: pip install tox
24-
- name: Run tox
25-
run: tox -e basic
24+
- name: Run basic tests in tox
25+
run: tox -f py${{ matrix.python-version }} basic
2626
- name: Archive artifacts
27-
uses: actions/upload-artifact@v2
27+
uses: actions/upload-artifact@v4
2828
with:
29-
name: code-coverage-report
29+
name: code-coverage-report-${{ matrix.mongodb-version }}-${{ matrix.python-version }}
3030
path: htmlcov
3131

3232
advanced:
3333
runs-on: ubuntu-20.04
3434
strategy:
3535
matrix:
36-
python: ["3.8", "3.9", "3.10", "3.11"]
36+
python-version: ['3.8', '3.11', '3.12']
37+
mongodb-version: ['4.2', '4.4']
3738
steps:
38-
- uses: actions/checkout@v3
39-
- name: Install MongoDB 4.4
39+
- uses: actions/checkout@v4
40+
- name: Install MongoDB ${{ matrix.mongodb-version }}
4041
run: |
41-
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
42-
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
42+
wget -qO - https://www.mongodb.org/static/pgp/server-${{ matrix.mongodb-version }}.asc | sudo apt-key add -
43+
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/${{ matrix.mongodb-version }} multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-${{ matrix.mongodb-version }}.list
4344
sudo apt-get update
44-
sudo apt-get install -y --allow-downgrades mongodb-org-server=4.4.18
45-
- name: Setup Python
46-
uses: actions/setup-python@v4
45+
sudo apt-get install -y --allow-downgrades mongodb-org-server
46+
- name: Set up Python ${{ matrix.python-version }}
47+
uses: actions/setup-python@v5
4748
with:
48-
python-version: ${{ matrix.python }}
49+
python-version: ${{ matrix.python-version }}
4950
- name: Install tox and any other packages
5051
run: pip install tox
51-
- name: Run tox
52-
run: tox -e advanced
52+
- name: Run advanced tests in tox
53+
run: tox -f py${{ matrix.python-version }} advanced

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ build
66
.download_cache
77
.coverage
88
venv/
9+
venv*/
910
docs/build/
1011
_trial_temp/
12+
_trial_temp_*
1113
txmongo.egg-info
1214
.idea/
1315
dist/
1416
htmlcov/
1517
.tox/
18+
data/mongo

.travis.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@ language: python
22
python:
33
- "3.5"
44
- "3.8"
5+
- "3.11"
56
- "pypy3"
67

78

89
env:
9-
- TOX_ENV=tw189
10-
- TOX_ENV=tw1910
11-
- TOX_ENV=tw203
10+
- TOX_ENV=tw217
11+
- TOX_ENV=tw2210
12+
- TOX_ENV=tw2310
1213
- TOX_ENV=twlatest
1314
- TOX_ENV=twtrunk
15+
- TOX_ENV=pymongo_313
16+
- TOX_ENV=pymongo_470
17+
- TOX_ENV=pymongo_latest
1418

1519

1620
matrix:

bin/run_tests_with_docker.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env python3
2+
import argparse
3+
import os
4+
from subprocess import run
5+
6+
parser = argparse.ArgumentParser(description='Run tests with dockerized MongoDB')
7+
parser.add_argument('--mongodb-version', type=str, help='MongoDB version', required=True)
8+
# for test_basic
9+
parser.add_argument('--mongodb-port', type=str, help='MongoDB Port (default 27017)', default='27017')
10+
# for test_auth
11+
parser.add_argument('--mongodb-port-auth', type=str, help='MongoDB Port (default 27018)', default='27018')
12+
# for test_replicaset
13+
parser.add_argument('--mongodb-port-1', type=str, help='MongoDB 1 Replica Port (default 37017)', default='37017')
14+
parser.add_argument('--mongodb-port-2', type=str, help='MongoDB 2 Replica Port (default 37018)', default='37018')
15+
parser.add_argument('--mongodb-port-3', type=str, help='MongoDB 3 Replica Port (default 37019)', default='37019')
16+
17+
args, tox_args = parser.parse_known_args()
18+
19+
mongodb_network_name = 'txmongo-tests-advanced-network'
20+
run(['docker', 'network', 'create', mongodb_network_name])
21+
22+
mongodb_basic_test_container_name = 'txmongo-tests-basic-mongodb'
23+
24+
run(['docker', 'run', '--rm', '-d', '-p', f'{args.mongodb_port}:27017', '--name', mongodb_basic_test_container_name, f'mongo:{args.mongodb_version}'])
25+
26+
run(['tox', *tox_args], env={
27+
**os.environ,
28+
'TXMONGO_RUN_MONGOD_IN_DOCKER': 'yes',
29+
'TXMONGO_MONGOD_DOCKER_VERSION': args.mongodb_version,
30+
'TXMONGO_MONGOD_DOCKER_PORT_AUTH': args.mongodb_port_auth,
31+
'TXMONGO_MONGOD_DOCKER_PORT_1': args.mongodb_port_1,
32+
'TXMONGO_MONGOD_DOCKER_PORT_2': args.mongodb_port_2,
33+
'TXMONGO_MONGOD_DOCKER_PORT_3': args.mongodb_port_3,
34+
'TXMONGO_MONGOD_DOCKER_NETWORK_NAME': mongodb_network_name,
35+
})
36+
run(['docker', 'stop', mongodb_basic_test_container_name])
37+
38+
run(['docker', 'network', 'rm', "--force", mongodb_network_name])
39+
40+
# if need manually delete containers:
41+
# docker container rm --force $(docker ps -q --filter "name=txmongo-tests-")
42+
# run some version:
43+
# ./bin/run_tests_with_docker.py --mongodb-version 4.4 -f advanced py3.11 pymongo480 tw247

docs/source/NEWS.rst

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
Changelog
22
=========
33

4-
Release 24.0.0 (2024-09-18)
4+
Release 24.0.0 (2024-09-16)
55
---------------------------
66

77
API Changes
8-
^^^^^^^^^^^
8+
^^^^^^^^
99

1010
- This is the last release that supports Python <3.8 and MongoDB <4.0
11+
12+
13+
Release UPCOMING (yyyy-mm-dd)
14+
-----------------------------
15+
16+
API Changes
17+
^^^^^^^^^^^
18+
1119
- PyMongo 4+ is now supported. If you will migrate from PyMongo 3 to PyMongo 4, please be sure
1220
to check their PyMongo's guide because newer version has a number of incompatible changes.
1321

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
Twisted
1+
Twisted~=24.7.0
22
pymongo>=3.0,<4.9
3+
setuptools~=71.1.0
34
-e .

0 commit comments

Comments
 (0)