Newer
Older
from google.protobuf.json_format import MessageToDict
from common.database.Factory import get_database, DatabaseEngineEnum
from common.database.api.Database import Database
from common.database.api.context.Constants import DEFAULT_CONTEXT_ID
from common.tests.Assertions import validate_service_id
from compute.client.ComputeClient import ComputeClient
from compute.service.ComputeService import ComputeService
from compute.Config import GRPC_SERVICE_PORT, GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD, RESTAPI_SERVICE_PORT, \
RESTAPI_BASE_URL
from compute.service.rest_server.Server import Server
from compute.service.rest_server.resources.Compute import Compute
from service.service.ServiceService import ServiceService
from service.Config import GRPC_SERVICE_PORT as SERVICE_GRPC_SERVICE_PORT, \
GRPC_MAX_WORKERS as SERVICE_GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD as SERVICE_GRPC_GRACE_PERIOD
compute_grpc_port = 10000 + GRPC_SERVICE_PORT # avoid privileged ports
compute_restapi_port = 10000 + RESTAPI_SERVICE_PORT # avoid privileged ports
service_grpc_port = 10000 + SERVICE_GRPC_SERVICE_PORT # avoid privileged ports
os.environ['SERVICESERVICE_SERVICE_HOST'] = '127.0.0.1'
os.environ['SERVICESERVICE_SERVICE_PORT_GRPC'] = str(service_grpc_port)
LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.DEBUG)
@pytest.fixture(scope='session')
def database():
_database = get_database(engine=DatabaseEngineEnum.INMEMORY)
_database.context(DEFAULT_CONTEXT_ID).create()
return _database
@pytest.fixture(scope='session')
def service_service(database):
_service = ServiceService(
database, port=service_grpc_port, max_workers=SERVICE_GRPC_MAX_WORKERS, grace_period=SERVICE_GRPC_GRACE_PERIOD)
_service.start()
yield _service
_service.stop()
@pytest.fixture(scope='session')
def compute_service(service_service : ServiceService):
_service = ComputeService(port=compute_grpc_port, max_workers=GRPC_MAX_WORKERS, grace_period=GRPC_GRACE_PERIOD)
_service.start()
yield _service
_service.stop()
@pytest.fixture(scope='session')
def compute_service_rest():
_rest_server = Server(port=compute_restapi_port, base_url=RESTAPI_BASE_URL)
_rest_server.add_resource(
Compute, '/restconf/config/compute', endpoint='api.compute')
_rest_server.start()
time.sleep(1) # bring time for the server to start
yield _rest_server
_rest_server.shutdown()
_rest_server.join()
@pytest.fixture(scope='session')
def compute_client(compute_service):
_client = ComputeClient(address='127.0.0.1', port=compute_grpc_port)
yield _client
_client.close()
def test_dummy_create_connectivity_service(compute_client : ComputeClient):
# dummy test: should fail with assertion error
with pytest.raises(AssertionError):
validate_service_id(MessageToDict(
compute_client.CreateConnectivityService(Service()),
including_default_value_fields=True, preserving_proto_field_name=True,
use_integers_for_enums=False))
def test_dummy_create_connectivity_service_rest_api(compute_service_rest : Server):
# should work
request_url = 'http://127.0.0.1:{}{}/restconf/config/compute'.format(compute_restapi_port, RESTAPI_BASE_URL)
reply = requests.post(request_url, json={
# here add context of POST request body as JSON
})
json_reply = reply.json()
assert 'succeeded' in json_reply
assert json_reply['succeeded']