mirror of
https://github.com/logos-messaging/logos-messaging-interop-tests.git
synced 2026-01-09 09:23:10 +00:00
postgress test
This commit is contained in:
parent
8a54f28bb1
commit
f216b4cf79
2
.github/workflows/test_common.yml
vendored
2
.github/workflows/test_common.yml
vendored
@ -50,7 +50,7 @@ jobs:
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
pytest -n 4 --dist loadgroup --reruns 2 --alluredir=allure-results
|
||||
pytest -n 4 --dist loadgroup --alluredir=allure-results -k "test_postgres_db"
|
||||
|
||||
- name: Get allure history
|
||||
if: always()
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
||||
log/
|
||||
.vscode
|
||||
allure-results/
|
||||
postgresql
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
|
||||
@ -29,6 +29,8 @@ RUNNING_IN_CI = get_env_var("CI")
|
||||
NODEKEY = get_env_var("NODEKEY", "30348dd51465150e04a5d9d932c72864c8967f806cce60b5d26afeca1e77eb68")
|
||||
API_REQUEST_TIMEOUT = get_env_var("API_REQUEST_TIMEOUT", 20)
|
||||
RLN_CREDENTIALS = get_env_var("RLN_CREDENTIALS")
|
||||
PG_USER = get_env_var("POSTGRES_USER", "postgres")
|
||||
PG_PASS = get_env_var("POSTGRES_PASSWORD", "test123")
|
||||
|
||||
# example for .env file
|
||||
# RLN_CREDENTIALS = {"rln-relay-cred-password": "password", "rln-relay-eth-client-address": "wss://sepolia.infura.io/ws/v3/api_key", "rln-relay-eth-contract-address": "0xF471d71E9b1455bBF4b85d475afb9BB0954A29c4", "rln-relay-eth-private-key-1": "1111111111111111111111111111111111111111111111111111111111111111", "rln-relay-eth-private-key-2": "1111111111111111111111111111111111111111111111111111111111111111"}
|
||||
|
||||
44
src/postgres_setup.py
Normal file
44
src/postgres_setup.py
Normal file
@ -0,0 +1,44 @@
|
||||
import docker
|
||||
import os
|
||||
from src.env_vars import NETWORK_NAME, PG_PASS, PG_USER
|
||||
from src.libs.custom_logger import get_custom_logger
|
||||
|
||||
logger = get_custom_logger(__name__)
|
||||
|
||||
|
||||
def start_postgres():
|
||||
pg_env = {"POSTGRES_USER": PG_USER, "POSTGRES_PASSWORD": PG_PASS}
|
||||
|
||||
base_path = os.path.abspath(".")
|
||||
volumes = {os.path.join(base_path, "postgresql"): {"bind": "/var/lib/postgresql/data", "mode": "Z"}}
|
||||
|
||||
client = docker.from_env()
|
||||
|
||||
postgres_container = client.containers.run(
|
||||
"postgres:15.4-alpine3.18",
|
||||
name="postgres",
|
||||
environment=pg_env,
|
||||
volumes=volumes,
|
||||
command="postgres",
|
||||
ports={"5432/tcp": ("127.0.0.1", 5432)},
|
||||
restart_policy={"Name": "on-failure", "MaximumRetryCount": 5},
|
||||
healthcheck={
|
||||
"Test": ["CMD-SHELL", "pg_isready -U postgres -d postgres"],
|
||||
"Interval": 30000000000, # 30 seconds in nanoseconds
|
||||
"Timeout": 60000000000, # 60 seconds in nanoseconds
|
||||
"Retries": 5,
|
||||
"StartPeriod": 80000000000, # 80 seconds in nanoseconds
|
||||
},
|
||||
detach=True,
|
||||
network_mode=NETWORK_NAME,
|
||||
)
|
||||
|
||||
logger.debug("Postgres container started")
|
||||
|
||||
return postgres_container
|
||||
|
||||
|
||||
def stop_postgres(postgres_container):
|
||||
postgres_container.stop()
|
||||
postgres_container.remove()
|
||||
logger.debug("Postgres container stopped and removed.")
|
||||
@ -10,6 +10,7 @@ from uuid import uuid4
|
||||
from src.libs.common import attach_allure_file
|
||||
import src.env_vars as env_vars
|
||||
from src.data_storage import DS
|
||||
from src.postgres_setup import start_postgres, stop_postgres
|
||||
|
||||
logger = get_custom_logger(__name__)
|
||||
|
||||
@ -37,6 +38,13 @@ def set_allure_env_variables():
|
||||
outfile.write(f"{attribute_name}={attribute_value}\n")
|
||||
|
||||
|
||||
@pytest.fixture(scope="class", autouse=False)
|
||||
def start_postgres_container():
|
||||
pg_container = start_postgres()
|
||||
yield
|
||||
stop_postgres(pg_container)
|
||||
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def test_id(request):
|
||||
# setting up an unique test id to be used where needed
|
||||
|
||||
18
tests/store/test_external_db.py
Normal file
18
tests/store/test_external_db.py
Normal file
@ -0,0 +1,18 @@
|
||||
import pytest
|
||||
from src.libs.custom_logger import get_custom_logger
|
||||
from src.steps.store import StepsStore
|
||||
from src.env_vars import PG_PASS, PG_USER
|
||||
|
||||
logger = get_custom_logger(__name__)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("start_postgres_container")
|
||||
class TestExternalDb(StepsStore):
|
||||
def test_postgres_db(self):
|
||||
self.setup_first_publishing_node(store="true", relay="true", store_message_db_url=f"postgres://{PG_USER}:{PG_PASS}@postgres:5432/postgres")
|
||||
self.setup_first_store_node(store="true", relay="true")
|
||||
self.subscribe_to_pubsub_topics_via_relay()
|
||||
message = self.create_message()
|
||||
self.publish_message(message=message)
|
||||
self.check_published_message_is_stored(page_size=5, ascending="true")
|
||||
assert len(self.store_response.messages) == 1
|
||||
Loading…
x
Reference in New Issue
Block a user