def manage_initial_service_status_brok(self, b): data = b.data s_id = data['id'] #print "Creating Service:", s_id, data s = Service({}) self.update_element(s, data) #add instance_id to the host, so we know in which scheduler he is s.instance_id = b.instance_id s.check_period = self.get_timeperiod(s.check_period) s.notification_period = self.get_timeperiod(s.notification_period) s.contacts = self.get_contacts(s.contacts) del s.escalations #print "S:", s self.services[s_id] = s self.number_of_objects += 1
def manage_initial_service_status_brok(self, b): data = b.data s_id = data['id'] #print "Creating Service:", s_id, data s = Service({}) self.update_element(s, data) self.set_schedulingitem_values(s) h = self.find_host(data['host_name']) if h is not None: # Reconstruct the connection between hosts and services h.service_ids.append(s_id) h.services.append(s) # There is already a s.host_name, but a reference to the h object can be useful too s.host = h self.services[s_id] = s self.servicename_lookup_table[s.host_name + s.service_description] = s_id self.number_of_objects += 1
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 t0 = time.time() for b in self.sched.broks: print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print 'First inc', t1 - t0, len(self.sched.broks) del self.sched.broks[:] 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) t0 = time.time() for b in self.sched.broks: print "Manage b", b.type b.prepare() self.rg.manage_brok(b) t1 = time.time() print 'Time', t1 - t0 del self.sched.broks[:] 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