Navigation


Changeset 930:64d8ba7976d0 in freeDiameter


Ignore:
Timestamp:
Mar 3, 2013, 5:15:11 PM (11 years ago)
Author:
Sebastien Decugis <sdecugis@freediameter.net>
Branch:
default
Phase:
public
Message:

Include client stats in non-benchmark mode in test_app

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/test_app/ta_cli.c

    r928 r930  
    5959        struct avp * avp;
    6060        struct avp_hdr * hdr;
     61        unsigned long dur;
     62        int error = 0;
    6163       
    6264        CHECK_SYS_DO( clock_gettime(CLOCK_REALTIME, &ts), return );
     
    8082        if (avp) {
    8183                CHECK_FCT_DO( fd_msg_avp_hdr( avp, &hdr ), return );
    82                 fprintf(stderr, "%x (%s) ", hdr->avp_value->i32, (hdr->avp_value->i32 == mi->randval) ? "Ok" : "PROBLEM");
     84                if (hdr->avp_value->i32 == mi->randval) {
     85                        fprintf(stderr, "%x (%s) ", hdr->avp_value->i32, "Ok");
     86                } else {
     87                        fprintf(stderr, "%x (%s) ", hdr->avp_value->i32, "PROBLEM");
     88                        error++;
     89                }
    8390        } else {
    8491                fprintf(stderr, "no_Test-AVP ");
     92                error++;
    8593        }
    8694       
     
    9098                CHECK_FCT_DO( fd_msg_avp_hdr( avp, &hdr ), return );
    9199                fprintf(stderr, "Status: %d ", hdr->avp_value->i32);
     100                if (hdr->avp_value->i32 != 2001)
     101                        error++;
    92102        } else {
    93103                fprintf(stderr, "no_Result-Code ");
     104                error++;
    94105        }
    95106       
     
    101112        } else {
    102113                fprintf(stderr, "no_Origin-Host ");
     114                error++;
    103115        }
    104116       
     
    110122        } else {
    111123                fprintf(stderr, "no_Origin-Realm ");
    112         }
    113        
    114         /* Now compute how long it took */
     124                error++;
     125        }
     126       
     127        CHECK_POSIX_DO( pthread_mutex_lock(&ta_conf->stats_lock), );
     128        dur = ((ts.tv_sec - mi->ts.tv_sec) * 1000000) + ((ts.tv_nsec - mi->ts.tv_nsec) / 1000);
     129        if (ta_conf->stats.nb_recv) {
     130                /* Ponderate in the avg */
     131                ta_conf->stats.avg = (ta_conf->stats.avg * ta_conf->stats.nb_recv + dur) / (ta_conf->stats.nb_recv + 1);
     132                /* Min, max */
     133                if (dur < ta_conf->stats.shortest)
     134                        ta_conf->stats.shortest = dur;
     135                if (dur > ta_conf->stats.longest)
     136                        ta_conf->stats.longest = dur;
     137        } else {
     138                ta_conf->stats.shortest = dur;
     139                ta_conf->stats.longest = dur;
     140                ta_conf->stats.avg = dur;
     141        }
     142       
     143        if (error)
     144                ta_conf->stats.nb_errs++;
     145        else
     146                ta_conf->stats.nb_recv++;
     147       
     148       
     149        CHECK_POSIX_DO( pthread_mutex_unlock(&ta_conf->stats_lock), );
     150       
     151        /* Display how long it took */
    115152        if (ts.tv_nsec > mi->ts.tv_nsec) {
    116153                fprintf(stderr, "in %d.%06ld sec",
     
    122159                                (long)(1000000000 + ts.tv_nsec - mi->ts.tv_nsec) / 1000);
    123160        }
    124        
    125161        fprintf(stderr, "\n");
    126162        fflush(stderr);
     
    218254        CHECK_FCT_DO( fd_msg_send( &req, ta_cb_ans, svg ), goto out );
    219255
     256        /* Increment the counter */
     257        CHECK_POSIX_DO( pthread_mutex_lock(&ta_conf->stats_lock), );
     258        ta_conf->stats.nb_sent++;
     259        CHECK_POSIX_DO( pthread_mutex_unlock(&ta_conf->stats_lock), );
     260
    220261out:
    221262        return;
Note: See TracChangeset for help on using the changeset viewer.