Skip to content

Commit 3e43b07

Browse files
author
Frédéric Mohier
committed
Remove LogLevelProp class (unused)
Clean log printing during the tests Some updates in the unit tests - hope this will be faster ;) Show tests duration Update Python Travis tests version: 2.7, 3.5 -> 3.7 Use constant and clean some tests Fix maintenance period potential problem Fix some broken test because of not removed false retention files Clean log in the daemons receiving modules Clean retention files for the tests
1 parent f5b070b commit 3e43b07

File tree

109 files changed

+1379
-1510
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+1379
-1510
lines changed

.travis.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
dist: xenial # required for Python >= 3.7
12
language: python
23
sudo: required
34
python:
5+
- '3.7'
46
- '3.6'
57
- '3.5'
6-
- '3.4'
78
- '2.7'
89

910
env:
@@ -23,7 +24,7 @@ script:
2324
# Run tests suite with code coverage analysis
2425
cd $TEST_SUITE
2526
echo "Starting tests '$TEST_SUITE' ..."
26-
pytest --verbose --durations=10 --no-print-logs --cov=alignak --cov-config .coveragerc test_*.py || travis_terminate 1;
27+
pytest --verbose --durations=0 --no-print-logs --cov=alignak --cov-config .coveragerc test_*.py || travis_terminate 1;
2728
# Upload coverage results to codecov
2829
bash <(curl -s https://codecov.io/bash) -e $TEST_SUITE -c -F $TEST_SUITE
2930
cd ..

alignak/action.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@
7272
fcntl = None
7373

7474
from alignak.alignakobject import AlignakObject
75-
from alignak.property import BoolProp, IntegerProp, FloatProp, StringProp, DictProp
75+
from alignak.property import (BoolProp, IntegerProp, FloatProp, StringProp,
76+
DictProp, FULL_STATUS)
7677

7778

7879
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
@@ -178,11 +179,11 @@ class ActionBase(AlignakObject):
178179
'exit_status':
179180
IntegerProp(default=3),
180181
'output':
181-
StringProp(default=u'', fill_brok=['full_status']),
182+
StringProp(default=u'', fill_brok=[FULL_STATUS]),
182183
'long_output':
183-
StringProp(default=u'', fill_brok=['full_status']),
184+
StringProp(default=u'', fill_brok=[FULL_STATUS]),
184185
'perf_data':
185-
StringProp(default=u'', fill_brok=['full_status']),
186+
StringProp(default=u'', fill_brok=[FULL_STATUS]),
186187
't_to_go':
187188
FloatProp(default=0.0),
188189
'check_time':
@@ -202,7 +203,7 @@ class ActionBase(AlignakObject):
202203
'env':
203204
DictProp(default={}),
204205
'module_type':
205-
StringProp(default=u'fork', fill_brok=['full_status']),
206+
StringProp(default=u'fork', fill_brok=[FULL_STATUS]),
206207
'my_worker':
207208
StringProp(default=u'none'),
208209
'command':

alignak/check.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
from alignak.property import StringProp
5656

5757

58-
class Check(Action): # pylint: disable=R0902
58+
class Check(Action): # pylint: disable=too-many-instance-attributes
5959
"""Check class implements monitoring concepts of checks :(status, state, output)
6060
Check instance are used to store monitoring plugins data (exit status, output)
6161
and used by schedule to raise alert, reschedule check etc.

alignak/contactdowntime.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
import logging
5151

5252
from alignak.alignakobject import AlignakObject
53-
from alignak.property import BoolProp, IntegerProp, StringProp
53+
from alignak.property import BoolProp, IntegerProp, StringProp, FULL_STATUS
5454

5555
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
5656

@@ -63,11 +63,11 @@ class ContactDowntime(AlignakObject):
6363

6464
properties = {
6565
'start_time':
66-
IntegerProp(default=0, fill_brok=['full_status']),
66+
IntegerProp(default=0, fill_brok=[FULL_STATUS]),
6767
'end_time':
68-
IntegerProp(default=0, fill_brok=['full_status']),
68+
IntegerProp(default=0, fill_brok=[FULL_STATUS]),
6969
'author':
70-
StringProp(default=u'', fill_brok=['full_status']),
70+
StringProp(default=u'', fill_brok=[FULL_STATUS]),
7171
'comment':
7272
StringProp(default=u''),
7373
'is_in_effect':

alignak/daemon.py

+4-17
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def get_all_groups():
202202
from alignak.stats import statsmgr
203203
from alignak.modulesmanager import ModulesManager
204204
from alignak.property import StringProp, BoolProp, PathProp
205-
from alignak.property import IntegerProp, FloatProp, LogLevelProp, ListProp
205+
from alignak.property import IntegerProp, FloatProp, ListProp
206206
from alignak.misc.common import setproctitle, SIGNALS_TO_NAMES_DICT
207207
from alignak.version import VERSION
208208

@@ -229,8 +229,7 @@ def __init__(self, msg):
229229
Exception.__init__(self, msg)
230230

231231

232-
# pylint: disable=R0902
233-
class Daemon(object):
232+
class Daemon(object): # pylint: disable=too-many-instance-attributes
234233
"""Class providing daemon level call for Alignak
235234
"""
236235

@@ -294,19 +293,7 @@ class Daemon(object):
294293
'server_dh':
295294
StringProp(default=u''),
296295

297-
# Deprecated in favor of logger_configuration
298-
# 'human_timestamp_log':
299-
# BoolProp(default=True),
300-
# 'human_date_format':
301-
# StringProp(default='%Y-%m-%d %H:%M:%S %Z'),
302-
# 'log_level':
303-
# LogLevelProp(default='INFO'),
304-
# 'log_rotation_when':
305-
# StringProp(default='midnight'),
306-
# 'log_rotation_interval':
307-
# IntegerProp(default=1),
308-
# 'log_rotation_count':
309-
# IntegerProp(default=7),
296+
# File for logger configuration
310297
'logger_configuration':
311298
StringProp(default=u'./alignak-logger.json'),
312299
# Override log file name - default is to not override
@@ -880,7 +867,7 @@ def request_stop(self, message='', exit_code=0):
880867
# Force output to stderr
881868
if exit_code:
882869
if message:
883-
logger.error(message)
870+
logger.error("stderr: %s", message)
884871
try:
885872
sys.stderr.write(message)
886873
except Exception: # pylint: disable=broad-except

alignak/daemons/arbiterdaemon.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
9696

9797

98-
class Arbiter(Daemon): # pylint: disable=R0902
98+
class Arbiter(Daemon): # pylint: disable=too-many-instance-attributes
9999
"""
100100
Arbiter class. Referenced as "app" in most Interface
101101
@@ -856,7 +856,7 @@ def load_modules_configuration_objects(self, raw_objects): # pragma: no cover,
856856
'pollers', 'reactionners', 'receivers', 'modules']:
857857
continue
858858
if prop not in got_objects:
859-
logger.warning("Did not get any '%s' objects from %s", prop, instance.name)
859+
logger.info("Did not get any '%s' objects from %s", prop, instance.name)
860860
continue
861861
for obj in got_objects[prop]:
862862
# test if raw_objects[k] are already set - if not, add empty array

alignak/daemons/brokerdaemon.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ def setup_new_conf(self):
328328
new_link = SatelliteLink.get_a_satellite_link(link_type[:-1],
329329
rs_conf)
330330
my_satellites[new_link.uuid] = new_link
331-
logger.info("I got a new %s satellite: %s", link_type[:-1], new_link)
331+
logger.info("I got a new %s satellite: %s", link_type[:-1], new_link.name)
332332

333333
new_link.running_id = running_id
334334
new_link.external_commands = external_commands
@@ -350,7 +350,7 @@ def setup_new_conf(self):
350350
logger.error('Cannot un-serialize modules configuration '
351351
'received from arbiter: %s', exp)
352352
if self.modules:
353-
logger.info("I received some modules configuration: %s", self.modules)
353+
logger.info("I received some modules configuration")
354354
self.have_modules = True
355355

356356
# Ok now start, or restart them!

alignak/daemons/receiverdaemon.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def setup_new_conf(self):
171171
logger.error('Cannot un-serialize modules configuration '
172172
'received from arbiter: %s', exp)
173173
if self.modules:
174-
logger.info("I received some modules configuration: %s", self.modules)
174+
logger.info("I received some modules configuration")
175175
self.have_modules = True
176176

177177
self.do_load_modules(self.modules)

alignak/daemons/schedulerdaemon.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,6 @@ def setup_new_conf(self):
362362

363363
logger.info("Monitored configuration %s received at %d. Un-serialized in %d secs",
364364
received_conf_part, t00, time.time() - t00)
365-
logger.info("Scheduler received configuration : %s", received_conf_part)
366365

367366
# Now we create our pollers, reactionners and brokers
368367
for link_type in ['pollers', 'reactionners', 'brokers']:
@@ -398,7 +397,7 @@ def setup_new_conf(self):
398397
new_link = SatelliteLink.get_a_satellite_link(link_type[:-1],
399398
rs_conf)
400399
my_satellites[new_link.uuid] = new_link
401-
logger.info("I got a new %s satellite: %s", link_type[:-1], new_link)
400+
logger.info("I got a new %s satellite: %s", link_type[:-1], new_link.name)
402401

403402
new_link.running_id = running_id
404403
new_link.external_commands = external_commands
@@ -429,7 +428,7 @@ def setup_new_conf(self):
429428
logger.error('Cannot un-serialize modules configuration '
430429
'received from arbiter: %s', exp)
431430
if self.modules:
432-
logger.debug("I received some modules configuration: %s", self.modules)
431+
logger.info("I received some modules configuration")
433432
self.have_modules = True
434433

435434
self.do_load_modules(self.modules)

alignak/dispatcher.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
from alignak.misc.serialization import serialize
6969
from alignak.util import master_then_spare
7070
from alignak.objects.satellitelink import LinkError
71+
from alignak.property import FULL_STATUS
7172

7273
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
7374

@@ -131,7 +132,7 @@ def __init__(self, conf, arbiter_link):
131132
cls = self.alignak_conf.__class__
132133
for prop, entry in list(cls.properties.items()):
133134
# Is this property intended for broking?
134-
if 'full_status' not in entry.fill_brok:
135+
if FULL_STATUS not in entry.fill_brok:
135136
continue
136137
self.global_conf[prop] = self.alignak_conf.get_property_value_for_brok(
137138
prop, cls.properties)

alignak/downtime.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
"""
5353
import time
5454
from alignak.comment import Comment
55-
from alignak.property import BoolProp, IntegerProp, StringProp
55+
from alignak.property import BoolProp, IntegerProp, StringProp, FULL_STATUS
5656
from alignak.brok import Brok
5757
from alignak.alignakobject import AlignakObject
5858

@@ -83,21 +83,21 @@ class Downtime(AlignakObject):
8383
'activate_me':
8484
StringProp(default=u''),
8585
'entry_time':
86-
IntegerProp(default=0, fill_brok=['full_status']),
86+
IntegerProp(default=0, fill_brok=[FULL_STATUS]),
8787
'fixed':
88-
BoolProp(default=True, fill_brok=['full_status']),
88+
BoolProp(default=True, fill_brok=[FULL_STATUS]),
8989
'start_time':
90-
IntegerProp(default=0, fill_brok=['full_status']),
90+
IntegerProp(default=0, fill_brok=[FULL_STATUS]),
9191
'duration':
92-
IntegerProp(default=0, fill_brok=['full_status']),
92+
IntegerProp(default=0, fill_brok=[FULL_STATUS]),
9393
'trigger_id':
9494
StringProp(default=u''),
9595
'end_time':
96-
IntegerProp(default=0, fill_brok=['full_status']),
96+
IntegerProp(default=0, fill_brok=[FULL_STATUS]),
9797
'real_end_time':
9898
IntegerProp(default=0),
9999
'author':
100-
StringProp(default=u'Alignak', fill_brok=['full_status']),
100+
StringProp(default=u'Alignak', fill_brok=[FULL_STATUS]),
101101
'comment':
102102
StringProp(default=u''),
103103
'is_in_effect':

alignak/log.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,16 @@ def set_log_console(log_level=logging.INFO):
210210
logger_ = logging.getLogger(ALIGNAK_LOGGER_NAME)
211211
logger_.setLevel(log_level)
212212

213-
# Adding a console logger...
214-
csh = ColorStreamHandler(sys.stdout)
215-
csh.setFormatter(Formatter('[%(asctime)s] %(levelname)s: [%(name)s] %(message)s',
216-
"%Y-%m-%d %H:%M:%S"))
217-
logger_.addHandler(csh)
213+
for handler in logger_.handlers:
214+
if isinstance(handler, (StreamHandler, ColorStreamHandler)):
215+
# We still have a console logger
216+
break
217+
else:
218+
# Adding a console logger...
219+
csh = ColorStreamHandler(sys.stdout)
220+
csh.setFormatter(Formatter('[%(asctime)s] %(levelname)s: [%(name)s] %(message)s',
221+
"%Y-%m-%d %H:%M:%S"))
222+
logger_.addHandler(csh)
218223

219224

220225
def set_log_level(log_level=logging.INFO, handlers=None):

alignak/modules/inner_retention.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -120,16 +120,16 @@ def __init__(self, mod_conf): # pylint: disable=too-many-branches
120120

121121
self.retention_dir = getattr(mod_conf, 'retention_dir', None)
122122
if os.getenv('ALIGNAK_RETENTION_DIR', None):
123-
self.retention_dir = os.getenv('ALIGNAK_RETENTION_DIR', None)
123+
self.retention_dir = os.getenv('ALIGNAK_RETENTION_DIR')
124124
if not self.retention_dir:
125-
self.retention_dir = tempfile.gettempdir()
125+
self.retention_dir = os.path.join(tempfile.gettempdir(), 'alignak', 'retention')
126126
if '%s' in self.retention_dir:
127127
self.retention_dir = self.retention_dir % self.my_daemon.name
128128

129129
self.retention_file = getattr(mod_conf, 'retention_file', None)
130130
logger.info("inner retention module, retention file: %s", self.retention_file)
131131
if os.getenv('ALIGNAK_RETENTION_FILE', None):
132-
self.retention_file = os.getenv('ALIGNAK_RETENTION_FILE', None)
132+
self.retention_file = os.getenv('ALIGNAK_RETENTION_FILE')
133133
if self.retention_file is None:
134134
self.retention_file = os.path.join(self.retention_dir, 'alignak-retention-%s.json')
135135
if '%s' in self.retention_file:
@@ -140,7 +140,7 @@ def __init__(self, mod_conf): # pylint: disable=too-many-branches
140140
"Trying to create....", self.retention_dir)
141141
try:
142142
os.makedirs(self.retention_dir)
143-
logger.error("Retention directory created.")
143+
logger.warning("Retention directory created: %s.", self.retention_dir)
144144
except OSError as exp:
145145
logger.error("Directory creation failed because: %s", str(exp))
146146
self.retention_dir = '/tmp'
@@ -169,7 +169,7 @@ def hook_load_retention(self, scheduler): # pylint: disable=too-many-locals, to
169169
"""Load retention data from a file
170170
171171
:param scheduler: scheduler instance of alignak
172-
:type scheduler: object
172+
:type scheduler: alignak.scheduler.Scheduler
173173
:return: None
174174
"""
175175
if not self.enabled:
@@ -260,7 +260,7 @@ def hook_save_retention(self, scheduler):
260260
"""Save retention data to a Json formated file
261261
262262
:param scheduler: scheduler instance of alignak
263-
:type scheduler: object
263+
:type scheduler: alignak.scheduler.Scheduler
264264
:return: None
265265
"""
266266
if not self.enabled:

0 commit comments

Comments
 (0)