def testTestTempAndLog_withMultipleProviders(self): tempProvider1 = TempProvider("sensorid1") tempProvider1.getTemp = mock.Mock(return_value=18.0) tempProvider2 = TempProvider("sensorid2") tempProvider2.getTemp = mock.Mock(return_value=22.0) tempProvider3 = TempProvider("sensorid3") tempProvider3.getTemp = mock.Mock(return_value=21.0) heatingElement = HeatingElement() tempLogger = TempLogger() tempLogger._write = mock.Mock() time.time = mock.Mock(return_value=1234) beerTemp = BeerTemp([tempProvider1, tempProvider2, tempProvider3], heatingElement, tempLogger) beerTemp.testTempAndLog() self.assertFalse(heatingElement.isActive()) calls = [call.write(json.dumps({"active": False, "sensorId": "sensorid1", "temp": 18.0, "time": 1234})), call.write(json.dumps({"active": False, "sensorId": "sensorid2", "temp": 22.0, "time": 1234})), call.write(json.dumps({"active": False, "sensorId": "sensorid3", "temp": 21.0, "time": 1234}))] tempLogger._write.assert_has_calls(calls) tempProvider3.getTemp = mock.Mock(return_value=19.8) time.time = mock.Mock(return_value=5678) beerTemp.testTempAndLog() self.assertTrue(heatingElement.isActive()) calls = [call.write(json.dumps({"active": True, "sensorId": "sensorid1", "temp": 18.0, "time": 5678})), call.write(json.dumps({"active": True, "sensorId": "sensorid2", "temp": 22.0, "time": 5678})), call.write(json.dumps({"active": True, "sensorId": "sensorid3", "temp": 19.8, "time": 5678}))] tempLogger._write.assert_has_calls(calls)
def testTestTempAndLog_withSingleProvider_withNoneReturns(self): tempProvider = TempProvider("sensorid") tempProvider.getTemp = mock.Mock(return_value=None) heatingElement = HeatingElement() tempLogger = TempLogger() tempLogger._write = mock.Mock() time.time = mock.Mock(return_value=1234) beerTemp = BeerTemp([tempProvider], heatingElement, tempLogger) beerTemp.testTempAndLog() self.assertFalse(heatingElement.isActive()) self.assertNotIn(call(json.dumps({"active": True, "sensorId": "sensorid", "temp": 18.0, "time": 5678})), tempLogger._write.mock_calls) tempProvider.getTemp = mock.Mock(return_value=22.0) time.time = mock.Mock(return_value=5678) beerTemp.testTempAndLog() self.assertFalse(heatingElement.isActive()) tempLogger._write.assert_called_with( json.dumps({"active": False, "sensorId": "sensorid", "temp": 22.0, "time": 5678}))
def testTempAndLog_withMultipleProviders_oneAmbient(self): tempProvider1 = TempProvider("28-000004a2bb68") tempProvider1.getTemp = mock.Mock(return_value=18.0) tempProvider2 = TempProvider("sensorid2") tempProvider2.getTemp = mock.Mock(return_value=180.0) tempProvider3 = TempProvider("sensorid3") tempProvider3.getTemp = mock.Mock(return_value=18.0) heatingElement = HeatingElement() tempLogger = TempLogger() tempLogger._write = mock.Mock() time.time = mock.Mock(return_value=1234) beerTemp = BeerTemp([tempProvider1, tempProvider2, tempProvider3], heatingElement, tempLogger) beerTemp.testTempAndLog() self.assertFalse(heatingElement.isActive())
def testGetTemp(self): self._setupRawTempExpectation("29 00 4b 46 ff ff 08 10 eb : crc=eb YES\n29 00 4b 46 ff ff 08 10 eb t=20250") tempProvider = TempProvider("test_serial") self.assertEqual(20.25, tempProvider.getTemp()) TempProvider._rawTempHandle.assert_called_once_with("/sys/bus/w1/devices/test_serial/w1_slave")
def testCreate_withException(self): self.assertEqual([], TempProvider.create())
def testCreate_emptyList(self): self.assertEqual([], TempProvider.create())
def testCreate_multipleProviders(self): self.assertEqual([TempProvider("test_serial1"), TempProvider("test_serial2"), TempProvider("test_serial3")], TempProvider.create())
def testCreate_singleProvider_excludes_busMaster(self): self.assertEqual([TempProvider("test_serial")], TempProvider.create())
self._heatingElement.activate() else: self._heatingElement.deactivate() currentTime = int(time.time()) for temps in temps: self._tempLogger.log(currentTime, temps[0], temps[1], self._heatingElement.isActive()) def publishLog(self): #noinspection PyStatementEffect Popen(["sh", "/root/publishLog.sh"]).pid def schedule(self): while True: try: self.testTempAndLog() self.publishLog() except Exception as e: self.LOG.error(e) time.sleep(60) if __name__ == '__main__': logging.basicConfig(filename=tempfile.gettempdir() + "/" + 'beerTemp.log', level=logging.INFO) ch = logging.StreamHandler() ch.setLevel(logging.ERROR) logging.getLogger().addHandler(ch) BeerTemp(TempProvider.create(), HeatingElement(), TempLogger()).schedule()