Skip to content

Commit

Permalink
Implement RMQ test fixture
Browse files Browse the repository at this point in the history
  • Loading branch information
NeonDaniel committed Jan 3, 2025
1 parent 4de8312 commit 205b2fd
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 1 deletion.
81 changes: 81 additions & 0 deletions neon_minerva/integration/rabbit_mq.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# NEON AI (TM) SOFTWARE, Software Development Kit & Application Development System
# All trademark and other rights reserved by their respective owners
# Copyright 2008-2024 NeonGecko.com Inc.
# BSD-3
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import pytest

from os import environ
from port_for import get_port
from pytest_rabbitmq.factories.executor import RabbitMqExecutor
from pytest_rabbitmq.factories.process import get_config


@pytest.fixture(scope="class")
def rmq_instance(request, tmp_path_factory):
config = get_config(request)
rabbit_ctl = config["ctl"]
rabbit_server = config["server"]
rabbit_host = "127.0.0.1"
rabbit_port = get_port(config["port"])
rabbit_distribution_port = get_port(
config["distribution_port"], [rabbit_port]
)
assert rabbit_distribution_port
assert (
rabbit_distribution_port != rabbit_port
), "rabbit_port and distribution_port can not be the same!"

tmpdir = tmp_path_factory.mktemp(f"pytest-rabbitmq-{request.fixturename}")

rabbit_plugin_path = config["plugindir"]

rabbit_logpath = config["logsdir"]

if not rabbit_logpath:
rabbit_logpath = tmpdir / "logs"

rabbit_executor = RabbitMqExecutor(
rabbit_server,
rabbit_host,
rabbit_port,
rabbit_distribution_port,
rabbit_ctl,
logpath=rabbit_logpath,
path=tmpdir,
plugin_path=rabbit_plugin_path,
node_name=config["node"],
)

rabbit_executor.start()

# Init RMQ config
rmq_username = environ.get("TEST_RMQ_USERNAME", "test_llm_user")
rmq_password = environ.get("TEST_RMQ_PASSWORD", "test_llm_password")
rmq_vhost = environ.get("TEST_RMQ_VHOST", "/test")
rabbit_executor.rabbitctl_output("add_user", rmq_username, rmq_password)
rabbit_executor.rabbitctl_output("add_vhost", rmq_vhost)
rabbit_executor.rabbitctl_output("set_permissions", "-p", rmq_vhost,
rmq_username, ".*", ".*", ".*")
request.cls.rmq_instance = rabbit_executor
1 change: 1 addition & 0 deletions requirements/rabbit_mq.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pytest-rabbitmq
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ def get_requirements(requirements_filename: str):
python_requires='>=3.6',
install_requires=get_requirements("requirements.txt"),
extras_require={"chatbots": get_requirements("chatbots.txt"),
"padatious": get_requirements("padatious.txt")},
"padatious": get_requirements("padatious.txt"),
"rmq": get_requirements("rabbit_mq.txt")},
entry_points={
'console_scripts': ['minerva=neon_minerva.cli:neon_minerva_cli']
}
Expand Down

0 comments on commit 205b2fd

Please sign in to comment.