mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-30 03:00:41 -04:00
This is a prerequisite infra change for https://github.com/Significant-Gravitas/AutoGPT/issues/9714. We will need a service where we can maintain our own client (db, redis, rabbitmq, be it async/sync) and configure our own cadence of initialization and cleanup. While refactoring the service.py, an option to use Pyro as an RPC protocol is also removed. ### Changes 🏗️ * Decouple resource initialization and cleanup from the parent AppService logic. * Removed Pyro. ### Checklist 📋 #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: <!-- Put your test plan here: --> - [x] CI
42 lines
953 B
Python
42 lines
953 B
Python
import pytest
|
|
|
|
from backend.util.service import AppService, expose, get_service_client
|
|
|
|
TEST_SERVICE_PORT = 8765
|
|
|
|
|
|
class ServiceTest(AppService):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
def cleanup(self):
|
|
pass
|
|
|
|
@classmethod
|
|
def get_port(cls) -> int:
|
|
return TEST_SERVICE_PORT
|
|
|
|
@expose
|
|
def add(self, a: int, b: int) -> int:
|
|
return a + b
|
|
|
|
@expose
|
|
def subtract(self, a: int, b: int) -> int:
|
|
return a - b
|
|
|
|
@expose
|
|
def fun_with_async(self, a: int, b: int) -> int:
|
|
async def add_async(a: int, b: int) -> int:
|
|
return a + b
|
|
|
|
return self.run_and_wait(add_async(a, b))
|
|
|
|
|
|
@pytest.mark.asyncio(loop_scope="session")
|
|
async def test_service_creation(server):
|
|
with ServiceTest():
|
|
client = get_service_client(ServiceTest)
|
|
assert client.add(5, 3) == 8
|
|
assert client.subtract(10, 4) == 6
|
|
assert client.fun_with_async(5, 3) == 8
|