def test_regenerator_load_from_scheduler(self): # # Config is not correct because of a wrong relative path # in the main config file # # for h in self.sched.hosts: # h.realm = h.realm.get_name() self.rg = Regenerator() self.rg.load_from_scheduler(self.sched) self.sched.conf.skip_initial_broks = False self.sched.brokers['Default-Broker'] = { 'broks': {}, 'has_full_broks': False } self.sched.fill_initial_broks('Default-Broker') # Got the initial creation ones ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print 'First inc', t1 - t0, len(self.sched.broks) self.sched.broks.clear() self.look_for_same_values()
def test_reversed_list(self): """ Test to ensure new conf is properly merge with different servicegroup definition The first conf has all its servicegroup defined servicegroups.cfg and services.cfg The second conf has both, so that servicegroups defined ins services.cfg are genretaed by Alignak This lead to another generated id witch should be handled properly when regenerating reversed list / merging servicegroups definition """ sg = self.sched.servicegroups.find_by_name('servicegroup_01') prev_id = sg._id reg = Regenerator() data = {"instance_id": 0} b = Brok('program_status', data) b.prepare() reg.manage_program_status_brok(b) reg.all_done_linking(0) self.setup_with_file(["etc/alignak_reversed_list.cfg"]) reg.all_done_linking(0) #for service in self.sched.servicegroups: # assert(service.servicegroup_name in self.sched.servicegroups.reversed_list.keys()) # assert(service._id == self.sched.servicegroups.reversed_list[service.servicegroup_name]) sg = self.sched.servicegroups.find_by_name('servicegroup_01') assert(prev_id != sg._id) for sname in [u'servicegroup_01', u'ok', u'flap', u'unknown', u'random', u'servicegroup_02', u'servicegroup_03', u'warning', u'critical', u'servicegroup_04', u'servicegroup_05', u'pending', u'mynewgroup']: sg = self.sched.servicegroups.find_by_name(sname) assert(sname is not None)
def test_regenerator_load_from_scheduler(self): # # Config is not correct because of a wrong relative path # in the main config file # # for h in self.sched.hosts: # h.realm = h.realm.get_name() self.rg = Regenerator() self.rg.load_from_scheduler(self.sched) self.sched.conf.skip_initial_broks = False self.sched.brokers["Default-Broker"] = {"broks": {}, "has_full_broks": False} self.sched.fill_initial_broks("Default-Broker") # Got the initial creation ones ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print "First inc", t1 - t0, len(self.sched.broks) self.sched.broks.clear() self.look_for_same_values()
class TestRegenerator(AlignakTest): def setUp(self): self.setup_with_file(['etc/alignak_regenerator.cfg']) def look_for_same_values(self): # Look at Regenerator values print "Hosts:", self.rg.hosts.__dict__ for h in self.rg.hosts: orig_h = self.sched.hosts.find_by_name(h.host_name) print h.state, orig_h.state # Look for same states self.assertEqual(orig_h.state, h.state) self.assertEqual(orig_h.state_type, h.state_type) # Look for same impacts for i in h.impacts: print "Got impact", i.get_name() same_impacts = i.get_name() in [ j.get_name() for j in orig_h.impacts ] self.assertTrue(same_impacts) # And look for same source problems for i in h.source_problems: print "Got source pb", i.get_name() same_pbs = i.get_name() in [ j.get_name() for j in orig_h.source_problems ] self.assertTrue(same_pbs) print "Services:", self.rg.services.__dict__ for s in self.rg.services: orig_s = self.sched.services.find_srv_by_name_and_hostname( s.host.host_name, s.service_description) print s.state, orig_s.state self.assertEqual(orig_s.state, s.state) self.assertEqual(orig_s.state_type, s.state_type) # Look for same impacts too for i in s.impacts: print "Got impact", i.get_name() same_impacts = i.get_name() in [ j.get_name() for j in orig_s.impacts ] self.assertTrue(same_impacts) # And look for same source problems for i in s.source_problems: print "Got source pb", i.get_name() same_pbs = i.get_name() in [ j.get_name() for j in orig_s.source_problems ] self.assertTrue(same_pbs) # Look for same host self.assertEqual(orig_s.host.get_name(), s.host.get_name()) def test_regenerator(self): # # Config is not correct because of a wrong relative path # in the main config file # # for h in self.sched.hosts: # h.realm = h.realm.get_name() self.sched.conf.skip_initial_broks = False self.sched.brokers['Default-Broker'] = { 'broks': {}, 'has_full_broks': False } self.sched.fill_initial_broks('Default-Broker') self.rg = Regenerator() # Got the initial creation ones ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print 'First inc', t1 - t0, len(self.sched.broks) self.sched.broks.clear() self.look_for_same_values() print "Get the hosts and services" host = self.sched.hosts.find_by_name("test_host_0") host.checks_in_progress = [] host.act_depend_of = [] # ignore the router router = self.sched.hosts.find_by_name("test_router_0") router.checks_in_progress = [] router.act_depend_of = [] # ignore the router svc = self.sched.services.find_srv_by_name_and_hostname( "test_host_0", "test_ok_0") svc.checks_in_progress = [] svc.act_depend_of = [] # no hostchecks on critical checkresults self.scheduler_loop( 3, [[host, 2, 'DOWN | value1=1 value2=2'], [router, 0, 'UP | rtt=10'], [svc, 2, 'BAD | value1=0 value2=0']]) self.assertEqual('DOWN', host.state) self.assertEqual('HARD', host.state_type) ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print 'Time', t1 - t0 self.sched.broks.clear() self.look_for_same_values() print 'Time', t1 - t0 b = svc.get_initial_status_brok() b.prepare() print "GO BENCH!" t0 = time.time() for i in xrange(1, 1000): b = svc.get_initial_status_brok() b.prepare() s = Service({}) for (prop, value) in b.data.iteritems(): setattr(s, prop, value) t1 = time.time() print "Bench end:", t1 - t0 times = {} sizes = {} import cPickle data = {} cls = svc.__class__ start = time.time() for i in xrange(1, 10000): for prop, entry in svc.__class__.properties.items(): # Is this property intended for brokking? if 'full_status' in entry.fill_brok: data[prop] = svc.get_property_value_for_brok( prop, cls.properties) if not prop in times: times[prop] = 0 sizes[prop] = 0 t0 = time.time() tmp = cPickle.dumps(data[prop], 0) sizes[prop] += len(tmp) times[prop] += time.time() - t0 print "Times" for (k, v) in times.iteritems(): print "\t%s: %s" % (k, v) print "\n\n" print "Sizes" for (k, v) in sizes.iteritems(): print "\t%s: %s" % (k, v) print "\n" print "total time", time.time() - start def test_regenerator_load_from_scheduler(self): # # Config is not correct because of a wrong relative path # in the main config file # # for h in self.sched.hosts: # h.realm = h.realm.get_name() self.rg = Regenerator() self.rg.load_from_scheduler(self.sched) self.sched.conf.skip_initial_broks = False self.sched.brokers['Default-Broker'] = { 'broks': {}, 'has_full_broks': False } self.sched.fill_initial_broks('Default-Broker') # Got the initial creation ones ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print 'First inc', t1 - t0, len(self.sched.broks) self.sched.broks.clear() self.look_for_same_values()
class TestRegenerator(AlignakTest): def setUp(self): self.setup_with_file(["etc/alignak_regenerator.cfg"]) def look_for_same_values(self): # Look at Regenerator values print "Hosts:", self.rg.hosts.__dict__ for h in self.rg.hosts: orig_h = self.sched.hosts.find_by_name(h.host_name) print h.state, orig_h.state # Look for same states self.assertEqual(orig_h.state, h.state) self.assertEqual(orig_h.state_type, h.state_type) # Look for same impacts for i in h.impacts: print "Got impact", i.get_name() same_impacts = i.get_name() in [j.get_name() for j in orig_h.impacts] self.assertTrue(same_impacts) # And look for same source problems for i in h.source_problems: print "Got source pb", i.get_name() same_pbs = i.get_name() in [j.get_name() for j in orig_h.source_problems] self.assertTrue(same_pbs) print "Services:", self.rg.services.__dict__ for s in self.rg.services: orig_s = self.sched.services.find_srv_by_name_and_hostname(s.host.host_name, s.service_description) print s.state, orig_s.state self.assertEqual(orig_s.state, s.state) self.assertEqual(orig_s.state_type, s.state_type) # Look for same impacts too for i in s.impacts: print "Got impact", i.get_name() same_impacts = i.get_name() in [j.get_name() for j in orig_s.impacts] self.assertTrue(same_impacts) # And look for same source problems for i in s.source_problems: print "Got source pb", i.get_name() same_pbs = i.get_name() in [j.get_name() for j in orig_s.source_problems] self.assertTrue(same_pbs) # Look for same host self.assertEqual(orig_s.host.get_name(), s.host.get_name()) def test_regenerator(self): # # Config is not correct because of a wrong relative path # in the main config file # # for h in self.sched.hosts: # h.realm = h.realm.get_name() self.sched.conf.skip_initial_broks = False self.sched.brokers["Default-Broker"] = {"broks": {}, "has_full_broks": False} self.sched.fill_initial_broks("Default-Broker") self.rg = Regenerator() # Got the initial creation ones ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print "First inc", t1 - t0, len(self.sched.broks) self.sched.broks.clear() self.look_for_same_values() print "Get the hosts and services" host = self.sched.hosts.find_by_name("test_host_0") host.checks_in_progress = [] host.act_depend_of = [] # ignore the router router = self.sched.hosts.find_by_name("test_router_0") router.checks_in_progress = [] router.act_depend_of = [] # ignore the router svc = self.sched.services.find_srv_by_name_and_hostname("test_host_0", "test_ok_0") svc.checks_in_progress = [] svc.act_depend_of = [] # no hostchecks on critical checkresults self.scheduler_loop( 3, [[host, 2, "DOWN | value1=1 value2=2"], [router, 0, "UP | rtt=10"], [svc, 2, "BAD | value1=0 value2=0"]] ) self.assertEqual("DOWN", host.state) self.assertEqual("HARD", host.state_type) ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print "Time", t1 - t0 self.sched.broks.clear() self.look_for_same_values() print "Time", t1 - t0 b = svc.get_initial_status_brok() b.prepare() print "GO BENCH!" t0 = time.time() for i in xrange(1, 1000): b = svc.get_initial_status_brok() b.prepare() s = Service({}) for (prop, value) in b.data.iteritems(): setattr(s, prop, value) t1 = time.time() print "Bench end:", t1 - t0 times = {} sizes = {} import cPickle data = {} cls = svc.__class__ start = time.time() for i in xrange(1, 10000): for prop, entry in svc.__class__.properties.items(): # Is this property intended for brokking? if "full_status" in entry.fill_brok: data[prop] = svc.get_property_value_for_brok(prop, cls.properties) if not prop in times: times[prop] = 0 sizes[prop] = 0 t0 = time.time() tmp = cPickle.dumps(data[prop], 0) sizes[prop] += len(tmp) times[prop] += time.time() - t0 print "Times" for (k, v) in times.iteritems(): print "\t%s: %s" % (k, v) print "\n\n" print "Sizes" for (k, v) in sizes.iteritems(): print "\t%s: %s" % (k, v) print "\n" print "total time", time.time() - start def test_regenerator_load_from_scheduler(self): # # Config is not correct because of a wrong relative path # in the main config file # # for h in self.sched.hosts: # h.realm = h.realm.get_name() self.rg = Regenerator() self.rg.load_from_scheduler(self.sched) self.sched.conf.skip_initial_broks = False self.sched.brokers["Default-Broker"] = {"broks": {}, "has_full_broks": False} self.sched.fill_initial_broks("Default-Broker") # Got the initial creation ones ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print "First inc", t1 - t0, len(self.sched.broks) self.sched.broks.clear() self.look_for_same_values()
def test_regenerator(self): # # Config is not correct because of a wrong relative path # in the main config file # # for h in self.sched.hosts: # h.realm = h.realm.get_name() self.sched.conf.skip_initial_broks = False self.sched.brokers["Default-Broker"] = {"broks": {}, "has_full_broks": False} self.sched.fill_initial_broks("Default-Broker") self.rg = Regenerator() # Got the initial creation ones ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print "First inc", t1 - t0, len(self.sched.broks) self.sched.broks.clear() self.look_for_same_values() print "Get the hosts and services" host = self.sched.hosts.find_by_name("test_host_0") host.checks_in_progress = [] host.act_depend_of = [] # ignore the router router = self.sched.hosts.find_by_name("test_router_0") router.checks_in_progress = [] router.act_depend_of = [] # ignore the router svc = self.sched.services.find_srv_by_name_and_hostname("test_host_0", "test_ok_0") svc.checks_in_progress = [] svc.act_depend_of = [] # no hostchecks on critical checkresults self.scheduler_loop( 3, [[host, 2, "DOWN | value1=1 value2=2"], [router, 0, "UP | rtt=10"], [svc, 2, "BAD | value1=0 value2=0"]] ) self.assertEqual("DOWN", host.state) self.assertEqual("HARD", host.state_type) ids = self.sched.broks.keys() ids.sort() t0 = time.time() for i in ids: b = self.sched.broks[i] print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print "Time", t1 - t0 self.sched.broks.clear() self.look_for_same_values() print "Time", t1 - t0 b = svc.get_initial_status_brok() b.prepare() print "GO BENCH!" t0 = time.time() for i in xrange(1, 1000): b = svc.get_initial_status_brok() b.prepare() s = Service({}) for (prop, value) in b.data.iteritems(): setattr(s, prop, value) t1 = time.time() print "Bench end:", t1 - t0 times = {} sizes = {} import cPickle data = {} cls = svc.__class__ start = time.time() for i in xrange(1, 10000): for prop, entry in svc.__class__.properties.items(): # Is this property intended for brokking? if "full_status" in entry.fill_brok: data[prop] = svc.get_property_value_for_brok(prop, cls.properties) if not prop in times: times[prop] = 0 sizes[prop] = 0 t0 = time.time() tmp = cPickle.dumps(data[prop], 0) sizes[prop] += len(tmp) times[prop] += time.time() - t0 print "Times" for (k, v) in times.iteritems(): print "\t%s: %s" % (k, v) print "\n\n" print "Sizes" for (k, v) in sizes.iteritems(): print "\t%s: %s" % (k, v) print "\n" print "total time", time.time() - start