File: test_poll_responses.py

package info (click to toggle)
python-openleadr-python 0.5.34%2Bdfsg.1-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,496 kB
  • sloc: python: 6,942; xml: 663; makefile: 32; sh: 18
file content (55 lines) | stat: -rw-r--r-- 3,512 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from openleadr import OpenADRClient, OpenADRServer, objects, utils
from functools import partial
from dataclasses import asdict
from datetime import datetime, timezone, timedelta
import pytest

def on_create_party_registration(registration_info):
    return 'ven123', 'reg123'

def poll_responder(ven_id, message_type, message_payload):
    return message_type, message_payload


event = objects.Event(event_descriptor=objects.EventDescriptor(event_id='event123',
                                                               event_status='far',
                                                               modification_number='1',
                                                               market_context='http://marketcontext01'),
                      event_signals=[objects.EventSignal(signal_name='simple',
                                                         signal_type='level',
                                                         signal_id=utils.generate_id(),
                                                         intervals=[objects.Interval(dtstart=datetime.now(timezone.utc),
                                                                                     duration=timedelta(minutes=10),
                                                                                     signal_payload=1)])],
                      targets=[{'ven_id': 'ven123'}])

poll_responses = [('oadrResponse', {}),
                  ('oadrDistributeEvent', {'events': [asdict(event)]}),
                  ('oadrCreateReport', {'report_requests': [{'report_request_id': 'req123',
                                                            'report_specifier': {'report_specifier_id': 'rsi123',
                                                                                 'granularity': timedelta(seconds=10),
                                                                                 'report_back_duration': timedelta(seconds=10),
                                                                                 'specifier_payloads': [{'r_id': 'rid123',
                                                                                                         'reading_type': 'Direct Read'}]}}]}),
                  ('oadrCancelReport', {'report_request_id': 'report123',
                                        'report_to_follow': False,
                                        'request_id': 'request123'}),
                  ('oadrRegisterReport', {'ven_id': 'ven123', 'reports': []}),
                  ('oadrUpdateReport', {'ven_id': 'ven123'}),
                  ('oadrCancelPartyRegistration', {'registration_id': 'reg123',
                                                   'ven_id': 'ven123'}),
                  ('oadrRequestReregistration', {'ven_id': 'ven123'})]

@pytest.mark.parametrize('message_type,message_payload', poll_responses)
@pytest.mark.asyncio
async def test_message(message_type, message_payload):
    server = OpenADRServer(vtn_id='myvtn')
    server.add_handler('on_create_party_registration', on_create_party_registration)
    server.add_handler('on_poll', partial(poll_responder, message_type=message_type, message_payload=message_payload))
    client = OpenADRClient(ven_name='myven',
                           vtn_url='http://localhost:8080/OpenADR2/Simple/2.0b')
    await server.run_async()
    await client.create_party_registration()
    response_type, response_payload = await client.poll()
    await server.stop()
    assert response_type == message_type