Python server端性能测试 - monitor

#!/usr/bin/env python2.6
#encoding=utf-8
import json
import base64
import os
import sys
import time
import string
from datetime import datetime
import unittest
#import  xmlrunner
import ConfigParser
import MySQLdb

from common_task import CommonTask
from update_tqp_config import UpdateTQPConfig

#from utils import dictutils
#from utils import tmslog

from hosteddb.hosted_base import HostedBase
from hosteddb.hosted_taskqueue import HostedTaskQueue
from hosteddb.hosted_device import HostedDevice
from hosteddb.hosted_user import HostedUser
from hosteddb import hosted_info
from airwatch.device import AirwatchDevice

#from vpn_profile import VPNProfile

CFG_DATA = "test_cfg.txt"
TEST_DATA = ConfigParser.ConfigParser()
TEST_DATA.read(CFG_DATA)

#Get Admin user account id from Hosted DB
username = TEST_DATA.get("Connection", "Username")
# The superclass of HostedUser needs accountId to initial object
adminUser = HostedUser(1).get_admin(username)
ACCOUNT_ID = int(adminUser["attributes"]["account"])
#Get Admin user account id from Hosted DB
username2 = TEST_DATA.get("Connection", "Username2")
# The superclass of HostedUser needs accountId to initial object
adminUser = HostedUser(1).get_admin(username2)
ACCOUNT_ID2 = int(adminUser["attributes"]["account"])
#Get Admin user account id from Hosted DB
username3 = TEST_DATA.get("Connection", "Username3")
# The superclass of HostedUser needs accountId to initial object
adminUser = HostedUser(1).get_admin(username3)
ACCOUNT_ID3 = int(adminUser["attributes"]["account"])
#Get Admin user account id from Hosted DB
username4 = TEST_DATA.get("Connection", "Username4")
# The superclass of HostedUser needs accountId to initial object
adminUser = HostedUser(1).get_admin(username4)
ACCOUNT_ID4 = int(adminUser["attributes"]["account"])

NAMESPACES = ["mobile", "email"]
EMAIL_CFG_NAME = ["EmailTasks"]
TQS_CFG_NAME = ["UserGroupTasks", "UserGroupRetryTasks", "EnrollmentTasks", "EnrollmentRetryTasks", "iOSDeployment", "iOSDeployment_retry", "UserGroupPendingTasks", "androidDeployment", "androidDeployment_retry"]
IOS_TQS_CFG_NAME = ["EnrollmentTasks", "EnrollmentRetryTasks", "iOSDeployment", "iOSDeployment_retry", "androidDeployment", "androidDeployment_retry"]
RETRY_TQS_CFG_NAME = ["EnrollmentRetryTasks", "iOSDeployment_retry", "androidDeployment_retry"]
USERGROUP_TQS = ["usergroup", "usergrouppending", "usergroupretry", "usergrouperror"]
ENROLL_TQS = ["enrollment", "enrollmentRetry", "enrollmentError"]
IOS_TQS = ["iosdeploy", "iosdeployretry", "iosdeployerror"]
ARD_TQS = ["androiddeploy", "androiddeployretry", "androiddeployerror"]
EMAIL_TQS = ["email", "error"]
TQS_FOR_CLEAR = ["usergroup", "usergrouppending", "usergroupretry", "usergrouperror", "enrollment", "enrollmentRetry", "enrollmentError", "iosdeploy", "iosdeployretry", "iosdeployerror", "androiddeploy", "androiddeployretry", "androiddeployerror"]

TQP_MONITOR_FILEPATH = "/opt/mdmi/etc/mdmi_monitor/"
TQP_MONITOR_FILES = ["mdmi_monitor_notificationrestservice.ini", "mdmi_monitor_usergroup.ini", "mdmi_monitor_enrollment.ini", "mdmi_monitor_iosdeploy.ini", "mdmi_monitor_androiddeploy.ini"]
TQP_MONITOR_SECTIONS = ["notificationrestservice", "usergroup", "enrollment", "iosdeploy", "androiddeploy"]
TQP_MONITOR_ENTRYS = ["notificationrestservice_receiving_success_counter", "usergroup_receiving_success_counter", "enrollment_receiving_success_counter", "iosdeploy_receiving_success_counter", "androiddeploy_receiving_success_counter"]

class RSUser(HostedBase):
    def __init__(self, account_id):
        super(RSUser, self).__init__(account_id)

    def __del__(self):
        pass

    def count_users(self):
        filter = '{ "filter" : "(&(objectClass=person)(endUserStatus=Active))", "base":"account=%s","count":true,"vlv":{"before":0,"after":1, "offset":1,"force_new_session":true},"sort":["cn"] }' % self.account_id
        count_dict = self._do_get_action(filter)
        if 'total_count' in count_dict:
            return int(count_dict['total_count'])
        return int(count_dict['count'])


class TestPerfREST(unittest.TestCase):
#class TestNotificationServer():
    """
    """
    def setUp(self):
        """The constructor.
            Create a new CommonTask instance.
        """
        self.account_id = ACCOUNT_ID
        self.task = CommonTask()
        self.taskqueue = HostedTaskQueue()
        self.updatetqconfig = UpdateTQPConfig('/etc/sysconfig/tqp/plugins.json')
        #self.ns = NotificationSimu()
        self.vpnprofilename = 'vpn.mobileconfig'
        self.pacfileURL = ''
        self.perflogfilename = 'mdmi_perf_log.txt'
        self.iosspeedlog = 'iosdeploy_process_speed.txt'
        self.nsspeedlog = 'nsrest_process_speed.txt'
        self.ugspeedlog = 'usergroup_process_speed.txt'
        self.enrollspeedlog = 'enroll_process_speed.txt'
        self.ardspeedlog = 'arddeploy_process_speed.txt'

        #self.mysql_connection = MySQLdb.connect(host='cfg',user='webserv',db='blackspider',port=3306)
        pass

    def tearDown(self):
        """
            The destructor.
            remove the created CommonTask instance.
        """
        if self.task:
            del self.task
        if self.taskqueue:
            del self.taskqueue
        if self.updatetqconfig:
            del self.updatetqconfig
        #if self.ns:
        #   del self.ns
        #if self.mysql_connection:
        #     try:
        #         self.mysql_connection.close()
        #     except MySQLdb.Error, e:
        #         print 'failed to close myql connection.', e

    def getTQPMonitorCounters(self, filename, section, entry):
        monitor_counter = ConfigParser.ConfigParser()
        monitor_counter.read(filename)
        counter = '0'
        try:
            counter = monitor_counter.get(section, entry)
        except:
            pass
        return counter

    def updateTQPConfig(self, tqplist=None, flag=1):
        """
        """
        self.updatetqconfig.set_tqp_switch(tqpList=tqplist, flag=flag)
        self.updatetqconfig.restart_service("/etc/init.d/task-processor")
    
    def clearTaskQueues(self, account=1, namespace=NAMESPACES[0]):
        """
        To do:
            clear tqs which name in the tq names list.
        """
        data = {"description" : "", "max_leases" : "30", "max_age" : "0"}   
        tqnames = TQS_FOR_CLEAR
        if self.task:
            del self.task
        self.task = CommonTask()
        for tq in tqnames:
            tq_desc = "%s task queue" % tq
            data['description'] = tq_desc
            self.task.do_clearTaskQueue(account=account, tqname=tq, namespace=namespace, desc=data)
            print "task queue:%s is cleared!" % tq

    def addTask(self, account=None, tqname=None, namespace=None, creator=3, type=1, evt=None, tags=None):
        """
        To do:
            Simulate to add Enrollment task in enrollment decision task queue by User and Group Sync TQP
        Param:
            creator :
                1 - Notification Service
                3 - User and Group Sync TQP
                4 - Enrollment Decision TQP
            type :
                1 - Enrollment task
                2 - De-enrollment task
                3 - Wipe task
            Status :
                1 - Normal task
                2 - Retry task
                3 - Error task
        """
        evt = json.dumps(evt)
        del self.task
        self.task = CommonTask()
        self.task.do_add(account=account, tqname=tqname, namespace=namespace, creator=creator, type=type, evt=evt,tags=tags)
        pass

    def getTaskFromTQ(self, account=None,tqname=None, namespace=None, tags=None):
        del self.task
        self.task = CommonTask()

        tk = self.task.do_getTask(account=account, tqname=tqname, namespace=namespace,tags=tags)
        if tk:
            print 'Got task name is', tk['name']
            print tk
            return tk
        pass

    def getEventFromTask(self, task=None):
        event = self.task.do_getEventFromTask(task=task)
        return event
        pass

    def delTaskQueue(self, account=None,tqname=None, namespace=None):
        if self.task:
            del self.task
        self.task = CommonTask()

        result = self.task.do_delTaskQueue(account=account, tqname=tqname, namespace=namespace)
        print "Del task queue %s is %s" % (tqname, result)
        

    def getEventFromTaskByName(self, account=ACCOUNT_ID, tqname=EMAIL_TQS[1], namespace=NAMESPACES[1], taskname='3678'):
        if self.task:
            del self.task
        self.task = CommonTask()
        
        tk = self.task.do_getTaskByName(tqname=tqname, namespace=namespace, account=account, taskname=taskname)

        if tk:
            print 'Got task name is', tk['name']
            print tk
            event = self.task.do_getEventFromTask(task=tk)
            print event
            return event
        pass

    def getDeviceInfoFromAW(self, device_id):
        """
        To do:
            Get device info. from Airwatch by device id.
        """
        device = AWDevice(self.account_id)
        d = device.get(device_id)
        utils.tmslog.log("test_enrollment decision_tqp.py - device info. from aw is : %s" % d)
        #print d
        return d

    def getDeviceInfoFromRS(self, device_udid):
        """
        To do:
            Get device info. from Hosted RS DB by device udid.
        """
        hosted_device = HostedDevice(device_udid)
        d = hosted_device.do_get()
        #print d
        return d

    def getPacFileUrl(self, accountID, email):
        response = None
        try:
            response = hosted_info.hosted_get_pacfileurl_by_email(accountID, email)
        except Exception, e:
            response = None
            tmslog.log("test_iosdeploy_tqp.py - access hosted os get pac file url error %s" % e)
        return response
    
    def generateVPNFile(self, webpolicy, accountID, eventPayLoad):
        vprofile = None
        try:
            paclist = json.loads(webpolicy, object_hook = dictutils.decode_dict)
            tmslog.log("test_iosdeploy_tqp.py - generate VPN profile start")
            pacfileURL = paclist[0]["attributes"]["policyPacUrl"][0]
            self.pacfileURL = pacfileURL
            tmslog.log("test_iosdeploy_tqp.py - pac file url from account %s is %s" % (accountID, pacfileURL))
            vpnProfile = VPNProfile()
        
            # scanopt default value is 2, TODO need to update the value when Hosted DB ready
            userinfo = "Username:%s;AccountID:%s;DeviceID:%s;DeviceType:%s;DeviceClass:%s;scanopt:2" %(eventPayLoad["EnrollmentEmailAddress"], accountID, eventPayLoad["Udid"], eventPayLoad["Model"], eventPayLoad["Ownership"])
            print 'info sent to vpn profile is : %s' % userinfo
            print '-'*20
            if eventPayLoad.has_key('OperationCallbackURL') and eventPayLoad['OperationCallbackURL']:
                #tmslog.log("test_iosdeployTQP.py - generate VPN profile format is json")
                #vprofile = vpnProfile.dumps(userinfo, pacfileURL, 'json')
                vprofile = vpnProfile.dumps(userinfo, pacfileURL)
            else:     
                vprofile = vpnProfile.dumps(userinfo, pacfileURL)
            tmslog.log("test_iosdeploy_tqp.py - generate VPN profile file end")
            tmslog.log("test_iosdeploy_tqp.py - the VPN profile file is %s " % vprofile)
        except Exception, e:
            vprofile = None
            tmslog.log("test_iosdeploy_tqp.py - generate vpn file error %s " % e)
        return vprofile
    
    def save_file(self, filename, content):
        if filename and content:
            fd = open(filename, 'w')
            fd.write(content)
            fd.close()

    def save_perf_log(self, filename, content):
        if filename and content:
            fd = open(filename, 'a')
            fd.write(content)
            fd.close()

    def check_pac_url(self, filename, pacurl):
        """
        read pac file url
        """
        f = open(filename,'r')
        pac = f.readlines()
        print "pac[0] in vpn profile is %s\npac url got from host db is %s" % (pac[0], pacurl)
        self.assertEqual(pac[0], pacurl)
        f.close()

    def get_letftasksnum(self, tqname, namespace='mobile'):

        account1 = ACCOUNT_ID
        account2 = ACCOUNT_ID2
        account3 = ACCOUNT_ID3
        account4 = ACCOUNT_ID4

        if self.taskqueue:
            del self.taskqueue
        self.taskqueue = HostedTaskQueue()
        lefttasks1 = self.taskqueue.do_get_task_total(account=account1, namespace=namespace, tqname=tqname)
        lefttasks2 = self.taskqueue.do_get_task_total(account=account2, namespace=namespace, tqname=tqname)
        lefttasks3 = self.taskqueue.do_get_task_total(account=account3, namespace=namespace, tqname=tqname)
        lefttasks4 = self.taskqueue.do_get_task_total(account=account4, namespace=namespace, tqname=tqname)
        lefttasks = string.atoi(lefttasks1) + string.atoi(lefttasks2) + string.atoi(lefttasks3) + string.atoi(lefttasks4)
        return lefttasks

    def count_db_users(self):
        mysql_connection = MySQLdb.connect(host='cfg',user='webserv',db='blackspider',port=3306)
        cur = mysql_connection.cursor()
        sql = "SELECT count(1) FROM wdEndUsers WHERE Active=1 AND AccountID in %(accounts)s"
        cur.execute(sql, {'accounts': (ACCOUNT_ID, ACCOUNT_ID2, ACCOUNT_ID3, ACCOUNT_ID4)})
        result = cur.fetchone()
        count = 0
        if result:
            count = result[0]
        print '%s: %d users in db' % (time.strftime("%Y/%m/%d %I:%M:%S"), count)
        cur.close()
        mysql_connection.close()
        pass

    def count_rs_users(self):
        accounts = [ACCOUNT_ID, ACCOUNT_ID2, ACCOUNT_ID3, ACCOUNT_ID4]
        count = 0
        for acct in accounts:
            count += RSUser(acct).count_users()
        print '%s: %d users in RS' % (time.strftime("%Y/%m/%d %I:%M:%S"), count)
        pass

    def test_perf_REST(self):
        """
        To do:
            Performance test for REST service
        """
        #data = {"description" : "ios deployment task queue", "max_leases" : "30", "max_age" : "0"}
        
        sleepsecs = 10

        print 'Clear all task queues...'
        self.clearTaskQueues(account=1, namespace=NAMESPACES[0])
        print('-'*20)
        print 'Enable all TQPs...'
        self.updateTQPConfig(tqplist=TQS_CFG_NAME, flag=1)
        #print 'Disable all Rertry TQPs...'
        #self.updateTQPConfig(tqplist=RETRY_TQS_CFG_NAME, flag=0)
        #print('-'*20)

        time_limit = 10
        ios_pre_counter = 0
        ns_pre_counter = 0
        ug_pre_counter = 0
        enroll_pre_counter = 0
        ard_pre_counter = 0

        #Get TQPs monitor counters
        ns_counter_file = TQP_MONITOR_FILEPATH + TQP_MONITOR_FILES[0]       
        usergroup_counter_file = TQP_MONITOR_FILEPATH + TQP_MONITOR_FILES[1]        
        enrollment_counter_file = TQP_MONITOR_FILEPATH + TQP_MONITOR_FILES[2]       
        ios_counter_file = TQP_MONITOR_FILEPATH + TQP_MONITOR_FILES[3]      
        ard_counter_file = TQP_MONITOR_FILEPATH + TQP_MONITOR_FILES[4]      

        ns_counter_last = self.getTQPMonitorCounters(ns_counter_file, TQP_MONITOR_SECTIONS[0], TQP_MONITOR_ENTRYS[0])

        usergroup_counter_last = self.getTQPMonitorCounters(usergroup_counter_file, TQP_MONITOR_SECTIONS[1], TQP_MONITOR_ENTRYS[1])
        enrollment_counter_last = self.getTQPMonitorCounters(enrollment_counter_file, TQP_MONITOR_SECTIONS[2], TQP_MONITOR_ENTRYS[2])
        ios_counter_last = self.getTQPMonitorCounters(ios_counter_file, TQP_MONITOR_SECTIONS[3], TQP_MONITOR_ENTRYS[3])
        ard_counter_last = self.getTQPMonitorCounters(ard_counter_file, TQP_MONITOR_SECTIONS[4], TQP_MONITOR_ENTRYS[4])
        
        waitsecs = 20
        print 'Wait for %d seconds for REST Simulator to start up...' %waitsecs
        time.sleep(waitsecs)
        starttime = time.time()
        stime = datetime.now()
        output  =  "mdmi performance test Start time : %s\n" %stime
        print output
        perf_log_content = output
        ios_speed_content = output
        ns_speed_content = output
        ug_speed_content = output
        enroll_speed_content = output
        ard_speed_content = output

        while True:
             
            endtime = time.time()
            sec_cost = endtime - starttime
            output = "mdmi performance test time cost from beginning: %d seconds.\n" % sec_cost
            print output

            self.count_db_users()
            self.count_rs_users()

            ns_counter = self.getTQPMonitorCounters(ns_counter_file, TQP_MONITOR_SECTIONS[0], TQP_MONITOR_ENTRYS[0])
            ns_counter = string.atoi(ns_counter) - string.atoi(ns_counter_last)
            print "Monitor: %s receiving success counter %d" %(TQP_MONITOR_SECTIONS[0], ns_counter)

            ns_speed = float(ns_counter - ns_pre_counter) / sleepsecs
            ns_pre_counter = ns_counter
            print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[0], ns_speed)
            ns_speed = str(ns_speed) + '\n'
            ns_speed_content = ns_speed_content + ns_speed          

            tqname = USERGROUP_TQS[0]
            lefttasks1 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks1)

            tqname = USERGROUP_TQS[1]
            lefttasks2 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks2)
            
            tqname = USERGROUP_TQS[2]
            lefttasks3 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks3)

            tqname = USERGROUP_TQS[3]
            lefttasks4 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks4)

            usergroup_counter = self.getTQPMonitorCounters(usergroup_counter_file, TQP_MONITOR_SECTIONS[1], TQP_MONITOR_ENTRYS[1])
            usergroup_counter = string.atoi(usergroup_counter) - string.atoi(usergroup_counter_last)
            print "Monitor: %s receiving success counter %d" %(TQP_MONITOR_SECTIONS[1], usergroup_counter)
                
            ug_speed = float(usergroup_counter - ug_pre_counter) / sleepsecs
            ug_pre_counter = usergroup_counter
            print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[1], ug_speed)
            ug_speed = str(ug_speed) + '\n'
            ug_speed_content = ug_speed_content + ug_speed          

            tqname = ENROLL_TQS[0]
            lefttasks5 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks5)
                
            tqname = ENROLL_TQS[1]
            lefttasks6 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks6)
                
            tqname = ENROLL_TQS[2]
            lefttasks7 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks7)
                
            enrollment_counter = self.getTQPMonitorCounters(enrollment_counter_file, TQP_MONITOR_SECTIONS[2], TQP_MONITOR_ENTRYS[2])
            enrollment_counter = string.atoi(enrollment_counter) - string.atoi(enrollment_counter_last)
            print "Monitor: %s receiving success counter %d" %(TQP_MONITOR_SECTIONS[2], enrollment_counter)

            enroll_speed = float(enrollment_counter - enroll_pre_counter) / sleepsecs
            enroll_pre_counter = enrollment_counter
            print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[2], enroll_speed)
            enroll_speed = str(enroll_speed) + '\n'
            enroll_speed_content = enroll_speed_content + enroll_speed          

            tqname = IOS_TQS[0]
            lefttasks8 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks8)

            tqname = IOS_TQS[1]
            lefttasks9 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks9)

            tqname = IOS_TQS[2]
            lefttasks10 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks10)
        
            ios_counter = self.getTQPMonitorCounters(ios_counter_file, TQP_MONITOR_SECTIONS[3], TQP_MONITOR_ENTRYS[3])
            ios_counter = string.atoi(ios_counter) - string.atoi(ios_counter_last)
            print "Monitor: %s receiving success counter %d" %(TQP_MONITOR_SECTIONS[3], ios_counter)

            ios_speed = float(ios_counter - ios_pre_counter) / sleepsecs
            ios_pre_counter = ios_counter
            print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[3], ios_speed)
            ios_speed = str(ios_speed) + '\n'
            ios_speed_content = ios_speed_content + ios_speed
    
            tqname = ARD_TQS[0]
            lefttasks11 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks11)

            tqname = ARD_TQS[1]
            lefttasks12 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks12)

            tqname = ARD_TQS[2]
            lefttasks13 = self.get_letftasksnum(tqname)
            print "TQ: %s left tasks %d" % (tqname, lefttasks13)
        
            ard_counter = self.getTQPMonitorCounters(ard_counter_file, TQP_MONITOR_SECTIONS[4], TQP_MONITOR_ENTRYS[4])
            ard_counter = string.atoi(ard_counter) - string.atoi(ard_counter_last)
            print "Monitor: %s receiving success counter %d" %(TQP_MONITOR_SECTIONS[4], ard_counter)

            ard_speed = float(ard_counter - ard_pre_counter) / sleepsecs
            ard_pre_counter = ard_counter
            print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[4], ard_speed)
            ard_speed = str(ard_speed) + '\n'
            ard_speed_content = ard_speed_content + ard_speed
            print('-'*20)

            #if lefttasks1 == 0 and lefttasks2 == 0 and lefttasks3 == 0 and lefttasks4 == 0 and lefttasks5== 0 and lefttasks6== 0 and lefttasks7 == 0 and lefttasks8 == 0 and lefttasks9 == 0 and lefttasks10 == 0 and sec_cost >= time_limit:
            if lefttasks1 == 0 and lefttasks2 == 0 and lefttasks3 == 0 and lefttasks5== 0 and lefttasks6== 0 and lefttasks8 == 0 and lefttasks9 == 0 and lefttasks11 == 0 and lefttasks12 == 0 and sec_cost >= time_limit:
                endtime = time.time()
                etime = datetime.now()
                output = "mdmi performance test End time : %s\n" % etime
                print output
                perf_log_content = perf_log_content + output
                sec_cost = endtime - starttime
                output = "mdmi performance test time cost: %d seconds.\n" % sec_cost
                print output
                perf_log_content = perf_log_content + output
                output = '-'*60 + '\n'
                print output
                perf_log_content = perf_log_content + output
                ns_counter = self.getTQPMonitorCounters(ns_counter_file, TQP_MONITOR_SECTIONS[0], TQP_MONITOR_ENTRYS[0])
                ns_counter = string.atoi(ns_counter) - string.atoi(ns_counter_last)
                output = "Monitor: %s receiving success counter %d\n" %(TQP_MONITOR_SECTIONS[0], ns_counter)
                print output
                perf_log_content = perf_log_content + output                
                ns_speed = float(ns_counter - ns_pre_counter) / sleepsecs
                ns_pre_counter = ns_counter
                print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[0], ns_speed)
                ns_speed = str(ns_speed) + '\n'
                ns_speed_content = ns_speed_content + ns_speed
                output = "mdmi performance test End time : %s\n" % etime
                ns_speed_content = ns_speed_content + output
                self.save_file(self.nsspeedlog, ns_speed_content)

                usergroup_counter = self.getTQPMonitorCounters(usergroup_counter_file, TQP_MONITOR_SECTIONS[1], TQP_MONITOR_ENTRYS[1])
                usergroup_counter = string.atoi(usergroup_counter) - string.atoi(usergroup_counter_last)
                output = "Monitor: %s receiving success counter %d\n" %(TQP_MONITOR_SECTIONS[1], usergroup_counter)
                print output
                perf_log_content = perf_log_content + output
                ug_speed = float(usergroup_counter - ug_pre_counter) / sleepsecs
                ug_pre_counter = usergroup_counter
                print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[1], ug_speed)
                ug_speed = str(ug_speed) + '\n'
                ug_speed_content = ug_speed_content + ug_speed
                output = "mdmi performance test End time : %s\n" % etime
                ug_speed_content = ug_speed_content + output
                self.save_file(self.ugspeedlog, ug_speed_content)
                
                enrollment_counter = self.getTQPMonitorCounters(enrollment_counter_file, TQP_MONITOR_SECTIONS[2], TQP_MONITOR_ENTRYS[2])
                enrollment_counter = string.atoi(enrollment_counter) - string.atoi(enrollment_counter_last)
                output = "Monitor: %s receiving success counter %d\n" %(TQP_MONITOR_SECTIONS[2], enrollment_counter)                
                print output
                perf_log_content = perf_log_content + output
                enroll_speed = float(enrollment_counter - enroll_pre_counter) / sleepsecs
                enroll_pre_counter = enrollment_counter
                print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[2], enroll_speed)
                enroll_speed = str(enroll_speed) + '\n'
                enroll_speed_content = enroll_speed_content + enroll_speed
                output = "mdmi performance test End time : %s\n" % etime
                enroll_speed_content = enroll_speed_content + output
                self.save_file(self.enrollspeedlog, enroll_speed_content)

                ios_counter = self.getTQPMonitorCounters(ios_counter_file, TQP_MONITOR_SECTIONS[3], TQP_MONITOR_ENTRYS[3])
                ios_counter = string.atoi(ios_counter) - string.atoi(ios_counter_last)
                output = "Monitor: %s receiving success counter %d\n" %(TQP_MONITOR_SECTIONS[3], ios_counter)
                print output
                perf_log_content = perf_log_content + output
                #output = '-'*40 + '\n'
                #print output
                #perf_log_content = perf_log_content + output
                #self.save_perf_log(self.perflogfilename, perf_log_content)

                ios_speed = float(ios_counter - ios_pre_counter) / sleepsecs
                ios_pre_counter = ios_counter
                print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[3], ios_speed)
                ios_speed = str(ios_speed) + '\n'
                ios_speed_content = ios_speed_content + ios_speed

                output = "mdmi performance test End time : %s\n" % etime
                ios_speed_content = ios_speed_content + output
                self.save_file(self.iosspeedlog, ios_speed_content)

                ard_counter = self.getTQPMonitorCounters(ard_counter_file, TQP_MONITOR_SECTIONS[4], TQP_MONITOR_ENTRYS[4])
                ard_counter = string.atoi(ard_counter) - string.atoi(ard_counter_last)
                output = "Monitor: %s receiving success counter %d\n" %(TQP_MONITOR_SECTIONS[4], ard_counter)
                print output
                perf_log_content = perf_log_content + output
                output = '-'*40 + '\n'
                print output
                perf_log_content = perf_log_content + output
                self.save_perf_log(self.perflogfilename, perf_log_content)

                ard_speed = float(ard_counter - ard_pre_counter) / sleepsecs
                ard_pre_counter = ard_counter
                print "Speed: %s process task speed is %.1f tasks/Second" %(TQP_MONITOR_SECTIONS[4], ard_speed)
                ard_speed = str(ard_speed) + '\n'
                ard_speed_content = ard_speed_content + ard_speed

                output = "mdmi performance test End time : %s\n" % etime
                ard_speed_content = ard_speed_content + output
                self.save_file(self.ardspeedlog, ard_speed_content)

                break

            #min_cost = float(sec_cost) / float(60)
            #sec_cost = sec_cost % 60
            #print "time cost : %d mins %d secs" % (min_cost, sec_cost)
            #leasedtasks = totalcount - lefttasks
            #process_speed = float(leasedtasks) / float(min_cost)

            #if totalcount >= totaltasks and lefttasks == 0:
            #   output = "total tasks added: %d, leased tasks: %d, left tasks: %d, time cost:%d mins %d secs speed: %d tasks/m " % (totalcount, leasedtasks, lefttasks, min_cost, sec_cost, process_speed)
            #   print output
            #   break
            #else:
            #   output = "total tasks added: %d, leased tasks: %d, left tasks: %d, time cost:%d mins %d secs speed: %d tasks/m " % (totalcount, leasedtasks, lefttasks, min_cost, sec_cost, process_speed)
            #   print output            
            time.sleep(sleepsecs)
        pass

if __name__=='__main__':
    #unittest.main(testRunner=xmlrunner.XMLTestRunner(output='/tmp/output/test-reports'))
    unittest.main()
#if __name__ == "__main__":
#   try:
#       eventpayload = {'Model': 'iPhone', 'DeviceId': 70, 'OperationCallbackURL': 'https://127.0.0.1/cgi-py/installvpn.py', 'Udid': '4B6D5E40DFB22BD57EC4AF54DA1F297A3221388B', 'EnrollmentEmailAddress': 'xwang@websense.com', 'RequestID': '123456789abcdef', 'EnrollmentStatus': 'Unenrolled', 'Ownership': 4, 'EnrollmentUserName': 'test_xwang', 'OperatingSystem': '7.0.2', 'AwProfileId': '123456789'}
#       webpolicy = '[{"href":"https://cog01o:8085/rs/v-1/account-86/mail-enduser3%40ntpr.com","attributes":{"policyPacUrl":["http://webdefence-cn-mobile-it.odd.blackspider.com:8082/proxy.pac?p=22kk6289"],"cn":["Mr EndUser3"],"account":["86"],"objectClass":["hostedUser"],"endUserStatus":["Active"],"mail":["enduser3@ntpr.com"],"accountType":["webdefence"],"o":["Neat&tidy Piano Removers"]},"dn":"mail=enduser3@ntpr.com,account=86,dc=blackspider,dc=com"}]'
#       profile = TestNotificationServer()
#       vpn = profile.generateVPNFile(webpolicy, 86, eventpayload)
#       file = open('corporate.mobilconfig', 'w')
#       file.write(vpn)
#       file.close()
#   except Exception,e:
#       print e





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值