Commit 285d72a8259af2fecf81bb3789008ac04c5dbd17

Authored by Etienne Pallier
1 parent bf9c26eb
Exists in dev

traitement complet des "agent level specific" commands

src/core/pyros_django/agent/Agent.py
... ... @@ -648,7 +648,7 @@ class Agent:
648 648 # CASE 1 - AGENT LEVEL command
649 649 # => I process it directly without asking my DC
650 650 # => Simple action, short execution time, so I execute it directly (in current main thread, not in parallel)
651   - if self._is_agent_level_cmd(cmd):
  651 + if self.is_agent_level_cmd(cmd):
652 652 print("********** AGENT LEVEL CMD *********")
653 653 try:
654 654 self._exec_agent_cmd(cmd)
... ... @@ -1181,8 +1181,8 @@ class Agent:
1181 1181 else:
1182 1182 return getattr(self, func)()
1183 1183  
1184   - def _is_agent_level_cmd(self, cmd:Command):
1185   - return cmd.is_agent_level_general_cmd() or self._is_agent_level_specific_cmd(cmd)
  1184 + def is_agent_level_cmd(self, cmd:Command):
  1185 + return cmd.is_agent_general_cmd() or self._is_agent_specific_cmd(cmd)
1186 1186  
1187 1187 '''
1188 1188 def _exec_agent_cmd(self, cmd:Command):
... ... @@ -1374,11 +1374,14 @@ class Agent:
1374 1374 assert last_cmd.get_result() == "SHOULD BE DONE NOW"
1375 1375  
1376 1376 nb_asserted = 0
  1377 + nb_agent_general = 0
1377 1378 nb_unknown = 0
1378 1379 nb_unimplemented = 0
1379 1380 for cmd in commands:
1380 1381 assert cmd.is_executed() or cmd.is_killed() or cmd.is_skipped()
1381 1382 nb_asserted += 1
  1383 + if cmd.is_agent_general_cmd():
  1384 + nb_agent_general += 1
1382 1385 if cmd.name == "do_unknown":
1383 1386 assert cmd.is_skipped()
1384 1387 #assert "UnimplementedGenericCmdException" in cmd.get_result()
... ... @@ -1389,8 +1392,12 @@ class Agent:
1389 1392 assert cmd.is_skipped()
1390 1393 assert "UnimplementedGenericCmdException" in cmd.get_result()
1391 1394 nb_unimplemented += 1
  1395 + assert nb_commands_to_send == nb_asserted
1392 1396 print(nb_commands_to_send, "cmds I had to send <==>", nb_asserted, "cmds executed (or killed)")
1393   - print("Among them,", nb_unimplemented, "unimplemented command(s) and", nb_unknown, "unknown command(s) ==> UnimplementedGenericCmdException raised then command was skipped")
  1397 + print("Among them:")
  1398 + print(f"- {nb_agent_general} AGENT general command(s)")
  1399 + print("-", nb_unimplemented, "unimplemented command(s) => UnimplementedGenericCmdException raised then command was skipped")
  1400 + print("-", nb_unknown, "unknown command(s) => skipped")
1394 1401 assert nb_asserted == nb_commands_to_send
1395 1402  
1396 1403 # Specific (detailed) test (to be overriden by subclass)
... ...
src/core/pyros_django/agent/AgentDeviceSBIG.py
... ... @@ -25,8 +25,10 @@ class AgentDeviceSBIG(AgentDevice):
25 25 # Agent level specific commands
26 26 # @override superclass Agent
27 27 AGENT_SPECIFIC_COMMANDS = [
28   - "do_sbig_specific1",
29   - "set_sbig_specific2",
  28 + "do_ad_sbig_specific1",
  29 + "set_ad_sbig_specific2",
  30 + "do_ad_sbig_specific3_unimplemented",
  31 + "do_ad_sbig_specific4_unimplemented",
30 32 ]
31 33  
32 34 _agent_device_telescope_status = None
... ... @@ -54,7 +56,6 @@ class AgentDeviceSBIG(AgentDevice):
54 56  
55 57  
56 58  
57   -
58 59 """
59 60 =================================================================
60 61 FUNCTIONS RUN INSIDE MAIN THREAD
... ... @@ -138,11 +139,15 @@ class AgentDeviceSBIG(AgentDevice):
138 139 super().do_log()
139 140  
140 141  
141   - def do_sbig_specific10(self):
  142 + '''
  143 + AGENT LEVEL SPECIFIC COMMANDS
  144 + '''
  145 + def do_ad_sbig_specific1(self):
142 146 print("processing do_sbig_specific1... ")
143   - def set_sbig_specific20(self):
  147 + def set_ad_sbig_specific2(self):
144 148 print("processing set_sbig_specific2... ")
145 149  
  150 +
146 151 # @Override
147 152 def get_device_status(self):
148 153  
... ...
src/core/pyros_django/agent/AgentMultiRequester.py
... ... @@ -21,7 +21,7 @@ class AgentMultiRequester(Agent):
21 21 # Run the assertion tests at the end
22 22 TEST_WITH_FINAL_TEST = True
23 23 #TEST_MAX_DURATION_SEC = None
24   - TEST_MAX_DURATION_SEC = 100
  24 + TEST_MAX_DURATION_SEC = 110
25 25 # Who should I send commands to ?
26 26 #TEST_COMMANDS_DEST = "myself"
27 27 #TEST_COMMANDS_DEST = "AgentDeviceTelescopeGemini"
... ... @@ -96,10 +96,12 @@ class AgentMultiRequester(Agent):
96 96 'ad_sensor UNKNOWN_NATIVE_CMD',
97 97  
98 98 'ad_filtersel do_unimplemented',
99   - 'ad_filtersel do_sbig_specific1',
  99 + 'ad_filtersel do_ad_sbig_specific1',
  100 + 'ad_filtersel do_ad_sbig_specific3_unimplemented',
100 101 'ad_filtersel do_unknown',
101   - 'ad_filtersel set_sbig_specific2',
  102 + 'ad_filtersel set_ad_sbig_specific2',
102 103 'ad_shutter do_unimplemented',
  104 + 'ad_filtersel do_ad_sbig_specific4_unimplemented',
103 105 'ad_sensor do_unimplemented',
104 106  
105 107 #'ad_mount do_init',
... ...
src/core/pyros_django/common/models.py
... ... @@ -706,7 +706,7 @@ class Command(models.Model):
706 706  
707 707 # --- BOOLEAN (test) functions ---
708 708  
709   - def is_agent_level_general_cmd(self):
  709 + def is_agent_general_cmd(self):
710 710 """
711 711 Is this a general command ?
712 712 It is the case if command is of style "do_set:state:idle" or "do_restart" or "do_flush"...
... ...