diff --git a/miniprobe/sensors/adns.py b/miniprobe/sensors/adns.py index 2b001be..d542ec6 100644 --- a/miniprobe/sensors/adns.py +++ b/miniprobe/sensors/adns.py @@ -133,6 +133,7 @@ def get_data(data, out_queue): "message": "DNS sensor failed. See log for details" } out_queue.put(data_r) + return 1 dns_channel = adns.get_dns(int(timed*1000)) addressdata = [] for element in dns_channel: @@ -153,6 +154,7 @@ def get_data(data, out_queue): del result gc.collect() out_queue.put(data) + return 0 @staticmethod def get_dns(time): diff --git a/miniprobe/sensors/apt.py b/miniprobe/sensors/apt.py index d29bbb4..9ed59d2 100644 --- a/miniprobe/sensors/apt.py +++ b/miniprobe/sensors/apt.py @@ -117,6 +117,8 @@ def get_data(data, out_queue): "message": "APT failed. %s" % e } out_queue.put(data_r) + return 1 del apt gc.collect() out_queue.put(data_r) + return 0 diff --git a/miniprobe/sensors/cpuload.py b/miniprobe/sensors/cpuload.py index 52f3ec4..27e4dce 100644 --- a/miniprobe/sensors/cpuload.py +++ b/miniprobe/sensors/cpuload.py @@ -67,6 +67,7 @@ def get_data(data, out_queue): "message": "CPU load sensor failed. See log for details" } out_queue.put(data) + return 1 cpudata = [] for element in cpu: cpudata.append(element) @@ -78,6 +79,7 @@ def get_data(data, out_queue): del cpuload gc.collect() out_queue.put(data) + return 0 @staticmethod def read_cpu(path): diff --git a/miniprobe/sensors/cputemp.py b/miniprobe/sensors/cputemp.py index fad7a13..84c0456 100644 --- a/miniprobe/sensors/cputemp.py +++ b/miniprobe/sensors/cputemp.py @@ -88,7 +88,8 @@ def get_data(data, out_queue): "code": 1, "message": "CPUTemp sensor failed. See log for details" } - return out_queue.put(data) + out_queue.put(data) + return 1 tempdata = [] for element in temp: tempdata.append(element) @@ -100,6 +101,7 @@ def get_data(data, out_queue): del temperature gc.collect() out_queue.put(data) + return 1 @staticmethod def read_temp(config): diff --git a/miniprobe/sensors/diskspace.py b/miniprobe/sensors/diskspace.py index d9d27a1..0c06c21 100644 --- a/miniprobe/sensors/diskspace.py +++ b/miniprobe/sensors/diskspace.py @@ -68,6 +68,7 @@ def get_data(data, out_queue): "message": "Disk Space Sensor failed. See log for details" } out_queue.put(data) + return 1 channels = disk data = { "sensorid": int(data['sensorid']), @@ -77,6 +78,7 @@ def get_data(data, out_queue): del diskspace gc.collect() out_queue.put(data) + return 0 def read_disk(self): disks = [] diff --git a/miniprobe/sensors/ds18b20.py b/miniprobe/sensors/ds18b20.py index db65e33..567d96f 100644 --- a/miniprobe/sensors/ds18b20.py +++ b/miniprobe/sensors/ds18b20.py @@ -95,6 +95,7 @@ def get_data(data, out_queue): "message": "DS18B20 sensor failed. See log for details" } out_queue.put(data) + return 1 tempdata = [] for element in temp: tempdata.append(element) @@ -106,6 +107,7 @@ def get_data(data, out_queue): del temperature gc.collect() out_queue.put(data) + return 0 @staticmethod def read_temp(config): diff --git a/miniprobe/sensors/external_ip.py b/miniprobe/sensors/external_ip.py index 6f192c7..33f26a6 100644 --- a/miniprobe/sensors/external_ip.py +++ b/miniprobe/sensors/external_ip.py @@ -73,6 +73,7 @@ def get_data(data, out_queue): "message": "External IP sensor failed. See log for details" } out_queue.put(data) + return 1 addressdata = [] for element in address: addressdata.append(element) @@ -84,6 +85,7 @@ def get_data(data, out_queue): del address gc.collect() out_queue.put(data) + return 0 @staticmethod def get_ip(url): diff --git a/miniprobe/sensors/http.py b/miniprobe/sensors/http.py index 0515c0c..0d372cd 100644 --- a/miniprobe/sensors/http.py +++ b/miniprobe/sensors/http.py @@ -190,6 +190,7 @@ def get_data(data, out_queue): "message": "HTTP Request failed. See log for details" } out_queue.put(data) + return 1 data = { "sensorid": int(data['sensorid']), @@ -205,3 +206,4 @@ def get_data(data, out_queue): del http gc.collect() out_queue.put(data) + return 0 diff --git a/miniprobe/sensors/memory.py b/miniprobe/sensors/memory.py index 3e18225..e0f3c40 100644 --- a/miniprobe/sensors/memory.py +++ b/miniprobe/sensors/memory.py @@ -67,6 +67,7 @@ def get_data(data, out_queue): "message": "Memory sensor failed. See log for details" } out_queue.put(data) + return 1 memorydata = [] for element in mem: memorydata.append(element) @@ -78,6 +79,7 @@ def get_data(data, out_queue): del memory gc.collect() out_queue.put(data) + return 0 def read_memory(self, path): mem = open(path, "r") diff --git a/miniprobe/sensors/nmap.py b/miniprobe/sensors/nmap.py index 877ebc5..84410af 100644 --- a/miniprobe/sensors/nmap.py +++ b/miniprobe/sensors/nmap.py @@ -124,7 +124,7 @@ def get_data(data, out_queue): "message": "Port check failed or ports closed. See log for details" } out_queue.put(sensor_data) - return + return 1 sensor_data = { "sensorid": int(data['sensorid']), "message": alive_str[:-2], @@ -133,6 +133,7 @@ def get_data(data, out_queue): del nmap gc.collect() out_queue.put(sensor_data) + return 0 def ip2bin(self,ip): b = "" diff --git a/miniprobe/sensors/ping.py b/miniprobe/sensors/ping.py index 8ed61f7..da67146 100644 --- a/miniprobe/sensors/ping.py +++ b/miniprobe/sensors/ping.py @@ -165,9 +165,11 @@ def get_data(data, out_queue): "sensorid": int(data['sensorid']), "error": "Exception", "code": 1, - "message": "Ping failed. %s" % e + "message": "Ping failed." #%s" % e } out_queue.put(data_r) + return 1 del ping gc.collect() out_queue.put(data_r) + return 0 diff --git a/miniprobe/sensors/port.py b/miniprobe/sensors/port.py index a38d319..f9961bc 100644 --- a/miniprobe/sensors/port.py +++ b/miniprobe/sensors/port.py @@ -127,6 +127,7 @@ def get_data(data, out_queue): "message": "Port check failed. See log for details" } out_queue.put(data) + return 1 data = { "sensorid": int(data['sensorid']), "message": "OK Port %s available" % data['targetport'], @@ -135,3 +136,4 @@ def get_data(data, out_queue): del port gc.collect() out_queue.put(data) + return 0 diff --git a/miniprobe/sensors/probehealth.py b/miniprobe/sensors/probehealth.py index cdb2779..b753c19 100644 --- a/miniprobe/sensors/probehealth.py +++ b/miniprobe/sensors/probehealth.py @@ -98,6 +98,7 @@ def get_data(data, out_queue): "message": "Probe Health sensor failed. See log for details" } out_queue.put(data) + return 1 probedata = [] for element in health: probedata.append(element) @@ -115,6 +116,7 @@ def get_data(data, out_queue): "channel": probedata } out_queue.put(data) + return 0 def read_memory(self, path): mem = open(path, "r") diff --git a/miniprobe/sensors/snmpcustom.py b/miniprobe/sensors/snmpcustom.py index c66e5d3..e8a5bdb 100644 --- a/miniprobe/sensors/snmpcustom.py +++ b/miniprobe/sensors/snmpcustom.py @@ -176,6 +176,7 @@ def snmp_get(self, oid, target, snmp_type, community, port, unit, multiplication @staticmethod def get_data(data, out_queue): snmpcustom = SNMPCustom() + snmp_data = [] try: snmp_data = snmpcustom.snmp_get(str(data['oid']), data['host'], data['value_type'], data['community'], int(data['port']), data['unit'], @@ -192,6 +193,7 @@ def get_data(data, out_queue): "message": "SNMP Request failed. See log for details" } out_queue.put(data) + return 1 data = { "sensorid": int(data['sensorid']), @@ -201,3 +203,4 @@ def get_data(data, out_queue): del snmpcustom gc.collect() out_queue.put(data) + return 0 diff --git a/miniprobe/sensors/snmptraffic.py b/miniprobe/sensors/snmptraffic.py index 2b4c482..5153154 100644 --- a/miniprobe/sensors/snmptraffic.py +++ b/miniprobe/sensors/snmptraffic.py @@ -169,6 +169,7 @@ def snmp_get(self, target, countertype, community, port, ifindex): @staticmethod def get_data(data, out_queue): snmptraffic = SNMPTraffic() + snmp_data = [] try: snmp_data = snmptraffic.snmp_get(data['host'], data['snmp_counter'], data['community'], int(data['port']), data['ifindex']) @@ -185,6 +186,7 @@ def get_data(data, out_queue): "message": "SNMP Request failed. See log for details" } out_queue.put(data) + return 1 data = { "sensorid": int(data['sensorid']), @@ -194,3 +196,4 @@ def get_data(data, out_queue): del snmptraffic gc.collect() out_queue.put(data) + return 0 diff --git a/miniprobe/tests/test_sensors.py b/miniprobe/tests/test_sensors.py index f779aa4..c7567fd 100644 --- a/miniprobe/tests/test_sensors.py +++ b/miniprobe/tests/test_sensors.py @@ -3,6 +3,7 @@ from nose.tools import * from miniprobe.sensors import adns,apt,cpuload,cputemp,diskspace,ds18b20,external_ip,http,memory,nmap,ping,port,portrange,probehealth,snmpcustom,snmptraffic +import multiprocessing class TestSensors: @classmethod @@ -23,6 +24,8 @@ def setup_class(cls): cls.test_port = port.Port() cls.test_portrange = portrange.Portrange() cls.test_probehealth = probehealth.Probehealth() + cls.test_out_queue = multiprocessing.Queue() + cls.test_sens_data = {'sensorid': '4567'} # NMAP def test_nmap_get_kind(self): @@ -255,6 +258,17 @@ def test_cputemp_get_sensordef(self): } assert_equal(self.test_cputemp.get_sensordef(testing=True), test_sensordef) + def test_cputemp_get_data_error(self): + """cputemp returns error data in expected format""" + test_sensor_error_data = { + "sensorid": int(self.test_sens_data['sensorid']), + "error": "Exception", + "code": 1, + "message": "CPUTemp sensor failed. See log for details" + } + self.test_cputemp.get_data(self.test_sens_data, self.test_out_queue) + assert_equal(self.test_out_queue.get(), test_sensor_error_data) + # SNMP Traffic def test_snmptraffic_get_kind(self): """snmptraffic returns the correct kind""" @@ -334,6 +348,17 @@ def test_snmptraffic_get_sensordef(self): } assert_equal(self.test_snmptraffic.get_sensordef(), test_sensordef) + def test_snmptraffic_get_data_error(self): + """snmptraffic returns error data in expected format""" + test_sensor_error_data = { + "sensorid": int(self.test_sens_data['sensorid']), + "error": "Exception", + "code": 1, + "message": "SNMP Request failed. See log for details" + } + self.test_snmptraffic.get_data(self.test_sens_data, self.test_out_queue) + assert_equal(self.test_out_queue.get(), test_sensor_error_data) + # SNMP Custom def test_snmpcustom_get_kind(self): """snmpcustom returns the correct kind""" @@ -431,6 +456,17 @@ def test_snmpcustom_get_sensordef(self): } assert_equal(self.test_snmpcustom.get_sensordef(), test_sensordef) + def test_snmptcustom_get_data_error(self): + """snmpcustom returns error data in expected format""" + test_sensor_error_data = { + "sensorid": int(self.test_sens_data['sensorid']), + "error": "Exception", + "code": 1, + "message": "SNMP Request failed. See log for details" + } + self.test_snmpcustom.get_data(self.test_sens_data, self.test_out_queue) + assert_equal(self.test_out_queue.get(), test_sensor_error_data) + # Diskspace def test_diskspace_get_kind(self): """diskspace returns the correct kind""" @@ -673,6 +709,17 @@ def test_ping_get_sensordef(self): } assert_equal(self.test_ping.get_sensordef(), test_sensordef) + def test_ping_get_data_error(self): + """ping returns error data in expected format""" + test_sensor_error_data = { + "sensorid": int(self.test_sens_data['sensorid']), + "error": "Exception", + "code": 1, + "message": "Ping failed." + } + self.test_ping.get_data(self.test_sens_data, self.test_out_queue) + assert_equal(self.test_out_queue.get(), test_sensor_error_data) + # Port def test_port_get_kind(self): """port returns the correct kind"""