def test_dir_owner(self): xprt = ldms.LDMS_xprt_new_with_auth(self.XPRT, self.AUTH, self.AUTH_OPT) rc = ldms.LDMS_xprt_connect_by_name(xprt, "localhost", self.PORT) if rc: raise RuntimeError("LDMS connect failed: %d" % rc) _dir = ldms.LDMS_xprt_dir(xprt) self.assertEqual(set(_dir), set(self.SETS)) ldms.ldms_xprt_close(xprt)
def test_lookup_owner(self): xprt = ldms.LDMS_xprt_new_with_auth(self.XPRT, self.AUTH, self.AUTH_OPT) rc = ldms.LDMS_xprt_connect_by_name(xprt, "localhost", self.PORT) if rc: raise RuntimeError("LDMS connect failed: %d" % rc) for _name, _perm in zip(self.SETS, self.PERMS): _set = ldms.LDMS_xprt_lookup(xprt, _name, ldms.LDMS_LOOKUP_BY_INSTANCE) self.assertIsNotNone(_set) ldms.ldms_xprt_close(xprt)
def test_dir_other(self): auth_opt = {"uid": "5555", "gid": "5555"} xprt = ldms.LDMS_xprt_new_with_auth(self.XPRT, self.AUTH, auth_opt) rc = ldms.LDMS_xprt_connect_by_name(xprt, "localhost", self.PORT) if rc: raise RuntimeError("LDMS connect failed: %d" % rc) r = re.compile("0..6") _sets = [_s for _s, _p in zip(self.SETS, self.PERMS) if r.match(_p)] _dir = ldms.LDMS_xprt_dir(xprt) self.assertEqual(set(_dir), set(_sets)) ldms.ldms_xprt_close(xprt)
def test_lookup_other(self): auth_opt = {"uid": "5555", "gid": "5555"} xprt = ldms.LDMS_xprt_new_with_auth(self.XPRT, self.AUTH, auth_opt) rc = ldms.LDMS_xprt_connect_by_name(xprt, "localhost", self.PORT) if rc: raise RuntimeError("LDMS connect failed: %d" % rc) for _name, _perm in zip(self.SETS, self.PERMS): _set = ldms.LDMS_xprt_lookup(xprt, _name, ldms.LDMS_LOOKUP_BY_INSTANCE) DEBUG.name = _name DEBUG.perm = _perm DEBUG.set = _set if _perm[3] != "0": self.assertIsNotNone(_set) else: self.assertIsNone(_set) ldms.ldms_xprt_close(xprt)
def fin(): logger.debug("---disconnect {0}:{1}---".format(obj['samplerd_host'], cfg.SAMPLERD_PORT)) ldms.ldms_xprt_close(conn)
def fin(): logger.debug("---disconnect {0}:{1}---".format( obj['agg_1stLevel_host'], cfg.AGG_PORT)) ldms.ldms_xprt_close(conn)
def setUpClass(cls): # Need 3 ldmsd .. the config objects are for aggregators log.info("Setting up TestLDMSDPerm") try: # samplers (producers) for prdcr in cls.PRDCRS: smp_cfg = """ load name=meminfo config name=meminfo producer=%(prdcr)s \ instance=%(prdcr)s/meminfo schema=meminfo start name=meminfo interval=1000000 offset=0 """ % prdcr log.debug("smp_cfg: %s" % smp_cfg) ldmsd = LDMSD(port=prdcr["port"], xprt=cls.XPRT, auth=cls.AUTH, auth_opt=cls.LDMSD_AUTH_OPT, cfg=smp_cfg, logfile=prdcr["logfile"]) log.info("starting %s" % prdcr["prdcr"]) ldmsd.run() cls.prdcrs.append(ldmsd) # aggregator cls.agg = LDMSD(port=cls.AGG_PORT, xprt=cls.XPRT, auth=cls.AUTH, auth_opt=cls.LDMSD_AUTH_OPT, logfile=cls.AGG_LOG) log.info("starting aggregator") cls.agg.run() time.sleep(1) # need to config separately so that prdcr,updtr pairs are owned by # different users. log.info("configuring aggregator") for prdcr in cls.PRDCRS: log.info("....adding %(prdcr)s" % prdcr) agg_cfg = """\ prdcr_add name=%(prdcr)s xprt=%(xprt)s host=localhost \ port=%(port)s type=active interval=1000000 \ perm=0600 prdcr_start name=%(prdcr)s updtr_add name=%(updtr)s interval=1000000 offset=500000 \ perm=0600 updtr_prdcr_add name=%(updtr)s regex=%(prdcr)s updtr_start name=%(updtr)s """ % prdcr log.debug("agg_cfg: %s" % agg_cfg) ctrl = ldmsdInbandConfig(host="localhost", port=cls.AGG_PORT, xprt=prdcr["xprt"], auth=prdcr["auth"], auth_opt=prdcr["auth_opt"]) for cmd in agg_cfg.splitlines(): cmd = cmd.strip() if not cmd: continue log.debug("cmd: %s" % cmd) req = LDMSD_Request.from_str(cmd) req.send(ctrl) resp = req.receive(ctrl) errcode = resp["errcode"] if errcode: raise RuntimeError("LDMSD Ctrl errcode: %d" % errcode) ctrl.close() time.sleep(1) # Verify that the agg is working as configured log.info("verifying aggregator") xprt = ldms.LDMS_xprt_new_with_auth(cls.XPRT, cls.AUTH, cls.LDMSD_AUTH_OPT) rc = ldms.LDMS_xprt_connect_by_name(xprt, "localhost", cls.AGG_PORT) if rc: raise RuntimeError("LDMS connect failed: %d" % rc) _dir = ldms.LDMS_xprt_dir(xprt) log.debug("dirs: %s" % str(_dir)) ldms.ldms_xprt_close(xprt) _edirs = [p["prdcr"] + "/meminfo" for p in cls.PRDCRS] if set(_dir) != set(_edirs): raise RuntimeError("Bad set ...") except: del cls.agg del cls.prdcrs raise log.info("TestLDMSDPerm set up done")