GMLC-TDC / helics-cli

HELICS Command Line Interface
BSD 3-Clause "New" or "Revised" License
6 stars 2 forks source link

Add HELICS query support to debug web interface #16

Open trevorhardy opened 4 years ago

trevorhardy commented 4 years ago

To support global situation awareness during debug sessions, an ability to run HELICS queries on the federation is needed from the web interface. (Since the SQLite database will not necessarily contain a record of all signals passed during a co-simulation run, HELICS queries are being added to support user interactive debugging.) @eberleim has a minimal interface already in place in the web interface but there is currently no back-end support in place.

@trevorhardy will be working on defining the web interface elements to provide a v.0 support for the queries. Once that is in place @eberleim and @kdheepak will work on implementing the feature fully.

trevorhardy commented 4 years ago

@eberleim will be taking point on this as a part of his efforts to complete the web interface for v3.

trevorhardy commented 4 years ago

@eberleim, here are the queries I see us wanting to support for debugging purposes in the v3 release of the web interface. Based on our conversation on July 17, 2020, I'm going to break these down into two groups (federate-specific and global) and describe the information it returns that we think debugging users would find useful. I'll also indicate the language I think we should use in the UI and also the exact terms (both object of query and query parameter) that HELICS needs to return the necessary values.

Federate-specific

In all of these cases, once the user indicates they are doing a federate-specific query, the web interface/helics_cli needs to provide a list of federates to choose from. The user must pick only one. The user will then specify which inputs or outputs they want the value of; the user may specify any number of these to display (including all of them).

  1. "Signal value" - current value of an arbitrary federate input or output.
  2. "Granted time" - current granted time of the federate. If the user wants all the granted times there is a corresponding global query
    • federate - current_time
  3. "Publications" - current list of publications provided by the federate.
    • federate - publications
  4. "Subscriptions" - current list of subscriptions provided by the federate.
    • federate - subscriptions
  5. "Named Inputs" - current list of named inputs to the federate. This is a separate signal type than "subscriptions" (which are unnamed inputs) and it would be great to integrate the two into one table but, for v3, we're just going to do the easy thing and keep them separate.
    • federate - inputs
  6. "Endpoints "- current list of endpoints defined for the federate
  7. "Endpoint filters" - filters on current endpoints of the federate
    • federate - endpoint_filters
  8. "Execution state" - indicates the current execution state (initialized, executing, terminated, errored-out, etc)
    • federate - state

Global

  1. "All federate times" - granted times of all federates
    • core - global_time
  2. "Federate execution states" - list of states for all federates in the federation
    • core - federation_state