Skip to content

Commit 4750707

Browse files
authored
Define the default server context with ANSYS_DPF_SERVER_CONTEXT (#633)
* Implement default ServerContext type linked to ANSYS_DPF_SERVER_CONTEXT environment variable. * Add testing for the ANSYS_DPF_SERVER_CONTEXT environment variable. Signed-off-by: paul.profizi <[email protected]> * Resolve Code quality issues Signed-off-by: paul.profizi <[email protected]> * Fix flake8 Signed-off-by: paul.profizi <[email protected]> * Fix test since AvailableServerContexts has no "user_defined" attribute. Signed-off-by: paul.profizi <[email protected]> * fix flake8 Signed-off-by: paul.profizi <[email protected]> Signed-off-by: paul.profizi <[email protected]>
1 parent cee9142 commit 4750707

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

ansys/dpf/core/server_context.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@
44
55
Gives the ability to choose the context with which the server should be started.
66
The context allows to choose which capabilities are available.
7+
By default, an **Entry** type of :class:`ServerContext` is used.
8+
The default context can be overwritten using the ANSYS_DPF_SERVER_CONTEXT environment
9+
variable.
10+
ANSYS_DPF_SERVER_CONTEXT=ENTRY and ANSYS_DPF_SERVER_CONTEXT=PREMIUM can be used.
711
"""
12+
import os
13+
import warnings
814
from enum import Enum
915

1016

@@ -63,7 +69,20 @@ class AvailableServerContexts:
6369
"""Loads the minimum number of plugins for a basic usage. Is the default."""
6470

6571

72+
DPF_SERVER_CONTEXT_ENV = "ANSYS_DPF_SERVER_CONTEXT"
73+
6674
SERVER_CONTEXT = AvailableServerContexts.entry
75+
if DPF_SERVER_CONTEXT_ENV in os.environ.keys():
76+
default_context = os.getenv(DPF_SERVER_CONTEXT_ENV)
77+
try:
78+
SERVER_CONTEXT = getattr(AvailableServerContexts, default_context.lower())
79+
except AttributeError:
80+
warnings.warn(UserWarning(
81+
f"{DPF_SERVER_CONTEXT_ENV} is set to {default_context}, which is not "
82+
f"recognized as an available DPF ServerContext type. \n"
83+
f"Accepted values are: {[t.name.upper() for t in EContextType]}.\n"
84+
f"Using {EContextType.entry.name.upper()} "
85+
f"as the default ServerContext type."))
6786

6887

6988
def apply_server_context(context=AvailableServerContexts.entry, server=None) -> None:

tests/test_service.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,51 @@ def revert():
461461
request.addfinalizer(revert)
462462

463463

464+
@pytest.fixture(autouse=False, scope="function")
465+
def reset_context_environment_variable(request):
466+
"""Reset ANSYS_DPF_SERVER_CONTEXT."""
467+
from ansys.dpf.core import server_context as s_c
468+
469+
environment = os.environ
470+
key = s_c.DPF_SERVER_CONTEXT_ENV
471+
if key in environment.keys():
472+
init_context = environment[key]
473+
else:
474+
init_context = None
475+
476+
def revert():
477+
if init_context:
478+
os.environ[key] = init_context
479+
480+
request.addfinalizer(revert)
481+
482+
483+
@pytest.mark.skipif(running_docker or not conftest.SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_5_0,
484+
reason="AWP ROOT is not set with Docker")
485+
@conftest.raises_for_servers_version_under("6.0")
486+
def test_context_environment_variable(reset_context_environment_variable):
487+
from importlib import reload
488+
from ansys.dpf.core import server_context as s_c
489+
490+
key = s_c.DPF_SERVER_CONTEXT_ENV
491+
492+
# Test raise on wrong value
493+
os.environ[key] = "PREM"
494+
with pytest.warns(UserWarning, match="which is not recognized as an available "
495+
"DPF ServerContext type."):
496+
reload(s_c)
497+
assert s_c.SERVER_CONTEXT == s_c.AvailableServerContexts.entry
498+
499+
# Test each possible value is correctly understood and sets SERVER_CONTEXT
500+
for context in s_c.EContextType:
501+
os.environ[key] = context.name.upper()
502+
reload(s_c)
503+
try:
504+
assert s_c.SERVER_CONTEXT == getattr(s_c.AvailableServerContexts, context.name)
505+
except AttributeError:
506+
continue
507+
508+
464509
@pytest.mark.order(1)
465510
@pytest.mark.skipif(running_docker or not conftest.SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_5_0,
466511
reason="AWP ROOT is not set with Docker")

0 commit comments

Comments
 (0)