Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
from concurrent.futures import Future
|
||||
from functools import partial
|
||||
from time import sleep
|
||||
|
||||
from shapeshifter_uftp.uftp import AgrPortfolioUpdate
|
||||
|
||||
from .helpers.messages import messages_by_type
|
||||
from .helpers.services import DummyAgrService, DummyCroService
|
||||
|
||||
|
||||
def callback(response, future):
|
||||
future.set_result(response)
|
||||
|
||||
def test_client_with_workers():
|
||||
with DummyAgrService() as agr_service:
|
||||
with DummyCroService() as cro_service:
|
||||
with agr_service.cro_client(cro_service.sender_domain) as client:
|
||||
message = messages_by_type[AgrPortfolioUpdate]
|
||||
main_future = Future()
|
||||
client._queue_message(message, partial(callback, future=main_future))
|
||||
result = main_future.result()
|
||||
assert result is None
|
||||
|
||||
def test_client_with_workers_retries():
|
||||
with DummyAgrService() as agr_service:
|
||||
with DummyCroService() as cro_service:
|
||||
with agr_service.cro_client(cro_service.sender_domain) as client:
|
||||
client.exponential_retry_base = 1.1
|
||||
client.exponential_retry_factor = 0.1
|
||||
old_endpoint_url = client.recipient_endpoint
|
||||
client.recipient_endpoint = "http://example.com"
|
||||
message = messages_by_type[AgrPortfolioUpdate]
|
||||
main_future = Future()
|
||||
client._queue_message(message, partial(callback, future=main_future))
|
||||
|
||||
sleep(1.0)
|
||||
|
||||
print("Left sleep")
|
||||
|
||||
client.recipient_endpoint = old_endpoint_url
|
||||
assert main_future.result() is None
|
||||
|
||||
def test_client_with_workers_retries_never_finishes():
|
||||
with DummyAgrService() as agr_service:
|
||||
with DummyCroService() as cro_service:
|
||||
with agr_service.cro_client(cro_service.sender_domain) as client:
|
||||
client.num_delivery_attempts = 2
|
||||
client.exponential_retry_base = 1.1
|
||||
client.exponential_retry_factor = 0.1
|
||||
old_endpoint_url = client.recipient_endpoint
|
||||
client.recipient_endpoint = "http://example.com"
|
||||
message = messages_by_type[AgrPortfolioUpdate]
|
||||
main_future = Future()
|
||||
client._queue_message(message, partial(callback, future=main_future))
|
||||
|
||||
sleep(2.0)
|
||||
|
||||
client.recipient_endpoint = old_endpoint_url
|
||||
assert main_future.done() is False
|
||||
|
||||
|
||||
def test_client_with_workers_error_in_callback():
|
||||
def faulty_callback(response, future):
|
||||
future.set_result(response)
|
||||
raise ValueError("BOOM")
|
||||
|
||||
with DummyAgrService() as agr_service:
|
||||
with DummyCroService() as cro_service:
|
||||
with agr_service.cro_client(cro_service.sender_domain) as client:
|
||||
message = messages_by_type[AgrPortfolioUpdate]
|
||||
main_future = Future()
|
||||
client._queue_message(message, partial(faulty_callback, future=main_future))
|
||||
assert main_future.result() is None
|
||||
Reference in New Issue
Block a user