Add a Thing for API testing

This may not be in the codebase forever, but it's a very useful
sanity check to have during development.

The current implementation is clearly not a performance or
security risk.
This commit is contained in:
Richard Bowman 2024-01-04 01:11:44 +00:00
parent 62957e53e8
commit 09bec65b15
2 changed files with 33 additions and 0 deletions

View file

@ -0,0 +1,31 @@
"""
OpenFlexure Microscope API test Thing
This Thing is intended only for use testing out the API and client(s).
"""
from labthings_fastapi.thing import Thing
from labthings_fastapi.decorators import thing_action, thing_property
from labthings_fastapi.dependencies.invocation import CancelHook, InvocationLogger
class APITestThing(Thing):
_counter: int = 0
@thing_property
def counter(self) -> int:
return self._counter
@thing_action
def count_slowly(
self,
cancel: CancelHook,
logger: InvocationLogger,
n=100,
dt=0.1,
) -> None:
for i in range(n):
self._counter = i
print(f"counted to {i}")
logger.info(f"Counted to {i}")
cancel.sleep(dt)
self._counter = n