示例#1
0
def test_sh_mqttErrors():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    setStartTimeToNow(cfg, 'sched1', duration=0.5)
    setStartTimeToNow(cfg, 'sched2', deltaInMinutes=10)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
    irrigate.start()
    time.sleep(2)
    irrigate.mqtt.processMessages("xxx/suspend/valve1/command", "asd")
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/open/valve1/command", "asd")
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/valve1/command", "")
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/suspend/valve1/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/valve1/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/asd/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/valve786/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("", "")
    time.sleep(1)
    irrigate.mqtt.processMessages("/", 4)
    time.sleep(30)
    assert valves['valve1'].secondsDaily == 30
示例#2
0
def test_sh_mqttDisable():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    cfg.valves['valve1'].schedules.clear()
    cfg.valves['valve2'].schedules.clear()
    cfg.valves['valve3'].schedules.clear()
    irrigate.start()
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
    irrigate.mqtt.processMessages("xxx/enabled/valve1/command", 0)
    time.sleep(3)
    irrigate.mqtt.processMessages("xxx/open/valve1/command", 1)
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    irrigate.mqtt.processMessages("xxx/enabled/valve1/command", 1)
    time.sleep(3)
    irrigate.mqtt.processMessages("xxx/open/valve1/command", 1)
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
示例#3
0
def test_schedConflict():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=3)
  setStartTimeToNow(cfg, 'sched2', deltaInMinutes=1)
  cfg.valves['valve1'].schedules['sched2'] = cfg.schedules['sched2']
  cfg.valves['valve2'].schedules.clear()
  cfg.valves['valve3'].schedules.clear()
  cfg.valves['valve4'].schedules.clear()
  cfg.valves['valve5'].schedules.clear()
  assertValves(valves, ['valve1'], [(False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(5)
  assertValves(valves, ['valve1'], [(True, True)])
  time.sleep(60)
  assertValves(valves, ['valve1'], [(True, True)])
  assert len(q.queue) == 0
  time.sleep(60)
  assertValves(valves, ['valve1'], [(True, True)])
  assert len(q.queue) == 0
  time.sleep(60)
  assertValves(valves, ['valve1'], [(True, True)])
  assert len(q.queue) == 0
  time.sleep(60)
  assert len(q.queue) == 0
  assert valves['valve1'].secondsDaily == 240
示例#4
0
def test_sh_mqttDisableAfterOpen():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    cfg.valves['valve1'].enabled = False
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
示例#5
0
def test_schedPerSeason():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=1)
  cfg.valves['valve2'].schedules.clear()
  setStartTimeToNow(cfg, 'sched2', duration=1)
  cfg.schedules['sched1'].seasons.clear()
  cfg.schedules['sched1'].seasons.append(irrigate.getSeason(cfg.latitude))
  cfg.schedules['sched2'].seasons.clear()
  cfg.schedules['sched2'].seasons.append(irrigate.getSeason(-1 * cfg.latitude))
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (False, False), (False, False)])
示例#6
0
def test_schedSimple():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=0.1)
  setStartTimeToNow(cfg, 'sched2', deltaInMinutes=10)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (True, True), (False, False)])
  assert len(q.queue) == 0
  time.sleep(6)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  assert valves['valve1'].secondsDaily >= 6
示例#7
0
def test_schedPerDay():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=1)
  cfg.valves['valve2'].schedules.clear()
  setStartTimeToNow(cfg, 'sched2', duration=1)
  cfg.schedules['sched1'].days.clear()
  dayStr = calendar.day_abbr[datetime.datetime.today().weekday()]
  cfg.schedules['sched1'].days.append(dayStr)
  cfg.schedules['sched2'].days.clear()
  dayStr = calendar.day_abbr[(datetime.datetime.today() + datetime.timedelta(days=1)).weekday()]
  cfg.schedules['sched2'].days.append(dayStr)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (False, False), (False, False)])
示例#8
0
def test_schedDupCheck():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=3)
  setStartTimeToNow(cfg, 'sched2', deltaInMinutes=0, duration=3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (True, True), (False, False)])
  assert len(q.queue) == 1
  time.sleep(60)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (True, True), (False, False)])
  assert len(q.queue) == 1
  time.sleep(60)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (True, True), (False, False)])
  assert len(q.queue) == 1
示例#9
0
def test_schedOverlap():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=0.1)
  setStartTimeToNow(cfg, 'sched2', duration=0.1)
  cfg.valves['valve1'].schedules["sched2"] = cfg.schedules['sched2']
  cfg.valves['valve2'].schedules.clear()
  cfg.valves['valve3'].schedules.clear()
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(5)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (False, False), (False, False)])
  assert len(q.queue) == 0
  time.sleep(10)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  time.sleep(65)
  assert valves['valve1'].secondsDaily == 12
  assert len(q.queue) == 0
示例#10
0
def test_sh_sensorOverridesMqtt():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    setStartTimeToNow(cfg, 'sched4')
    cfg.valves['valve1'].schedules.clear()
    cfg.valves['valve2'].schedules.clear()
    cfg.valves['valve3'].schedules.clear()
    cfg.schedules['sched4'].sensor.handler.disable = True
    irrigate.start()
    time.sleep(3)
    # Should be handled but not opened
    assertValves(valves, ['valve5'], [(True, False)])

    irrigate.mqtt.processMessages("xxx/suspend/valve5/command", 0)
    time.sleep(3)
    # Should not open because the sensor overrides
    assertValves(valves, ['valve5'], [(True, False)])

    cfg.schedules['sched4'].sensor.handler.disable = False
    time.sleep(3)
    # Should open because the sensor is now enabled and the MQTT command is already "lost"
    assertValves(valves, ['valve5'], [(True, True)])
示例#11
0
文件: test_note.py 项目: hdl217/xnote
# -*- coding:utf-8 -*-
# @author xupingmao <*****@*****.**>
# @since 2019/10/05 20:23:43
# @modified 2020/03/05 23:44:13
import xutils

# cannot perform relative import
try:
    import test_base
except ImportError:
    from tests import test_base

from handlers.note.dao import get_by_id
from xutils import Storage

app = test_base.init()
json_request = test_base.json_request
request_html = test_base.request_html
BaseTestCase = test_base.BaseTestCase


def create_note_for_test(type, name):
    data = dict(name=name, type=type, content="hello,world")
    file = json_request("/note/add", method="POST", data=data)
    return file["id"]


def delete_note_for_test(name):
    json_request("/note/remove?name=%s" % name)