Beispiel #1
0
    def runPughHall(self):
        print "Experiment.runPughHall>"

        ## main objects
        db = Database()
        objects = db.getObjects()
        building = buildings.PughHall()
        building.tag(objects)
        #building.check(objects)

        ## Identify tags and set watch to enabled
        rooms = objects.getTag('room', ['104', '105'])
        print rooms
        db.enablePoints(rooms)

        ## Schedule object.
        #        t=db.now()

        #        db.scheduleObject(o20, t+1 , 2, 1)
        #        db.scheduleObject(o20, t+4 , 1, 1)
        #        db.scheduleObject(o20, t+7 , 1, 1)
        #        db.scheduleObject(o20, t+6 , 3, 1)
        #
        #        db.scheduleObject(o21, t+2 , 5, 1)

        db.close()
Beispiel #2
0
    def runPughHall(self):
        print "Experiment.runPughHall>"
        
        ## main objects
        db=Database()
        objects=db.getObjects()
        building=buildings.PughHall()
        building.tag(objects)
        #building.check(objects)

        ## Identify tags and set watch to enabled 
        rooms=objects.getTag('room',['104','105'])
        print rooms
        db.enablePoints(rooms)
        
        ## Schedule object.
#        t=db.now()
        
#        db.scheduleObject(o20, t+1 , 2, 1)
#        db.scheduleObject(o20, t+4 , 1, 1)
#        db.scheduleObject(o20, t+7 , 1, 1)
#        db.scheduleObject(o20, t+6 , 3, 1)
#        
#        db.scheduleObject(o21, t+2 , 5, 1)
        

        db.close()
Beispiel #3
0
    def runTest(self):
        print "Experiment.runTest>"

        ## main objects
        db = Database()
        objects = db.getObjects()
        building = buildings.Test()
        building.tag(objects)
        #building.check(objects)

        ## Identify tags and set watch to enabled
        o19 = objects.getTag('point', 19).single()
        o20 = objects.getTag('point', 20).single()
        o21 = objects.getTag('point', 21).single()
        test = [o19, o20, o21]
        db.enablePoints(test)

        ## Schedule object.
        t = db.now()
        #        db.scheduleObject(o19, t+1, 3, 51)

        #        db.scheduleObject(o20, t+1 , 2, 1)
        #        db.scheduleObject(o20, t+4 , 1, 1)
        #        db.scheduleObject(o20, t+7 , 1, 1)
        #        db.scheduleObject(o20, t+6 , 3, 1)
        #
        db.scheduleObject(o21, t + 1, 10, 1)
        db.scheduleObject(o21, t + 3, 5, None)

        db.close()
Beispiel #4
0
    def runTest(self):
        print "Experiment.runTest>"
        
        ## main objects
        db=Database()
        objects=db.getObjects()
        building=buildings.Test()
        building.tag(objects)
        #building.check(objects)

        ## Identify tags and set watch to enabled 
        o19=objects.getTag('point',19).single()
        o20=objects.getTag('point',20).single()
        o21=objects.getTag('point',21).single()
        test=[o19,o20,o21]
        db.enablePoints(test)
        
        ## Schedule object.
        t=db.now()
#        db.scheduleObject(o19, t+1, 3, 51)
        
#        db.scheduleObject(o20, t+1 , 2, 1)
#        db.scheduleObject(o20, t+4 , 1, 1)
#        db.scheduleObject(o20, t+7 , 1, 1)
#        db.scheduleObject(o20, t+6 , 3, 1)
#        
        db.scheduleObject(o21, t+1 , 10, 1)
        db.scheduleObject(o21, t+3 , 5, None)

        db.close()
Beispiel #5
0
    def runTest(self):
        print "Virtual.runTest>"
        db = Database("baclog", 5432)
        db.getObjects()
        av1 = db.instance[(9001, 2, 0)]  ## hard coded AV1
        print av1
        db.enablePoints([av1])
        t = db.now()
        db.scheduleObject(av1, t + 1, 30, 10)

        db.close()
Beispiel #6
0
    def runTest(self):
        print "Virtual.runTest>"
        db=Database("baclog",5432)
        db.getObjects()
        av1=db.instance[(9001,2,0)] ## hard coded AV1
        print av1
        db.enablePoints([av1])
        t=db.now()
        db.scheduleObject(av1, t+1 , 30, 10)

        db.close()
Beispiel #7
0
    def enablePughHall(self):
        print "Experiment.enablePughHall>"

        ## main objects
        db = Database()
        objects = db.getObjects()
        building = buildings.PughHall()
        building.tag(objects)
        #building.check(objects)

        ## Identify tags and set watch to enabled
        rooms = objects.getTag('room', ['104', '105'])
        print rooms
        db.enablePoints(rooms)

        db.close()
Beispiel #8
0
    def enablePughHall(self):
        print "Experiment.enablePughHall>"
        
        ## main objects
        db=Database()
        objects=db.getObjects()
        building=buildings.PughHall()
        building.tag(objects)
        #building.check(objects)

        ## Identify tags and set watch to enabled 
        rooms=objects.getTag('room',['104','105'])
        print rooms
        db.enablePoints(rooms)
        
        db.close()
Beispiel #9
0
    def run(self):
        print "Tag.run>"
        
        ## main objects
        db=Database(database='mtim',port=5432)
        
        ## Series 1
        for d in [1,2,3,4]:
            objects=db.getObjects(where="Devices.deviceID=%s" % d)
            building=buildings.PughHall()
            building.tag(objects)
            building.check(objects)
        
            ## Setup Metadata
            db.writeTags(objects)
            building.points(objects)
            db.writePoints(objects)
            
        ## Series 2
        for d in [5,6,7,8]:
            objects=db.getObjects(where="Devices.deviceID=%s" % d)
            building=buildings.PughHall()
            building.tag(objects)
            building.check(objects)
        
            ## Setup Metadata
            db.writeTags(objects)
            
        ## Join on nn
        db.execute("DELETE FROM PointObjectMap")
        db.execute(
"""
INSERT INTO PointObjectMap (pointID,objectID,name)
SELECT Points.pointID,Objects.objectID,Points.value
FROM Objects 
JOIN Tags ON (Objects.objectID=Tags.objectID AND tag='nn')
JOIN Points ON (Tags.value=Points.value AND Points.tag='nn')
"""
        )

        db.close()
Beispiel #10
0
    def run(self):
        print "Tag.run>"

        ## main objects
        db = Database(database='mtim', port=5432)

        ## Series 1
        for d in [1, 2, 3, 4]:
            objects = db.getObjects(where="Devices.deviceID=%s" % d)
            building = buildings.PughHall()
            building.tag(objects)
            building.check(objects)

            ## Setup Metadata
            db.writeTags(objects)
            building.points(objects)
            db.writePoints(objects)

        ## Series 2
        for d in [5, 6, 7, 8]:
            objects = db.getObjects(where="Devices.deviceID=%s" % d)
            building = buildings.PughHall()
            building.tag(objects)
            building.check(objects)

            ## Setup Metadata
            db.writeTags(objects)

        ## Join on nn
        db.execute("DELETE FROM PointObjectMap")
        db.execute("""
INSERT INTO PointObjectMap (pointID,objectID,name)
SELECT Points.pointID,Objects.objectID,Points.value
FROM Objects 
JOIN Tags ON (Objects.objectID=Tags.objectID AND tag='nn')
JOIN Points ON (Tags.value=Points.value AND Points.tag='nn')
""")

        db.close()
Beispiel #11
0
class Bench:
    def __init__(self, opts):
        self.opts = opts
        self.cfg = self.opts.vals
        
        self.runtime = Values()
        self.runtime.version = version.PARAMARK_VERSION
        self.runtime.date = version.PARAMARK_DATE
        self.runtime.uid = os.getuid()
        self.runtime.pid = os.getpid()
        self.runtime.user = pwd.getpwuid(os.getuid())[0]
        self.runtime.hostname = socket.gethostname()
        self.runtime.platform = " ".join(os.uname())
        self.runtime.cmdline = " ".join(sys.argv)
        self.runtime.mountpoint = get_filesystem_info(self.cfg.wdir)
        self.runtime.wdir = self.cfg.wdir
        # May be set later in GXP mode
        self.runtime.hid = 0
        self.runtime.nhosts = 1

        self.cfg.hid = self.runtime.hid
        self.cfg.pid = self.runtime.pid
        self.loader = BenchLoad(self.cfg)
        self.threads = []
        self.db = None
        self.gxp = None
       
    def load(self):
        if self.cfg.gxpmode:
            self.gxp = Values()
            self.gxp.wp = os.fdopen(3, "wb")
            self.gxp.rp = os.fdopen(4, "rb")
            self.gxp.rank = gxp.get_rank()
            self.gxp.size = gxp.get_size()
            self.runtime.hid = self.gxp.rank
            self.runtime.nhosts = self.gxp.size
            self.cfg.hid = self.runtime.hid
        
        self.threadsync = ThreadSync(self.cfg.nthreads)
        for i in range(0, self.cfg.nthreads):
            self.threads.append(BenchThread(i, self.threadsync, 
                self.loader, self.gxp))

    def run(self):
        if self.runtime.hid == 0:
            message("Start benchmarking ...")
        
        self.start = timer()
        for t in self.threads: t.start()
        for t in self.threads: t.join()
        self.end = timer()

        if self.cfg.dryrun and self.runtime.hid == 0: 
            message("Dryrun, nothing was executed.\n")
        
        self.runtime.start = "%r" % self.start
        self.runtime.end = "%r" % self.end

    def save(self):
        if self.cfg.dryrun: return
        
        if self.cfg.gxpmode:
            # Gather results
            self.send_res()
            if self.gxp.rank == 0:
                reslist = []
                for i in range(0, self.gxp.size):
                    reslist.append(self.recv_res())
            else: return
        
        if self.cfg.logdir is None:  # generate random logdir in cwd
            self.cfg.logdir = os.path.abspath("./pmlog-%s-%s" %
                   (self.runtime.user, time.strftime("%j-%H-%M-%S")))
        
        # Initial log directory and database
        if self.cfg.gxpmode:
            self.cfg.confirm = False
        self.cfg.logdir = smart_makedirs(self.cfg.logdir,
            self.cfg.confirm)
        logdir = os.path.abspath(self.cfg.logdir)
        
        if self.cfg.nolog:
            message("Saving data in memory ...")
        else:
            message("Saving data to %s/fsbench.db ..." % logdir)
        
        # Save used configuration file
        if not self.cfg.nolog:
            verbose("Saving configurations to %s/fsbench.conf ..." 
                % logdir, VERBOSE)
            self.opts.save_conf("%s/fsbench.conf" % logdir)
        
        # Save results
        if self.cfg.nolog: self.db = Database(":memory:")
        else: self.db = Database("%s/fsbench.db" % logdir)
        self.db.insert_runtime(self.runtime)
        self.db.insert_conf(self.opts.cfgParser)

        if self.cfg.gxpmode:
            for res in reslist:
                for r in res: self.db.insert_rawdata(r)
        else:
            for t in self.threads:
                self.db.insert_rawdata(t.get_res())
        
        self.db.commit() 
        if self.cfg.noreport: self.db.close()
    
    def report(self):
        if self.cfg.dryrun or self.cfg.noreport: return
        if self.cfg.gxpmode and self.gxp.rank != 0: return
        
        message("Generating report ...")
        
        import report
        logdir = self.cfg.logdir
        if self.cfg.report:
            logdir = self.cfg.report
        if self.cfg.textreport:
            self.report = report.TextReport(logdir, self.db, self.cfg)
        elif self.cfg.csvreport:
            self.report = report.CSVReport(logdir, self.db, self.cfg)
        else:
            self.report = report.HTMLReport(logdir, self.db, self.cfg)
        self.report.write()
         
    def send_res(self):
        # Packing string without newlines
        res = cPickle.dumps([t.get_res() for t in self.threads], 0)
        self.gxp.wp.write('|'.join(res.split('\n')))
        self.gxp.wp.write("\n")
        self.gxp.wp.flush()

    def recv_res(self):
        res = self.gxp.rp.readline().strip('\n')
        return cPickle.loads('\n'.join(res.split('|')))
    
    def vs(self, msg):
        sys.stderr.write(msg)