Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
 def fin():
     logger.debug("---disconnect {0}:{1}---".format(obj['samplerd_host'],
                                                    cfg.SAMPLERD_PORT))
     ldms.ldms_xprt_close(conn)
Beispiel #6
0
 def fin():
     logger.debug("---disconnect {0}:{1}---".format(
         obj['agg_1stLevel_host'], cfg.AGG_PORT))
     ldms.ldms_xprt_close(conn)
Beispiel #7
0
    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")