Skip to main content

Testing Your PyAres Services

Before deploying your Planners and Analyzers to a live ARES environment, you can use the built-in test_tools suite to verify your logic locally. This suite provides mock clients that simulate the gRPC requests ARES sends.

The Test Clients

PyAres includes specialized clients for both Analyzers and Planners. These are located in PyAres.test_tools.

AnalyzerTestClient

Use this to test your AresAnalyzerService.

Methods

  • __init__(port=7083, host='localhost'): Connects to your running service.
  • check_status(): Verifies the gRPC connection is alive.
  • get_info(): Prints the name, version, and description reported by your service.
  • run_analysis(inputs, settings={}): Sends a mock analysis request and prints the result or error.

Example Test Script

from PyAres.test_tools import AnalyzerTestClient

if __name__ == "__main__":
# Ensure your Analyzer script is already running in another terminal!
client = AnalyzerTestClient(port=7083)

# 1. Check Connectivity
client.check_status()
client.get_info()

# 2. Test your analysis logic with sample data
sample_inputs = {
"Temperature": 130.5
}
client.run_analysis(inputs=sample_inputs)

PlannerTestClient

Use this to test your AresPlannerService.

Methods

  • __init__(port=7082, host='localhost'): Connects to your running service.
  • check_status(): Verifies the gRPC connection is alive.
  • get_info(): Prints the name, version, and description reported by your service.
  • run_planning(request): Sends a PlanRequest and returns a PlanResponse.

Example Test Script

from PyAres import PlanRequest, PlanningParameter, AresDataType, ParameterHistoryItem
from PyAres.test_tools import PlannerTestClient

if __name__ == "__main__":
# Ensure your Planner script is running!
client = PlannerTestClient(port=7082)

# 1. Create Mock Data
params = [
PlanningParameter(
name="Pressure",
minimum_value=0,
maximum_value=1000,
param_history=[ParameterHistoryItem(500, 498)],
data_type=AresDataType.NUMBER,
is_planned=True,
is_result=False,
planner_name="Random Planner"
)
]

# 2. Run Test
request = PlanRequest(parameters=params, settings={}, analysis_results=[0.95])
response = client.run_planning(request)
print(f"Planner suggested: {response.parameter_values}")

Why Use Test Tools?

  1. Speed: Test your logic in seconds without launching the full ARES OS.
  2. Safety: Debug hardware command logic or complex planning algorithms safely using mock inputs.
  3. Automation: These clients can be integrated into standard Python pytest suites for continuous integration.