Ignore:
Timestamp:
Mar 28, 2018, 6:43:01 PM (2 years ago)
Author:
mabarracus
Message:

wip, add ltsp clients information

Location:
lliurex-analytics-server/trunk/fuentes
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • lliurex-analytics-server/trunk/fuentes/debian/changelog

    r6933 r7111  
     1lliurex-analytics-server (0.2.6-wip) xenial; urgency=medium
     2
     3  * Add ltsp client processing
     4
     5 -- M.Angel Juan <m.angel.juan@gmail.com>  Mon, 26 Mar 2018 18:21:13 +0200
     6
    17lliurex-analytics-server (0.2.5) xenial; urgency=medium
    28
  • lliurex-analytics-server/trunk/fuentes/debian/lliurex-analytics-server.service

    r6768 r7111  
    88ExecStart=/usr/sbin/analyticsd
    99Restart=always
    10 TimeoutSec=90
     10TimeoutSec=120
    1111
    1212[Install]
  • lliurex-analytics-server/trunk/fuentes/debian/postinst

    r6926 r7111  
    281281        mysql $rootuser $rootpass < /usr/lib/analytics-server/update_allow_platformdata.sql || true
    282282    fi
     283    need_update_1_6=$(mysql $rootuser $rootpass -s -N -Danalytics -e "describe tmp_clients;" |grep ltsp |wc -l 2>/dev/null || true)
     284    if [ "$need_update_1_6" = "0" ]; then
     285        echo "Updating database to 1.6 format"
     286        mysql $rootuser $rootpass < /usr/lib/analytics-server/update2_allow_platformdata.sql || true
     287    fi
    283288
    284289
  • lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/lib/analytics-server/analytics/db.php

    r6933 r7111  
    152152        $spec_sql_names = '';
    153153        $spec_sql_values = '';
     154
     155        $ltsp_sql_names = '';
     156        $ltsp_sql_values = '';
     157
     158        $use_data=array();
     159        $use_name=array();
    154160        if ($specs != false){
    155             try{
     161            if (array_key_exists('arch',$specs)){
    156162                $arch = $specs['arch'];
     163                $use_data[]="'$arch'";
     164                $use_name[]='arch';
     165            }
     166            if (array_key_exists('mem',$specs)){
    157167                $mem = $specs['mem'];
    158168                if (is_numeric($mem)){
    159169                    $mem=(int)$mem;
    160170                }
     171                $use_data[]=$mem;
     172                $use_name[]='mem';
     173            }
     174            if (array_key_exists('vga',$specs)){
    161175                $vga = substr($specs['vga'],0,80);
    162                 $cpu = substr($specs['cpu']['model'],0,80);
    163                 $ncpu = $specs['cpu']['ncpus'];
    164                 if (is_numeric($ncpu)){
    165                     $ncpu=(int)$ncpu;
    166                 }
    167                 $spec_sql_names = ',arch,mem,vga,cpu,ncpu';
    168                 $spec_sql_values = ",'$arch',$mem,'$vga','$cpu',$ncpu";
    169             }catch(Exception $e){
     176                $use_name[]='vga';
     177                $use_data[]="'$vga'";
     178            }
     179            if (array_key_exists('cpu',$specs)){
     180                if (array_key_exists('model',$specs['cpu'])){
     181                    $cpu = substr($specs['cpu']['model'],0,80);
     182                    $use_name[]='cpu';
     183                    $use_data[]="'$cpu'";
     184                }
     185                if (array_key_exists('ncpus',$specs['cpu'])){
     186                    $ncpu = $specs['cpu']['ncpus'];
     187                    if (is_numeric($ncpu)){
     188                        $ncpu=(int)$ncpu;
     189                    }
     190                    $use_name[]='ncpu';
     191                    $use_data[]=$ncpu;
     192                }
     193            }
     194            if (count($use_data) > 0){
     195                $spec_sql_names = ',';
     196                $spec_sql_names .= implode(',',$use_name);
     197                $spec_sql_values = ',';
     198                $spec_sql_values .= implode(',',$use_data);
     199            }else{
    170200                $spec_sql_names = '';
    171201                $spec_sql_values = '';
    172202            }
     203            $use_data=array();
     204            $use_name=array();
     205            if (array_key_exists('subtype',$specs)){
     206                if (array_key_exists('LTSP',$specs['subtype'])){
     207                    $ltsp = $specs['subtype']['LTSP'];
     208                    if ($ltsp){
     209                        $ltsp='TRUE';
     210                    }else{
     211                        $ltsp='FALSE';
     212                    }
     213                    $use_name[]='ltsp';
     214                    $use_data[]=$ltsp;
     215                }
     216                if (array_key_exists('MODE',$specs['subtype'])){
     217                    $ltsp_mode = $specs['subtype']['MODE'];
     218                    $ltsp_mode = substr($ltsp_mode,0,4);
     219                    $use_name[]='mode';
     220                    $use_data[]="'$ltsp_mode'";
     221                }
     222            }
     223            if (count($use_name) > 0){
     224                $ltsp_sql_names = ',';
     225                $ltsp_sql_names .= implode(',',$use_name);
     226                $ltsp_sql_values = ',';
     227                $ltsp_sql_values .= implode(',',$use_data);
     228            }else{
     229                $ltsp_sql_names = '';
     230                $ltsp_sql_values = "";
     231            }
    173232        }
    174233        if ($date == ''){
    175             $sql="INSERT INTO tmp_clients(user,version,sabor,status $spec_sql_names) values ('$user','$version','$sabor',0 $spec_sql_values)";
    176         }else{
    177             $sql="INSERT INTO tmp_clients(user,version,sabor,status,date $spec_sql_names) values ('$user','$version','$sabor',0,'$date' $spec_sql_values)";
     234            $sql="INSERT INTO tmp_clients(user,version,sabor,status $spec_sql_names $ltsp_sql_names) values ('$user','$version','$sabor',0 $spec_sql_values $ltsp_sql_values)";
     235        }else{
     236            $sql="INSERT INTO tmp_clients(user,version,sabor,status,date $spec_sql_names $ltsp_sql_names) values ('$user','$version','$sabor',0,'$date' $spec_sql_values $ltsp_sql_values)";
    178237        }
    179238        $retry=1;
     
    338397        // memory
    339398        //$sql_2G="select year(date) as year, month(date) as month, Releases_name, count(Client_uid) as count from Client_Versions where mem < 2048000 group by Releases_name, year, month order by year desc,month desc,Releases_name asc;";
    340         $sql_2G = "select year(t1.date) as year, month(t1.date) as month, t1.Releases_name as rel, count(t2.uuid) as count from Client_Versions t1 left join (select * from Client_Versions where mem < 2048000 ) t2 on t1.uuid = t2.uuid group by year, month, rel order by year desc,month desc,rel asc;";         
     399        $sql_2G = "select year(t1.date) as year, month(t1.date) as month, t1.Releases_name as rel, count(t2.uuid) as count from Client_Versions t1 left join (select * from Client_Versions where mem < 2048000 ) t2 on t1.uuid = t2.uuid group by year, month, rel order by year desc,month desc,rel asc;";
    341400        $cache_key='extended_memory_2G';
    342401        $data = $cache->get($cache_key);
     
    566625             }
    567626            }
    568          
     627
     628
     629         $sql= "select ltsp,count(*) as total from Client_Versions group by ltsp";
     630         $count_ltsp=array('null'=>0,'true'=>0,'false'=>0);
     631         $cache_key='extended_5';
     632         $data=$cache->get($cache_key);
     633         $stime=microtime(true);
     634         if ($data != false){
     635            $count_ltsp=$data;
     636         }else{
     637            $result=$this->dbconn->query($sql);
     638            if ($result){
     639                $this->times+=microtime(true)-$stime;
     640                while($row=$result->fetch_array(MYSQLI_ASSOC)){
     641                    switch($row['ltsp']){
     642                        case NULL:
     643                            $count_ltsp['null'] += intval($row['total']);
     644                            break;
     645                        case '0':
     646                            $count_ltsp['false'] += intval($row['total']);
     647                            break;
     648                        case '1':
     649                            $count_ltsp['true'] += intval($row['total']);
     650                            break;
     651                    }
     652                }
     653                $cache->store($count_ltsp,$cache_key);
     654            }else{
     655                $count_ltsp=$this->dbconn->error;
     656            }
     657         }
     658         $cache_key='extended_6';
     659         $sql = "select t1.mode,count(t2.uuid) as total from (select 'THIN' as mode union all select 'SEMI' UNION ALL select 'FAT') t1 left join (select uuid,mode from Client_Versions where Flavours_name = 'client') t2 on t1.mode = t2.mode group by t1.mode";
     660         $data= $cache->get($cache_key);
     661         $stime=microtime(true);
     662         $count_mode=array('thin'=>0,'semi'=>0,'fat'=>0);
     663         if ($data != false){
     664            $count_mode=$data;
     665         }else{
     666            $result=$this->dbconn->query($sql);
     667            if ($result){
     668                $this->times+=microtime(true)-$stime;
     669                while($row=$result->fetch_array(MYSQLI_ASSOC)){
     670                    switch($row['mode']){
     671                        case 'THIN':
     672                            $count_mode['thin']+=intval($row['total']);
     673                            break;
     674                        case 'SEMI':
     675                            $count_mode['semi']+=intval($row['total']);
     676                            break;
     677                        case 'FAT':
     678                            $count_mode['fat']+=intval($row['total']);
     679                            break;
     680                    }
     681                }
     682                $cache->store($count_mode,$cache_key);
     683            }else{
     684                $count_mode=$this->dbconn->error;
     685            }
     686         }
     687
    569688         //sanitize input
    570689         if ($app != NULL){
     
    637756             $stats['clients']['cpu']['more']=$clients_more;
    638757         }
     758         if (isset($count_ltsp)){
     759             $stats['count_ltsp']=$count_ltsp;
     760         }
     761         if (isset($clients_more)){
     762             $stats['count_mode']=$count_mode;
     763         }
    639764         $stats['debug_query_time']=strval(number_format($this->times,5));
    640765         if (file_exists($this->ka_file)){
  • lliurex-analytics-server/trunk/fuentes/lliurex-analytics-server/usr/sbin/analyticsd

    r6934 r7111  
    3232FILE='/usr/lib/analytics-server/analytics/config.php'
    3333LIMIT=70.0       # PERCENTAGE LOAD LIMIT
    34 
     34WARNING_MIN_HEAP = 256
    3535##### END EDITABLE VARS #####
    3636
     
    172172class DB():
    173173    def __init__(self,mon,t='main'):
     174        self._initialized=False
    174175        self.t=t
    175176        self.reconnect=0
     
    232233        try:
    233234            return self.cur.execute(kwargs['query'])
    234         except Exception as e:
    235             raise Exception('Error executing: Error=({}) Query=({}) '.format(str(e),kwargs['query']))
     235        except mdb.OperationalError as e:
     236                printea('({}) Operational error on mysql, error is: {}'.format(self.t,e),'error')
     237                self.init_db()
     238        except Exception:
     239                raise Exception('Error executing: Error=({}) Query=({}) '.format(str(e),kwargs['query']))
    236240
    237241    def init_db(self):
     
    246250                self.mon.server_variables=variables
    247251
    248             printea("Connected succesfully {}".format(self.t),'info')
     252            printea("Connected succesfully {} thread_id={}".format(self.t,self.conn.thread_id()),'info')
    249253
    250254        except mdb.Error as e:
     
    273277        return values
    274278
    275     def put_config(self,values):
     279    @with_retry
     280    def put_config(self,*args,**kwargs):
     281        values = kwargs.get('values')
    276282        vals=[]
    277283        for x in values.keys():
    278284            vals.append("('{}','{}')".format(x,values[x]))
    279285        try:
    280             self.cur.execute("insert into Config(`name`, `value`) values {} on duplicate key update name=VALUES(name), value=VALUES(value);".format(','.join(vals)))
     286            self.execute(query="insert into Config(`name`, `value`) values {} on duplicate key update name=VALUES(name), value=VALUES(value);".format(','.join(vals)))
    281287            self.conn.commit()
    282288        except Exception as e:
    283             print(e)
    284 
    285     def check_temporary_tables_size(self,table_name):
     289            printea(e,'error')
     290
     291    @with_retry
     292    def check_temporary_tables_size(self,*args,**kwargs):
     293        table_name=kwargs.get('table_name')
    286294        if self.t != 'load':
    287295            return None
     
    289297            size = 0
    290298            rows = 0
    291             self.cur.execute('select floor((data_length + index_length) / 1048576) `size`,table_rows from information_schema.TABLES where table_schema = "analytics" and table_name = "{}";'.format(table_name))
     299            self.execute(query='select floor((data_length + index_length) / 1048576) `size`,table_rows from information_schema.TABLES where table_schema = "analytics" and table_name = "{}";'.format(table_name))
    292300
    293301            res=self.cur.fetchone()
     
    330338            return int(h.hexdigest()[0:16],16)
    331339        except Exception as e:
    332             print(traceback.format_exc())
     340            printea(traceback.format_exc(),'critical')
    333341
    334342    @timed
     
    336344    def get_client(self,*args,**kwargs):
    337345        try:
    338             query="SELECT id,date,user,version,sabor,arch,mem,vga,cpu,ncpu from tmp_clients where status=1 LIMIT {}".format(int(self.mon.select_window))
     346            query="SELECT id,date,user,version,sabor,arch,mem,vga,cpu,ncpu,ltsp,mode from tmp_clients where status=1 LIMIT {}".format(int(self.mon.select_window))
    339347            self.execute(query=query)
    340348            ret =[]
    341349            if self.cur.rowcount > 0:
    342350                for i in range(self.cur.rowcount):
    343                     v_id,v_date,v_user,v_version,v_flavour,v_arch,v_mem,v_vga,v_cpu,v_ncpu=self.cur.fetchone()
     351                    v_id,v_date,v_user,v_version,v_flavour,v_arch,v_mem,v_vga,v_cpu,v_ncpu,v_ltsp,v_mode=self.cur.fetchone()
    344352                    version=self.reduce_version(v_version)
    345353                    flavour=self.reduce_flavour(version,v_flavour)
     
    355363                    if not v_ncpu:
    356364                        v_ncpu = 'NULL'
    357                     ret.append({'uuid':uuid,'id':v_id,'date':v_date,'uid':v_user,'version':version,'flavour':flavour,'rversion':v_version,'rflavour':v_flavour,'arch':v_arch,'mem':v_mem,'vga':v_vga,'cpu':v_cpu,'ncpu':v_ncpu})
     365                    if v_ltsp == '1' or v_ltsp == True:
     366                        v_ltsp = 'TRUE'
     367                    elif v_ltsp == '0' or v_ltsp == False:
     368                        v_ltsp = 'FALSE'
     369                    else:
     370                        v_ltsp = 'NULL'
     371                    if not v_mode:
     372                        v_mode='NULL'
     373
     374                    ret.append({'uuid':uuid,'id':v_id,'date':v_date,'uid':v_user,'version':version,'flavour':flavour,'rversion':v_version,'rflavour':v_flavour,'arch':v_arch,'mem':v_mem,'vga':v_vga,'cpu':v_cpu,'ncpu':v_ncpu,'ltsp':v_ltsp,'mode':v_mode})
    358375                return ret
    359376            else:
     
    399416        values= []
    400417        for cli in kwargs['client_list']:
    401             values.append("({},'{}','{}','{}','{}','{}','{}','{}',{},'{}','{}',{})".format(cli['uuid'],cli['date'].strftime('%Y-%m-%d'),cli['uid'],cli['rversion'],cli['rflavour'],cli['version'],cli['flavour'],cli['arch'],cli['mem'],cli['vga'],cli['cpu'],cli['ncpu']))
    402         query = "INSERT INTO Client_Versions(`uuid`,`date`,`Client_uid`,`string_release`,`string_flavour`,`Releases_name`,`Flavours_name`,`arch`,`mem`,`vga`,`cpu`,`ncpu`) VALUES {} on duplicate key update uuid=uuid".format(','.join(map(str,values)))
     418            values.append("({},'{}','{}','{}','{}','{}','{}','{}',{},'{}','{}',{},{},'{}')".format(cli['uuid'],cli['date'].strftime('%Y-%m-%d'),cli['uid'],cli['rversion'],cli['rflavour'],cli['version'],cli['flavour'],cli['arch'],cli['mem'],cli['vga'],cli['cpu'],cli['ncpu'],cli['ltsp'],cli['mode']))
     419        query = "INSERT INTO Client_Versions(`uuid`,`date`,`Client_uid`,`string_release`,`string_flavour`,`Releases_name`,`Flavours_name`,`arch`,`mem`,`vga`,`cpu`,`ncpu`,`ltsp`,`mode`) VALUES {} on duplicate key update uuid=uuid".format(','.join(map(str,values)))
    403420        self.execute(query=query)
    404421        return True
     
    565582                try:
    566583                    if self.conn == None:
    567                         raise EnvironmentError('Connection not available, probably it\'s a first run')
     584                        if not self._initialized:
     585                            self._initialized = True
     586                            raise EnvironmentError('Initializing connector {}'.format(self.t))
     587                        else:
     588                            raise Warning('Connection not available')
    568589                    else:
    569590                        self.conn.begin()
     
    577598                        self.conn.rollback()
    578599                except EnvironmentError as e:
    579                     printea(e)
     600                    printea(e,'info')
    580601                    self.init_db()
    581 
     602                except Warning as e:
     603                    printea(e,'warning')
     604                    self.init_db()
    582605                except Exception as e:
    583606                    try:
     
    747770            avg+=x
    748771        return round(avg/100.0,2)
    749 
    750     def put_config(self,key='',value=''):
    751         pass
    752772
    753773    def term(self,*args,**kwargs):
     
    819839            self.cfg.store('temp_clients_size',int(self.temporary_tables_size['clients']))
    820840            self.cfg.store('temp_packages_size',int(self.temporary_tables_size['packages']))
     841            self.cfg.store('temp_clients_rows',int(self.temporary_tables_rows['clients']))
     842            self.cfg.store('temp_packages_rows',int(self.temporary_tables_rows['packages']))
    821843            self.cfg.store('db_clients_size',int(self.db_tables_size['clients']))
    822844            self.cfg.store('db_packages_size',int(self.db_tables_size['packages']))
     
    868890                if self.server_variables and 'max_heap_table_size' in self.server_variables:
    869891                    self.max_heap=int(self.server_variables['max_heap_table_size'])/(2**20)
    870 
    871                 self.temporary_tables_size['clients'],self.temporary_tables_rows['clients']=db.check_temporary_tables_size('tmp_clients')
    872                 self.temporary_tables_size['packages'],self.temporary_tables_rows['packages']=db.check_temporary_tables_size('tmp_packages')
    873                 self.db_tables_size['clients'],self.db_tables_rows['clients']=db.check_temporary_tables_size('Client_Versions')
    874                 self.db_tables_size['packages'],self.db_tables_rows['packages']=db.check_temporary_tables_size('RecvPackages')
     892                    if self.max_heap < WARNING_MIN_HEAP:
     893                        printea("******************** MIN HEAP IS TOO SMALL -> {} < {} ********************".format(self.max_heap,WARNING_MIN_HEAP),'warning')
     894
     895                self.temporary_tables_size['clients'],self.temporary_tables_rows['clients']=db.check_temporary_tables_size(mon=self,table_name='tmp_clients')
     896                self.temporary_tables_size['packages'],self.temporary_tables_rows['packages']=db.check_temporary_tables_size(mon=self,table_name='tmp_packages')
     897                self.db_tables_size['clients'],self.db_tables_rows['clients']=db.check_temporary_tables_size(mon=self,table_name='Client_Versions')
     898                self.db_tables_size['packages'],self.db_tables_rows['packages']=db.check_temporary_tables_size(mon=self,table_name='RecvPackages')
    875899                self.temporary_tables_size['sum'] =self.temporary_tables_size['clients']+self.temporary_tables_size['packages']
    876900                self.temporary_tables_rows['sum'] =self.temporary_tables_rows['clients']+self.temporary_tables_rows['packages']
     
    919943            for x in self.get_internal_vars():
    920944                values.setdefault(str(x),str(getattr(self,x)))
    921             self._db.put_config(values)
     945            self._db.put_config(values=values)
    922946
    923947    def read(self):
     
    930954                    setattr(self,key,config[key])
    931955        else:
    932             print('No config yet')
     956            printea('No config yet')
    933957
    934958    def get_internal_vars(self):
  • lliurex-analytics-server/trunk/fuentes/testing_utils/test_analytics.py

    r6820 r7111  
    1919HOST='http://aplicaciones.lliurex.net/analytics/notify'
    2020HEADERS={'user-agent':'lliurex-statistics-agent'}
    21 TIMEOUT=10              # TIMEOUT SENDING REQUESTS
     21TIMEOUT=30              # TIMEOUT SENDING REQUESTS
    2222
    2323RELEASES=['16','15']
     
    2525REAL_FLAVOURS=True      # TRUE FLAVOURS (release 15)
    2626DATE_ROUNDS=15           # DIFERENTS MONTHS SENDED
    27 NCLIENTS=2000           # NUMBER DIFFERENT CLIENTS
    28 MAX_THREADS=20           # PARALLEL CLIENTS SENDING DATA (> 5 == no effect)
     27NCLIENTS=1000           # NUMBER DIFFERENT CLIENTS
     28MAX_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
    3232CLIENT_UPDATE_FREQ=3    # PERCENT OF CLIENTS THAT UPDATE INTRA ROUND
    33 LOOPS=5                # LOOPS INTRA DATE LOOP
     33LOOPS=3                # LOOPS INTRA DATE LOOP
    3434SLEEP_THREAD_TIME=0     # SLEEP THREAD AFTER SENDING
    3535STATS_ON=1              # req/s stats
    3636
    37 USE_PLATFORM_DATA=False
     37USE_PLATFORM_DATA=True
     38USE_LTSP_DATA=True
     39USE_LTSP_WITH_OLD_CLIENTS=True
    3840MAX_RANDOM_CLIENTS=50000
    3941DEBUG=0
     
    101103
    102104ARCHS=['x86_64','i386']
     105LTSP_MODES=['THIN','FAT','SEMI']
     106SLEEP_FAIL_SENDING=1
    103107
    104108class DB():
     
    156160        self.updates=0
    157161        self.inc_date=0
     162        self.ltsp=False
     163        self.mode=False
    158164        if USE_PLATFORM_DATA:
    159165            pdata = self.gen_platform_data()
    160166            for att in pdata:
    161167                setattr(self,att,pdata[att])
     168        if USE_LTSP_DATA:
     169            if (random.randint(0,1) == 1):
     170                self.ltsp=True
     171                r=random.randint(0,len(LTSP_MODES)-1)
     172                self.mode=LTSP_MODES[r]
     173            else:
     174                self.ltsp=False
    162175
    163176    def gen_platform_data(self):
     
    249262            tmp['specs']['vga']=self.vga
    250263            tmp['specs']['cpu']={'model':self.cpu,'ncpus':self.ncpu}
     264            if USE_LTSP_DATA:
     265                if USE_LTSP_WITH_OLD_CLIENTS:
     266                    if random.randint(0,5) != 1:
     267                        tmp['specs']['subtype']={'LTSP':self.ltsp,'MODE':self.mode}
     268                else:
     269                    tmp['specs']['subtype']={'LTSP':self.ltsp,'MODE':self.mode}
    251270        if self.inc_date > 0:
    252271            d=datetime.today()+relativedelta(months=0-self.inc_date)
     
    498517            data,napps,lapps=client.get_data()
    499518
    500            
    501            
     519
     520
    502521            try:
    503522                do=False
    504                 try:
    505                     r = self.sess.post(HOST,data=data,headers=HEADERS,timeout=TIMEOUT)
    506                 except:
    507                     do=True
    508                     time.sleep(SLEEP_THREAD_TIME)
    509                 if do:
    510                     self.lock.acquire()
    511                     REDO+=1
    512                     self.lock.release()
    513                     r = self.sess.post(HOST,data=data,headers=HEADERS,timeout=TIMEOUT)
     523                i=5
     524                error_replay = False
     525                while i > 0:
     526                    try:
     527                        r = self.sess.post(HOST,data=data,headers=HEADERS,timeout=TIMEOUT)
     528                        i = 0
     529                    except Exception as e:
     530                        print 'R'+e+"\n"
     531                        do=True
     532                        time.sleep(SLEEP_THREAD_TIME)
     533                    if do:
     534                        self.lock.acquire()
     535                        REDO+=1
     536                        time.sleep(SLEEP_FAIL_SENDING)
     537                        self.lock.release()
     538                        i -= 1
     539                        if i == 0:
     540                            error_replay = True
     541
     542                    #r = self.sess.post(HOST,data=data,headers=HEADERS,timeout=TIMEOUT)
    514543
    515544                #sys.stderr.write('.')
     
    517546                if SLEEP_THREAD_TIME and SLEEP_THREAD_TIME > 0:
    518547                    time.sleep(SLEEP_THREAD_TIME)
    519                
     548
     549                if error_replay:
     550                    self.lock.acquire()
     551                    FAILED+=1
     552                    self.lock.release()
     553                    raise Exception('Fail Sending')
     554
    520555                if r.text != 'OK':
    521556                    self.lock.acquire()
    522557                    FAILED+=1
    523558                    self.lock.release()
    524                     raise Exception('Fail Sending')
     559                    print '{}'.format(data)
     560                    raise Exception('Reply NOK')
     561
    525562                self.lock.acquire()
    526563                NPET+=1
Note: See TracChangeset for help on using the changeset viewer.