Changeset 7206


Ignore:
Timestamp:
Apr 27, 2018, 1:07:34 PM (18 months ago)
Author:
mabarracus
Message:

Updated test suite

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-analytics-server/trunk/fuentes/testing_utils/test_analytics.py

    r7168 r7206  
    2424MAX_RELNUMBER=5         # MAX RELEASE VARIATION
    2525REAL_FLAVOURS=True      # TRUE FLAVOURS (release 15)
    26 DATE_ROUNDS=13           # DIFERENTS MONTHS SENDED
    27 NCLIENTS=10000           # NUMBER DIFFERENT CLIENTS
     26DATE_ROUNDS=1           # DIFERENTS MONTHS SENDED
     27NCLIENTS=20           # NUMBER DIFFERENT CLIENTS
    2828MAX_THREADS=5           # PARALLEL CLIENTS SENDING DATA (> 5 == no effect)
    2929CACHE_CONNECTIONS=1     # python requests cache hosts
    3030NAPPS=5000                # MAX NUMBER DIFFERENT APPS
    3131CLIENT_MAX_APPS=100      # MAX NUMBER APPS SENDING
    32 CLIENT_UPDATE_FREQ=5    # PERCENT OF CLIENTS THAT UPDATE INTRA ROUND
    33 LOOPS=4                # LOOPS INTRA DATE LOOP
     32CLIENT_UPDATE_FREQ=15    # PERCENT OF CLIENTS THAT UPDATE INTRA ROUND
     33DO_UPGRADES = True
     34UPGRADE_PROB=15          # PERCENT OF CLIENTS THAT UPGRADES WHEN UPDATE
     35LOOPS=5                # LOOPS INTRA DATE LOOP
    3436SLEEP_THREAD_TIME=0     # SLEEP THREAD AFTER SENDING
    3537STATS_ON=1              # req/s stats
    3638
     39PRINT_UPDATES=True
    3740USE_PLATFORM_DATA=True
    3841USE_LTSP_DATA=True
    39 USE_LTSP_WITH_OLD_CLIENTS=True
     42USE_LTSP_WITH_OLD_CLIENTS=False
    4043MAX_RANDOM_CLIENTS=50000
    4144DEBUG=0
     
    147150    def __init__(self):
    148151        self.mac=self.gen_mac()
     152        self.num=None
     153        self.year=None
     154        self.month=None
     155        self.day=None
    149156        if RANDOM:
    150157            self.release=RELEASES[random.randint(0,4)%2] # more probabilities for the first listed release
    151158        else:
    152159            self.release=RELEASES[0]
    153         self.release_number=self.gen_rel_number(self.release)
     160        self.release_number=self.gen_rel_number()
    154161        if RANDOM:
    155162            fla=FLAVOURS[self.release][random.randint(0,len(FLAVOURS[self.release])-1)]
     
    178185            else:
    179186                self.ltsp=False
     187                self.mode='FAT'
    180188
    181189    def gen_platform_data(self):
    182190        data = {}
    183         rnd=random.randint(1,8000)
     191        rnd=random.randint(1,16000)
    184192        data['arch']=ARCHS[rnd%2]
    185193        data['mem']=str(rnd*1024)
     
    205213            return mac
    206214
    207     def gen_rel_number(self,release,dummy=False):
    208         if not RANDOM:
    209             dummy=True
    210         if release == '15':
    211             if not dummy:
    212                 self.num=random.randint(100,100+MAX_RELNUMBER)
     215    def gen_rel_number(self):
     216        if self.release == '15':
     217            if RANDOM:
     218                if self.num == None:
     219                    self.num=random.randint(100,100+MAX_RELNUMBER)
     220                else:
     221                    self.num +=1
    213222            else:
    214                 self.num=100
     223                if self.num == None:
     224                    self.num=100
     225                else:
     226                    self.num += 1
    215227            rnum='15.05.0.{}'.format(self.num)
    216228        else:
    217             if not dummy:
    218                 self.year=random.randint(16,16+(MAX_RELNUMBER/12))
    219                 self.month=random.randint(1,1+(MAX_RELNUMBER%12))
    220                 self.day=1
     229            if RANDOM:
     230                if self.year == None:
     231                    self.year=random.randint(16,16+(MAX_RELNUMBER/12))
     232                    self.month=random.randint(1,1+(MAX_RELNUMBER%12))
     233                    self.day=1
     234                else:
     235                    self.month+=1
    221236            else:
    222                 self.year=16
    223                 self.month=1
    224                 self.day=1
     237                if self.year == None:
     238                    self.year=16
     239                    self.month=1
     240                    self.day=1
     241                else:
     242                    self.month+=1
    225243            rnum='16.{}{:02d}{:02d}'.format(self.year,self.month,self.day)
    226244        return rnum
     
    246264
    247265    def update(self):
     266        if DO_UPGRADES:
     267            self.upgrades()
     268        self.updates = self.updates +1
     269        orev = self.release_number
     270        self.release_number = self.gen_rel_number()
     271        if PRINT_UPDATES:
     272            if orev != self.release_number:
     273                print '{} updates from {} to {}'.format(self.mac,orev,self.release_number)
     274
     275    def upgrades(self):
     276        prob = random.randint(0,100)
    248277        if self.release == '15':
    249             self.num = self.num +1
    250         else:
    251             self.month = self.month +1
    252         self.updates = self.updates +1
    253         self.release_number=self.gen_rel_number(self.release,True)
    254        
     278            if prob < UPGRADE_PROB:
     279                orev = self.release_number
     280                self.release = '16'
     281                self.release_number = self.gen_rel_number()
     282                if PRINT_UPDATES:
     283                    if orev != self.release_number:
     284                        print '{} upgrade from {} to {}'.format(self.mac,orev,self.release_number)
     285        prob = random.randint(0,100)
     286        if prob < UPGRADE_PROB:
     287            if RANDOM:
     288                fla=FLAVOURS[self.release][random.randint(0,len(FLAVOURS[self.release])-1)]
     289            else:
     290                fla=FLAVOURS[self.release][0]
     291            ofla = self.real_flavour
     292            self.flavour=fla['name']
     293            self.real_flavour=fla['real']
     294            if PRINT_UPDATES:
     295                if ofla != self.real_flavour:
     296                    print '{} change flavour from {} to {}'.format(self.mac,ofla,self.real_flavour)
     297
    255298    def get_data(self):
    256299        tmp={}
     
    380423
    381424    def start(self):
    382         global APPS_SENT,ALL_BY_APP,PAUSE_SHOW_STATS,PAUSE_WITH_DATE_ROUNDS
     425        global APPS_SENT,ALL_BY_APP,PAUSE_SHOW_STATS,PAUSE_WITH_DATE_ROUNDS,CURRENT_DATE_ROUND,CURRENT_LOOP_ROUND
    383426        global STATS_ON,SHOW_BY_APP,NPET,SUCCESS,FAILED,REDO,UPDATED,UPDATED_TOTAL
    384427
     
    387430        ALL_BY_APP={}
    388431        for k in range(DATE_ROUNDS):
     432          CURRENT_DATE_ROUND=k
    389433          NPET=0
    390434          SUCCESS=0
     
    406450                ALL_SENT[rel][fla+'apps']={}
    407451
    408           for i in range(LOOPS):
     452          for i in range(LOOPS):
     453              CURRENT_LOOP_ROUND=i
    409454              UPDATED_TOTAL=UPDATED
    410               sys.stderr.write('\nRound {}/{} Date round {}/{} ...\n'.format(i+1,LOOPS,k+1,DATE_ROUNDS))
    411               APPS_SENT={}
    412               for rel in ['15','16']:
    413                   APPS_SENT[rel]={}
    414                   for fla in ['desktop','server','client','other']:
    415                       APPS_SENT[rel][fla]=0
    416                       APPS_SENT[rel][fla+'apps']={}
    417 
    418               self.pool.map_async(self.thread_code,self.client_list).get(timeout=1000000)
     455              sys.stderr.write('\nRound {}/{} Date round {}/{} ...\n'.format(i+1,LOOPS,k+1,DATE_ROUNDS))
     456              APPS_SENT={}
     457              for rel in ['15','16']:
     458                  APPS_SENT[rel]={}
     459                  for fla in ['desktop','server','client','other']:
     460                      APPS_SENT[rel][fla]=0
     461                      APPS_SENT[rel][fla+'apps']={}
     462              try:
     463                self.pool.map_async(self.thread_code,self.client_list).get(timeout=1000000)
     464              except:
     465                sys.stderr.write('Fatal error when threading\n')
    419466
    420467              for rel in ['15','16']:
     
    518565
    519566            global APPS_SENT,TMP,ALL_BY_APP
    520             global NPET,SUCCESS,FAILED,REDO,UPDATED
    521 
    522             data,napps,lapps=client.get_data()
    523 
    524 
     567            global NPET,SUCCESS,FAILED,REDO,UPDATED,CURRENT_LOOP_ROUND,LOOPS
     568            try:
     569                data,napps,lapps=client.get_data()
     570            except:
     571                pass
    525572
    526573            try:
     
    584631
    585632            if LOOPS > 1 and CLIENT_UPDATE_FREQ > random.randint(0,100):
    586                 self.lock.acquire()
    587                 UPDATED+=1
    588                 self.lock.release()
    589                 client.update()
     633                if CURRENT_LOOP_ROUND < LOOPS -1:
     634                    self.lock.acquire()
     635                    UPDATED+=1
     636                    self.lock.release()
     637                    client.update()
    590638
    591639if __name__ == "__main__":
Note: See TracChangeset for help on using the changeset viewer.