You can easily send your metrics to a remote server. This can turn usefull when it comes to running tests in parallel with plugins such as pytest-xdist of pytest-parallel. To do so, instruct pytest with the remote server address to use:
bash $> pytest --remote-server myremote.server.net:port
This way, pytest-monitor will automatically send and query the remote server as soon as it gets a need. Note that pytest-monitor will revert to a normal behaviour if:
- it cannot query the context or the session for existence
- it cannot create a new context or a new session
The following sequence is used by pytest-monitor when using a remote server:
- Ask the remote server if the Execution Context is known.
- Insert the Execution Context if the server knows nothing about it.
- Ask the remote server if the Session is known.
- Insert the Session if the server knows nothing about it.
- Insert results once measures have been collected.
Two codes are used by pytest-monitor when asked to work with a remote server:
- 200 (OK) is used to indicate that a query has led to a non-empty result.
- 201 (CREATED) is expected by pytest-monitor* when sending a new entry (Execution Context, Session or any Metric).
- 204 (NO CONTENT) though not checked explicitely should be returned when a request leads to no results.
The following routes are expected to be reachable:
GET /contexts/<str:hash>
Query the system for a Execution Context with the given hash.
Return Codes: Must return 200 (OK) if the Execution Context exists, 204 (NO CONTENT) otherwise
GET /sessions/<str:hash>
Query the system for a Session with the given hash.
Return Codes: Must return 200 (OK) if the Session exists, 204 (NO CONTENT) otherwise
POST /contexts/
Request the system to create a new entry for the given Execution Context. Data are sent using Json parameters:
{ cpu_count: int, cpu_frequency: int, cpu_type: str, cpu_vendor: str, ram_tota: int, machine_node: str, machine_type: str, machine_arch: str, system_info: str, python_info: str, h: str }Return Codes: Must return 201 (CREATED) if the Execution Context has been created
POST /sessions/
Request the system to create a new entry for the given Session. Data are sent using Json parameters:
{ session_h: str, run_date: str, scm_ref: str, description: str }Return Codes: Must return 201 (CREATED) if the Session has been created
POST /metrics/
Request the system to create a new Metrics entry. Data are sent using Json parameters:
{ session_h: str, context_h: str, item_start_time: str, item_path: str, item: str, item_variant: str, item_fs_loc: str, kind: str, component: str, total_time: float, user_time: float, kernel_time: float, cpu_usage: float, mem_usage: float }Return Codes: Must return 201 (CREATED) if the Metrics has been created