Changeset 603


Ignore:
Timestamp:
Jul 11, 2006 12:25:45 PM (18 years ago)
Author:
bennylp
Message:

Some minor modifications here and there in pjsip-perf

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/samples/pjsip-perf.c

    r602 r603  
    155155        pj_time_val          last_completion; 
    156156        unsigned             total_responses; 
    157         unsigned             status_class[7]; 
     157        unsigned             response_codes[800]; 
    158158    } client; 
    159159 
     
    568568{ 
    569569    app.client.job_finished++; 
    570     app.client.status_class[status_code/100]++; 
     570    if (status_code >= 200 && status_code < 800) 
     571        app.client.response_codes[status_code]++; 
    571572    app.client.total_responses++; 
    572573    pj_gettimeofday(&app.client.last_completion); 
     
    12581259static int client_thread(void *arg) 
    12591260{ 
    1260     unsigned last_timeout_check = 0; 
    12611261    pj_time_val end_time, last_report, now; 
    12621262    unsigned thread_index = (unsigned)arg; 
     1263    unsigned cycle = 0, last_cycle = 0; 
    12631264 
    12641265    pj_thread_sleep(100); 
     
    12881289 
    12891290        /* Wait if there are more pending jobs than allowed in the 
    1290          * window. 
     1291         * window. But spawn a new job anyway if no events are happening 
     1292         * after we wait for some time. 
    12911293         */ 
    1292         for (i=0; outstanding > (int)app.client.job_window && i<100; ++i) { 
    1293             pjsip_endpt_handle_events(app.sip_endpt, &timeout); 
     1294        for (i=0; outstanding > (int)app.client.job_window && i<1000; ++i) { 
     1295            pj_time_val wait = { 0, 500 }; 
     1296            unsigned count = 0; 
     1297 
     1298            pjsip_endpt_handle_events2(app.sip_endpt, &wait, &count); 
    12941299            outstanding = app.client.job_submitted - app.client.job_finished; 
     1300 
     1301            if (count == 0) 
     1302                break; 
     1303 
     1304            ++cycle; 
    12951305        } 
    12961306 
     
    13061316 
    13071317        ++app.client.job_submitted; 
     1318        ++cycle; 
    13081319 
    13091320        /* Handle event */ 
     
    13111322 
    13121323        /* Check for time out, also print report */ 
    1313         if (app.client.job_submitted - last_timeout_check >= 500) { 
     1324        if (cycle - last_cycle >= 500) { 
    13141325            pj_gettimeofday(&now); 
    13151326            if (PJ_TIME_VAL_GTE(now, end_time)) { 
    13161327                break; 
    13171328            } 
    1318             last_timeout_check = app.client.job_submitted; 
     1329            last_cycle = cycle; 
    13191330 
    13201331             
     
    13611372    } 
    13621373 
    1363     /* Wait couple of seconds if there are still unfinished jobs */ 
     1374    /* Wait couple of seconds to let jobs completes (e.g. ACKs to be sent) */ 
    13641375    pj_gettimeofday(&now); 
    13651376    end_time = now; 
    13661377    end_time.sec += 2; 
    1367     while (PJ_TIME_VAL_LT(now, end_time) &&  
    1368            app.client.job_finished < app.client.job_submitted)  
     1378    while (PJ_TIME_VAL_LT(now, end_time))  
    13691379    { 
    13701380        pj_time_val timeout = { 0, 1 }; 
     
    15851595            report, sizeof(report), 
    15861596            "Total %d %s sent in %d ms at rate of %d/sec\n" 
    1587             "Total %d responses receieved in %d ms:\n" 
    1588             " - 2xx responses:  %7d (rate=%d/sec)\n" 
    1589             " - 3xx responses:  %7d (rate=%d/sec)\n" 
    1590             " - 4xx responses:  %7d (rate=%d/sec)\n" 
    1591             " - 5xx responses:  %7d (rate=%d/sec)\n" 
    1592             " - 6xx responses:  %7d (rate=%d/sec)\n" 
    1593             " - 7xx responses:  %7d (rate=%d/sec)\n" 
    1594             "                       ----------------\n" 
    1595             " TOTAL responses:  %7d (rate=%d/sec)\n", 
     1597            "Total %d responses receieved in %d ms at rate of %d/sec:", 
    15961598            app.client.job_submitted, test_type, msec_req,  
    15971599            app.client.job_submitted * 1000 / msec_req, 
    15981600            app.client.total_responses, msec_res, 
    1599             app.client.status_class[2], app.client.status_class[2]*1000/msec_res, 
    1600             app.client.status_class[3], app.client.status_class[3]*1000/msec_res, 
    1601             app.client.status_class[4], app.client.status_class[4]*1000/msec_res, 
    1602             app.client.status_class[5], app.client.status_class[5]*1000/msec_res, 
    1603             app.client.status_class[6], app.client.status_class[6]*1000/msec_res, 
    1604             app.client.status_class[7], app.client.status_class[7]*1000/msec_res, 
    1605             app.client.total_responses, app.client.total_responses*1000/msec_res); 
     1601            app.client.total_responses*1000/msec_res); 
     1602        write_report(report); 
     1603 
     1604        /* Print detailed response code received */ 
     1605        pj_ansi_sprintf(report, "\nDetailed responses received:"); 
     1606        write_report(report); 
     1607 
     1608        for (i=0; i<PJ_ARRAY_SIZE(app.client.response_codes); ++i) { 
     1609            const pj_str_t *reason; 
     1610 
     1611            if (app.client.response_codes[i] == 0) 
     1612                continue; 
     1613 
     1614            reason = pjsip_get_status_text(i); 
     1615            pj_ansi_snprintf( report, sizeof(report), 
     1616                              " - %d responses:  %7d     (%.*s)", 
     1617                              i, app.client.response_codes[i], 
     1618                              (int)reason->slen, reason->ptr); 
     1619            write_report(report); 
     1620        } 
     1621 
     1622        /* Total responses and rate */ 
     1623        pj_ansi_snprintf( report, sizeof(report), 
     1624            "                    ------\n" 
     1625            " TOTAL responses:  %7d (rate=%d/sec)\n", 
     1626            app.client.total_responses,  
     1627            app.client.total_responses*1000/msec_res); 
    16061628 
    16071629        write_report(report); 
     
    16181640        unsigned i; 
    16191641 
    1620         puts(""); 
    16211642        puts("pjsip-perf started in server-mode"); 
    16221643 
    16231644        printf("Receiving requests on the following URIs:\n" 
    1624                "  sip:0@%.*s:%d;transport=%s    for stateless handling (non-INVITE only)\n" 
    1625                "  sip:1@%.*s:%d;transport=%s    for stateful handling (INVITE and non-INVITE)\n" 
    1626                "  sip:2@%.*s:%d;transport=%s    for call handling (INVITE only)\n", 
     1645               "  sip:0@%.*s:%d%s    for stateless handling\n" 
     1646               "  sip:1@%.*s:%d%s    for stateful handling\n" 
     1647               "  sip:2@%.*s:%d%s    for call handling\n", 
    16271648               (int)app.local_addr.slen, 
    16281649               app.local_addr.ptr, 
    16291650               app.local_port, 
    1630                (app.use_tcp ? "tcp" : "udp"), 
     1651               (app.use_tcp ? ";transport=tcp" : ""), 
    16311652               (int)app.local_addr.slen, 
    16321653               app.local_addr.ptr, 
    16331654               app.local_port, 
    1634                (app.use_tcp ? "tcp" : "udp"), 
     1655               (app.use_tcp ? ";transport=tcp" : ""), 
    16351656               (int)app.local_addr.slen, 
    16361657               app.local_addr.ptr, 
    16371658               app.local_port, 
    1638                (app.use_tcp ? "tcp" : "udp")); 
     1659               (app.use_tcp ? ";transport=tcp" : "")); 
    16391660 
    16401661        for (i=0; i<app.thread_count; ++i) { 
     
    16471668        } 
    16481669 
    1649         puts("Press <ENTER> to quit"); 
     1670        puts("\nPress <ENTER> to quit\n"); 
    16501671        fflush(stdout); 
    16511672        fgets(s, sizeof(s), stdin); 
     
    16561677            app.thread[i] = NULL; 
    16571678        } 
     1679 
     1680        puts(""); 
    16581681    } 
    16591682 
Note: See TracChangeset for help on using the changeset viewer.