From 2cb2a6c368e2f220f28af5c8974ab16e3354e061 Mon Sep 17 00:00:00 2001 From: James Muscat Date: Thu, 2 Jul 2015 10:37:52 +0100 Subject: [PATCH 1/6] Test for stats collector (refs issue #30). --- src/eddn/core/tests/TestStatsCollector.py | 17 +++++++++++++++++ src/eddn/core/tests/__init__.py | 0 2 files changed, 17 insertions(+) create mode 100644 src/eddn/core/tests/TestStatsCollector.py create mode 100644 src/eddn/core/tests/__init__.py diff --git a/src/eddn/core/tests/TestStatsCollector.py b/src/eddn/core/tests/TestStatsCollector.py new file mode 100644 index 0000000..1370812 --- /dev/null +++ b/src/eddn/core/tests/TestStatsCollector.py @@ -0,0 +1,17 @@ +import unittest + +from eddn.core.StatsCollector import StatsCollector +from time import sleep + + +class Test(unittest.TestCase): + + def testStatsCollectorTally(self): + print "This test will take about 60 seconds to run!" + statsCollector = StatsCollector() + statsCollector.start() + + self.assertEqual(0, statsCollector.getCount("test", 1)) + statsCollector.tally("test") + sleep(60) + self.assertEqual(1, statsCollector.getCount("test", 1)) diff --git a/src/eddn/core/tests/__init__.py b/src/eddn/core/tests/__init__.py new file mode 100644 index 0000000..e69de29 From 99871b8631fd6b61d0bee905f5c3bce75083c33b Mon Sep 17 00:00:00 2001 From: James Muscat Date: Thu, 2 Jul 2015 11:14:17 +0100 Subject: [PATCH 2/6] Increase wait to 61 seconds just in case. --- src/eddn/core/tests/TestStatsCollector.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/eddn/core/tests/TestStatsCollector.py b/src/eddn/core/tests/TestStatsCollector.py index 1370812..d4330b1 100644 --- a/src/eddn/core/tests/TestStatsCollector.py +++ b/src/eddn/core/tests/TestStatsCollector.py @@ -13,5 +13,5 @@ class Test(unittest.TestCase): self.assertEqual(0, statsCollector.getCount("test", 1)) statsCollector.tally("test") - sleep(60) + sleep(61) self.assertEqual(1, statsCollector.getCount("test", 1)) From 103846d42a2f699b31e9752f9600c976ad233ccd Mon Sep 17 00:00:00 2001 From: James Muscat Date: Thu, 2 Jul 2015 15:31:04 +0100 Subject: [PATCH 3/6] Don't share state between StatsCollector instances! Fixes #30. --- src/eddn/core/StatsCollector.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/eddn/core/StatsCollector.py b/src/eddn/core/StatsCollector.py index fdf8ed7..ab22f68 100644 --- a/src/eddn/core/StatsCollector.py +++ b/src/eddn/core/StatsCollector.py @@ -13,18 +13,17 @@ class StatsCollector(Thread): you choose, up to one hour. ''' - max_minutes = 60 - - current = {} - history = {} - - lock = Lock() - - starttime = 0 - def __init__(self): super(StatsCollector, self).__init__() self.daemon = True + self.max_minutes = 60 + + self.current = {} + self.history = {} + + self.lock = Lock() + + self.starttime = 0 def run(self): self.starttime = datetime.utcnow() From b0ec0de6caf78d875532c23cf4f1b999ba3cc416 Mon Sep 17 00:00:00 2001 From: James Muscat Date: Thu, 2 Jul 2015 15:37:58 +0100 Subject: [PATCH 4/6] Remove dead code. --- src/eddn/core/StatsCollector.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/eddn/core/StatsCollector.py b/src/eddn/core/StatsCollector.py index ab22f68..9ce7f05 100644 --- a/src/eddn/core/StatsCollector.py +++ b/src/eddn/core/StatsCollector.py @@ -43,12 +43,6 @@ class StatsCollector(Thread): else: self.current[key] += 1 - def getInboundCount(self, minutes): - return sum(islice(self.inboundHistory, 0, min(minutes, self.max_minutes))) - - def getOutboundCount(self, minutes): - return sum(islice(self.outboundHistory, 0, min(minutes, self.max_minutes))) - def getCount(self, key, minutes): if key in self.history: return sum(islice(self.history[key], 0, min(minutes, self.max_minutes))) From 802633d3efa3852eb9816f80c4362ddcc76e0bba Mon Sep 17 00:00:00 2001 From: James Muscat Date: Mon, 6 Jul 2015 16:10:29 +0100 Subject: [PATCH 5/6] Bind gateway to localhost by default (e.g. and then proxy via nginx) --- src/eddn/Gateway.py | 2 +- src/eddn/conf/Settings.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/eddn/Gateway.py b/src/eddn/Gateway.py index 5534aeb..9d7bcb5 100644 --- a/src/eddn/Gateway.py +++ b/src/eddn/Gateway.py @@ -213,7 +213,7 @@ class MalformedUploadError(Exception): def main(): loadConfig() configure() - run(host='0.0.0.0', port=Settings.GATEWAY_HTTP_PORT, server='gevent') + run(host=Settings.GATEWAY_HTTP_BIND_ADDRESS, port=Settings.GATEWAY_HTTP_PORT, server='gevent') if __name__ == '__main__': diff --git a/src/eddn/conf/Settings.py b/src/eddn/conf/Settings.py index c4cafcf..f898ef5 100644 --- a/src/eddn/conf/Settings.py +++ b/src/eddn/conf/Settings.py @@ -31,7 +31,8 @@ class _Settings(object): # Gateway settings ############################################################################### - GATEWAY_HTTP_PORT = 8080 + GATEWAY_HTTP_BIND_ADDRESS = "127.0.0.1" + GATEWAY_HTTP_PORT = 8081 GATEWAY_SENDER_BINDINGS = ["tcp://*:8500"] From ab64b8c830fd288851dca86a83cfbb7c910b3f94 Mon Sep 17 00:00:00 2001 From: James Muscat Date: Mon, 6 Jul 2015 17:03:48 +0100 Subject: [PATCH 6/6] Delete unused import / organise imports. --- src/eddn/core/DuplicateMessages.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/eddn/core/DuplicateMessages.py b/src/eddn/core/DuplicateMessages.py index 039f1c1..1d16919 100644 --- a/src/eddn/core/DuplicateMessages.py +++ b/src/eddn/core/DuplicateMessages.py @@ -1,14 +1,13 @@ # coding: utf8 +import hashlib +import re +import simplejson +import zlib from datetime import datetime, timedelta +from eddn.conf.Settings import Settings from threading import Lock, Thread from time import sleep -import hashlib -import zlib -import re - -import simplejson -from eddn.conf.Settings import Settings, loadConfig class DuplicateMessages(Thread):