Exemplo n.º 1
0
def test_apply_control_messages_command(looper, mock_sensor_set):
    sensors = Sensors(mock_sensor_set)
    message = CommandMessage('sensor1', 1, 'new', None)

    result = list(sensors.apply_control_message(looper, message))

    assert result == [CommandMessage('sensor1', 1, 'ack',
                                     roughly(datetime.utcnow()))]
    assert_no_update_config_called(mock_sensor_set)
Exemplo n.º 2
0
def test_apply_command_message_ok(looper, mock_sensor_set):
    sensors = Sensors(mock_sensor_set)
    message = CommandMessage('sensor1', 1, 'new', None)

    results = list(sensors.apply_command_message(looper, message))
    # allow the future to run
    looper.loop.run_until_complete(sleep_short())

    assert results == [CommandMessage('sensor1', 1, 'ack',
                                      roughly(datetime.utcnow()))]
    assert_run_command_called_once(mock_sensor_set, 'sensor1', looper)
Exemplo n.º 3
0
def test_run_update_config(looper, mock_sensor_set):
    sensors = Sensors(mock_sensor_set)
    answers = []

    async def control():
        await looper.config_queue.put(
            ConfigMessage('sensor1', {'foo': 'bar'})
        )
        await looper.config_queue.put(
            CommandMessage('sensor1', 1, 'new', None)
        )
        answers.append(await looper.send_queue.get())
        looper.stop()

    looper.loop.run_until_complete(
        asyncio.gather(
            control(),
            sensors.run_update_config(looper),
            loop=looper.loop
        )
    )

    assert looper.send_queue.queue.async_q.qsize() == 0
    assert answers == [CommandMessage('sensor1', 1, 'ack',
                                      roughly(datetime.utcnow()))]
    assert_update_config_called_once(
        mock_sensor_set, 'sensor1', {'foo': 'bar'}
    )
    assert_run_command_called_once(
        mock_sensor_set, 'sensor1', looper
    )
Exemplo n.º 4
0
def test_apply_command_message_no_device(looper, mock_sensor_set):
    sensors = Sensors(mock_sensor_set)
    message = CommandMessage('invalid', 1, 'new', None)

    result = list(sensors.apply_command_message(looper, message))

    assert result == [LogMessage.error('Unknown device in command invalid')]
Exemplo n.º 5
0
def test_apply_command_message_should_not_run(looper, mock_sensor_set):
    sensors = Sensors(mock_sensor_set)
    message = CommandMessage('sensor1', 1, 'ack', datetime.utcnow())

    results = list(sensors.apply_command_message(looper, message))

    assert results == []
    assert_no_run_command_called(mock_sensor_set)
Exemplo n.º 6
0
 async def control():
     await looper.config_queue.put(
         ConfigMessage('sensor1', {'foo': 'bar'})
     )
     await looper.config_queue.put(
         CommandMessage('sensor1', 1, 'new', None)
     )
     answers.append(await looper.send_queue.get())
     looper.stop()
Exemplo n.º 7
0
def test_apply_command_message_no_run_command(looper, mock_sensor_set):
    del mock_sensor_set['sensor1'].run_command
    sensors = Sensors(mock_sensor_set)
    message = CommandMessage('sensor1', 1, 'new', None)

    results = list(sensors.apply_command_message(looper, message))

    assert results == [LogMessage.error('Device sensor1 has no run_command')]
    assert_no_run_command_called(mock_sensor_set)
Exemplo n.º 8
0
def test_command_message_ack():
    command = CommandMessage('mydevice', 1, 'new', None)
    assert command.ack() == CommandMessage('mydevice', 1, 'ack',
                                           roughly(datetime.utcnow()))
Exemplo n.º 9
0
def test_command_message_from_dict(command_dict, expected_command):
    command = CommandMessage.from_dict('mydevice', command_dict)
    assert command == expected_command
Exemplo n.º 10
0
from datetime import datetime, timedelta

import pytest

from conftest import roughly

from bobnet_sensors.models import (ConfigMessage, CommandMessage,
                                   CommandResponseMessage, DataMessage,
                                   LogMessage)


@pytest.mark.parametrize('message,expected_type', [
    (ConfigMessage('d', {'f': 1}), 'config'),
    (CommandMessage('d', 1, 'new', None), 'command'),
    (DataMessage('d', {}), 'data'),
    (CommandResponseMessage('d', 1, 'new'), 'command_response'),
    (LogMessage.error('hi'), 'log'),
])
def test_message_type(message, expected_type):
    assert message.type == expected_type


@pytest.mark.parametrize('message,expected_json',
                         [(DataMessage('mydevice', {'foo': 'bar'}), {
                             'type': 'data',
                             'device': 'mydevice',
                             'data': {
                                 'foo': 'bar'
                             }
                         }),
                          (CommandResponseMessage('mydevice', 1, 'new'), {
Exemplo n.º 11
0
 'payload,expected_messages',
 [({
     'devices': {
         'mydevice': {
             'foo': 'bar'
         }
     }
 }, [ConfigMessage('mydevice', {'foo': 'bar'}), None]),
  ({
      'commands': {
          'mydevice': {
              'id': 1,
              'state': 'new'
          }
      }
  }, [CommandMessage('mydevice', 1, 'new', None), None]),
  ({
      'devices': {
          'mydevice': {
              'foo': 'bar'
          }
      },
      'commands': {
          'mydevice': {
              'id': 1,
              'state': 'new'
          }
      }
  }, [
      ConfigMessage('mydevice', {'foo': 'bar'}),
      CommandMessage('mydevice', 1, 'new', None),