message: added a helper function to send and confirm that commands are processed. modified current send_command check to use this helper.
diff: @@ -12,6 +12,7 @@ from fprime_gds.common.testing_fw.api import IntegrationTestAPI
  from fprime_gds.common.testing_fw import predicates
  from fprime_gds.common.utils.config_manager import ConfigManager
  +
  class TestRefAppClass(object):
  @classmethod
  @@ -42,10 +43,35 @@ class TestRefAppClass(object):
  )
  print(msg)
  + def assert_command(self, command, args=[], max_delay=None, timeout=5):
  + """
  + This helper will send a command and verify that the command was dispatched and completed
  + within the F' deployment. This helper can retroactively check that the delay between
  + dispatch and completion is less than a maximum allowable delay.
  +
  + Args:
  + command: the mnemonic (str) or ID (int) of the command to send
  + args: a list of command arguments.
  + max_delay: the maximum allowable delay between dispatch and completion (int/float)
  + timeout: the number of seconds to wait before terminating the search (int)
  + """
  + self.api.log_test_message("Starting assert_command helper")
  + cmd_id = self.api.translate_command_name(command)
  + events = []
  + events.append(self.api.get_event_predicate("OpCodeDispatched", [cmd_id, None]))
  + events.append(self.api.get_event_predicate("OpCodeCompleted", [cmd_id]))
  + results = self.api.send_and_assert_event(command, args, events)
  + if max_delay is not None:
  + delay = results[1].get_time() - results[0].get_time()
  + msg = "The delay, {}, between the two events should be below {}".format(delay, max_delay)
  + assert delay < max_delay, msg
  + self.api.log_test_message("assert_command helper completed successfully")
  +
  def test_send_command(self):
  - self.api.send_command("CMD_NO_OP", [])
  + self.assert_command("CMD_NO_OP", max_delay=0.0001)
  assert self.api.get_command_test_history().size() == 1
  - print(self.api.get_command_test_history()[0])
  + self.assert_command("CMD_NO_OP", max_delay=0.0001)
  + assert self.api.get_command_test_history().size() == 2
  def test_send_and_assert_no_op(self):
  evr_seq = ["OpCodeDispatched", "NoOpReceived", "OpCodeCompleted"]
  @@ -57,7 +83,7 @@ class TestRefAppClass(object):
  print("[{}] EVR {}".format(event.get_time().useconds, event))
  def test_bd_cycles_ascending(self):
  - tlm = ["BD_Cycles"] * 10
  + tlm = ["BD_Cycles"] * 3
  results = self.api.assert_telemetry_sequence(tlm, timeout=20)
  last = 0
  for tlm in results:
  @@ -69,12 +95,3 @@ class TestRefAppClass(object):
  )
  assert recent > last, msg
  last = recent
  \ No newline at end of file
  -
  - def test_assert_telemetry(self):
  - result = self.api.assert_telemetry("BD_Cycles", timeout=5)
  - val_pred = predicates.greater_than(result.get_val())
  - result = self.api.assert_telemetry("BD_Cycles", value=val_pred, timeout=5)
  - val_pred = predicates.greater_than(result.get_val())
  - result = self.api.assert_telemetry("BD_Cycles", value=val_pred, timeout=5)
  - val_pred = predicates.greater_than(result.get_val())
  - result = self.api.assert_telemetry("BD_Cycles", value=val_pred, timeout=5)
  