test_terminals.py 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import time
  2. from synergine2.terminals import Terminal
  3. from synergine2.terminals import TerminalPackage
  4. from synergine2.terminals import TerminalManager
  5. from tests import BaseTest
  6. class FakeTerminal(Terminal):
  7. def receive(self, package: TerminalPackage):
  8. self.send(TerminalPackage(package.value * 2))
  9. self.send(TerminalPackage(package.value * 4))
  10. class TestTerminals(BaseTest):
  11. def test_terminals_communications(self):
  12. terminals_manager = TerminalManager(
  13. terminals=[
  14. FakeTerminal(),
  15. ]
  16. )
  17. terminals_manager.start()
  18. terminals_manager.send(TerminalPackage(42))
  19. # We wait max 2s (see time.sleep) to consider
  20. # process have finished. If not, it will fail
  21. for i in range(200):
  22. packages = terminals_manager.receive()
  23. if packages:
  24. break
  25. time.sleep(0.01)
  26. assert 2 == len(packages)
  27. values = [p.value for p in packages]
  28. assert 84 in values
  29. assert 168 in values
  30. terminals_manager.stop() # pytest must execute this if have fail
  31. # TODO: Tester avec plusieurs terminaux