def testDoTTurn(self): valveCfg = getDictFromXmlString(digitalTimedCfg) self.valve = Valve(valveCfg['valve'],self.router) #turn the valve all the way to hot self.valve.doTurn("TS" , 100) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/2/off' assert TestEventLogger._events[1].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[1].getSource() == 'hvac/valve/tv1/1/dwell' assert TestEventLogger._events[1].getPayload()['val'] == '100' TestEventLogger.clearEvents() #turn the valve all the way to cold self.valve.doTurn("CS" , 100) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/1/off' assert TestEventLogger._events[1].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[1].getSource() == 'hvac/valve/tv1/2/dwell' assert TestEventLogger._events[1].getPayload()['val'] == '200' TestEventLogger.clearEvents() #turn the valve halfway to hot self.valve.doTurn("TS" , 50) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/2/off' assert TestEventLogger._events[1].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[1].getSource() == 'hvac/valve/tv1/1/dwell' assert TestEventLogger._events[1].getPayload()['val'] == '50' TestEventLogger.clearEvents() #turn the valve 25% further to hot, should end up getting rounded to 22 self.valve.doTurn("TS" , 25) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/2/off' assert TestEventLogger._events[1].getType() == 'internal/hvac/digitalout' assert TestEventLogger._events[1].getSource() == 'hvac/valve/tv1/1/dwell' assert TestEventLogger._events[1].getPayload()['val'] == '25' TestEventLogger.clearEvents()
def testAoTurn(self): """ Test to make sure the correct events are being sent out when we request valvage We fake the return webbrick event to avoid having to set up a live webbrick The outgoing http request also never gets sent as we dont initialize twisted """ valveCfg = getDictFromXmlString(aCfg) self.valve = Valve(valveCfg['valve'],self.router) #turn the valve all the way to hot self.valve.doTurn("TS" , 100) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/analogoutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/3' assert TestEventLogger._events[0].getPayload()['val'] == '30' TestEventLogger.clearEvents() #turn the valve all the way to cold self.valve.doTurn("CS" , 100) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/analogoutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/3' assert TestEventLogger._events[0].getPayload()['val'] == '0' TestEventLogger.clearEvents() #turn the valve halfway to hot self.valve.doTurn("TS" , 50) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/analogoutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/3' assert TestEventLogger._events[0].getPayload()['val'] == '15' TestEventLogger.clearEvents() #turn the valve 25% further to hot, should end up getting rounded to 22 self.valve.doTurn("TS" , 25) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/analogoutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/3' assert TestEventLogger._events[0].getPayload()['val'] == '22' TestEventLogger.clearEvents()
def testDoTurn(self): valveCfg = getDictFromXmlString(digitalCfg) self.valve = Valve(valveCfg['valve'],self.router) #because of the way the digital valves work, any turn its 100% in either direction #turn the valve all the way to hot self.valve.doTurn("TS" , 100) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitaloutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/1/on' TestEventLogger.clearEvents() #turn the valve all the way to cold self.valve.doTurn("CS" , 100) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitaloutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/1/off' TestEventLogger.clearEvents() #turn the valve halfway to hot self.valve.doTurn("TS" , 50) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitaloutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/1/on' TestEventLogger.clearEvents() #turn the valve 25% further to hot self.valve.doTurn("TS" , 25) time.sleep(0.2) TestEventLogger.logEvents() assert TestEventLogger._events[0].getType() == 'internal/hvac/digitaloutput' assert TestEventLogger._events[0].getSource() == 'hvac/valve/tv1/1/on' TestEventLogger.clearEvents()
def testRun(self): self._log.debug( "\ntestRun" ) self.loader = EventRouterLoader() self.loader.loadHandlers( getDictFromXmlString(testConfig1) ) self.loader.start() # all tasks self.router = self.loader.getEventRouter() time.sleep(0.1) # We should see lots of events here as initial pass. TestEventLogger.logEvents() oldLen = len(TestEventLogger._events) self.assertEqual( oldLen, 11 ) # twice sent. TestEventLogger.clearEvents() # send midnight # no new events, just me self.router.publish( EventAgent("TestScheduleProcessor"), evtMidnightMon ) time.sleep(0.1) oldLen = len(TestEventLogger._events) TestEventLogger.logEvents() self.assertEqual( oldLen, 1 ) self.assertEqual( TestEventLogger._events[0].getSource(), "time/minute" ) # first event time self.router.publish( EventAgent("TestScheduleProcessor"), evt0530 ) time.sleep(0.2) # time and two actions oldLen = len(TestEventLogger._events) TestEventLogger.logEvents() self.assertEqual( oldLen, 4 ) self.assertEqual( TestEventLogger._events[1].getSource(), "time/minute" ) self.assertEqual( TestEventLogger._events[2].getSource(), "zone1/set" ) self.assertEqual( TestEventLogger._events[3].getSource(), "boiler/On" ) # second event time self.router.publish( EventAgent("TestScheduleProcessor"), evt0800 ) time.sleep(0.1) # time and one actions oldLen = len(TestEventLogger._events) TestEventLogger.logEvents() self.assertEqual( oldLen, 6 ) self.assertEqual( TestEventLogger._events[4].getSource(), "time/minute" ) self.assertEqual( TestEventLogger._events[5].getSource(), "zone1/set" ) # third event time self.router.publish( EventAgent("TestScheduleProcessor"), evt1600 ) time.sleep(0.1) # time and one actions oldLen = len(TestEventLogger._events) TestEventLogger.logEvents() self.assertEqual( oldLen, 8 ) self.assertEqual( TestEventLogger._events[6].getSource(), "time/minute" ) self.assertEqual( TestEventLogger._events[7].getSource(), "boiler/Off" ) # fourth event time self.router.publish( EventAgent("TestScheduleProcessor"), evt2200 ) time.sleep(0.1) # time and two actions oldLen = len(TestEventLogger._events) TestEventLogger.logEvents() self.assertEqual( oldLen, 11 ) self.assertEqual( TestEventLogger._events[8].getSource(), "time/minute" ) self.assertEqual( TestEventLogger._events[9].getSource(), "zone1/set" ) self.assertEqual( TestEventLogger._events[10].getSource(), "boiler/On" )