From 0e8925796135a941931f606636e066f5f258f238 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 14 Dec 2018 12:29:17 +0100 Subject: [PATCH 1/2] Fix fibonacci sensor intger overflow by resetting self.a and self.b if they get large enough. Also use larger poll interval. --- contrib/examples/sensors/fibonacci_sensor.py | 13 +++++++++---- contrib/examples/sensors/fibonacci_sensor.yaml | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/contrib/examples/sensors/fibonacci_sensor.py b/contrib/examples/sensors/fibonacci_sensor.py index 6e41db339e..e7bd86b42d 100644 --- a/contrib/examples/sensors/fibonacci_sensor.py +++ b/contrib/examples/sensors/fibonacci_sensor.py @@ -5,8 +5,7 @@ class FibonacciSensor(PollingSensor): - def __init__(self, sensor_service, config, - poll_interval=5): + def __init__(self, sensor_service, config, poll_interval=20): super(FibonacciSensor, self).__init__( sensor_service=sensor_service, config=config, @@ -24,8 +23,14 @@ def setup(self): self.logger = self.sensor_service.get_logger(name=self.__class__.__name__) def poll(self): - fib = self.a + self.b - self.logger.debug('Count: %d, a: %d, b: %d', self.count, self.a, self.b) + # Reset a and b if there are large enough to avoid integer overflow problems + if self.a > 10000 or self.b > 10000: + self.a = 0 + self.b = 1 + self.count = 2 + + fib = (self.a + self.b) + self.logger.debug('Count: %d, a: %d, b: %d, fib: %s', self.count, self.a, self.b, fib) payload = { "count": self.count, diff --git a/contrib/examples/sensors/fibonacci_sensor.yaml b/contrib/examples/sensors/fibonacci_sensor.yaml index 6a2a449f56..5485cd8135 100644 --- a/contrib/examples/sensors/fibonacci_sensor.yaml +++ b/contrib/examples/sensors/fibonacci_sensor.yaml @@ -2,7 +2,7 @@ class_name: "FibonacciSensor" entry_point: "fibonacci_sensor.py" description: "Simple polling sensor that emits fibonacci number." - poll_interval: 5 + poll_interval: 20 trigger_types: - name: "fibonacci" From e53d86a78a13a6f5af9e6e76f0f8f1c101ed6e7f Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Fri, 14 Dec 2018 12:34:08 +0100 Subject: [PATCH 2/2] Add log statement. --- contrib/examples/sensors/fibonacci_sensor.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/examples/sensors/fibonacci_sensor.py b/contrib/examples/sensors/fibonacci_sensor.py index e7bd86b42d..266e81aba3 100644 --- a/contrib/examples/sensors/fibonacci_sensor.py +++ b/contrib/examples/sensors/fibonacci_sensor.py @@ -20,11 +20,14 @@ def setup(self): self.a = 0 self.b = 1 self.count = 2 + self.logger = self.sensor_service.get_logger(name=self.__class__.__name__) def poll(self): # Reset a and b if there are large enough to avoid integer overflow problems if self.a > 10000 or self.b > 10000: + self.logger.debug('Reseting values to avoid integer overflow issues') + self.a = 0 self.b = 1 self.count = 2