Skip to content

Latest commit

 

History

History
180 lines (157 loc) · 4.85 KB

README.md

File metadata and controls

180 lines (157 loc) · 4.85 KB

febs-test for server stress test;

Install

Use npm to install:

npm install febs-test --save

Example

'use strict';
/**
* Copyright (c) 2017 Copyright brainpoint All Rights Reserved.
* Author: lipengxiang
* Date: 
* Desc: 
*/

var test = require('febs-test');
var http = require('http');

//
// test work.
function test_work(){ // or async function test_work() {
    // todo.
    test.add_count('request', 1);
    let token = test.begin('request nodjes');
    http.get('http://nodejs.org/dist/index.json', (res) => {
      const { statusCode } = res;
      let error;
      if (statusCode !== 200) {
        test.end_custom(token, statusCode.toString());
      } else {
        test.end_success(token);
      }

      test.finish();
    }).on('error', (e) => {
      test.end_failure(token);
    });
}

//
// begin test.
test.start({
            clientTotal: 100,          // 客户端总数.
            processNum: 10,            // 进程数. 默认50个.
            createDurtion: 5000,        // in ms, �模拟客户端在此时间段内创建完成. 默认10000
            testDurtion : 20000,          // in ms, 测试的持续时间.
          }, test_work);

result:

       ************************************************************
       *      Stress test begin.
       *        HYs-MacBook-Air.local darwin
       *        - cpu numbers:  4
       *        - cpu type:     undefined undefined MHz
       *        - total memory: 4096 MB
       *        - free memory:  191 MB
       * ----------------------------------------------------------
       *      config of:
       *        - client total:                  100
       *        - client number in per process:  10
       *        - client create durtion:         5000 ms
       *        - process number:                10
       *        - test durtion:                  20 s
       *        - logfile:
       *        - errfile:
       ************************************************************

[start at: 2017-10-26 13:51:14]
⠋ Testing...
⠧ Testing... ...25%
⠇ Testing... ...50%
⠼ Testing...

------------------------------------
- key count                        -
------------------------------------
    [request]            : 100

------------------------------------
- statistics                       -
------------------------------------
    [request nodjes]:
        request          : 100
        timeout          : 0
        success          : 100
               delay-avg : 1944 ms
               delay-max : 8303 ms
               delay-min : 414 ms
        failure          : 0
               delay-avg : 0 ms
               delay-max : 0 ms
               delay-min : 0 ms

[finish at: 2017-10-26 13:51:25]
Test take 12 s

Interface

/**
* @desc: ���初始化测试模块.
* @param opt: 
*         {
            clientTotal,          // 客户端总数.
            processNum,           // 进程数. 默认50个.
            createDurtion,        // in ms, �模拟客户端在此时间段内创建完成. 默认10000
            testDurtion,          // in ms, 测试的持续时间.
            logfile,              // 日志文件位置. null则不会存储.
            errfile,              // 错误日志位置. null则不会存储.
            debug,                // �指明debug则workCB在主线程运行, 并且不创建其他进程.
          }
* @param workCB: function(pid, tid) {}  // 在此回调中编写测试程序.
* @return: 
*/
function start(opt, workCB)
/**
* @desc: ���退出当前测试. 如果不调用此语句, 则测试会等待testDurtion时间到达后结束.
*/
function finish()
/**
  * @desc: 开始一个测试, 并在失败和成功的时候调用相应的处理.
  *        在测试结束后, 同类的测试将会归为相同的统计.
  *        在超时过后还未调用结束测试方法的, 将标记为超时.
  * @param type: �测试的类型, 相同的测试类型, 将累加统计.
  * @return: test_token. 
  */
function begin(type)
/**
* @desc: 结束指定的测试, 并记录统计结果.
*        end_custom 可以指定除'request', 'timeout' 之外自定义的测试结果类型.
* @return token. 包含delay属性.
*/
function end_success(token)
function end_failure(token)
function end_custom(token, type)
/**
* @desc: �使用key来计数, 所欲偶测试进程的对同一个key的计数将累加.
*        并且所有进程的计数操作将在测试结束后输出.
* @return: 
*/
function add_count(type, count=1) 
/**
 * 测试电脑性能, 并输出信息得到进程数的参考值.
 * @param opt: 
 *         {
            minMemory,            // in byte, 保留的最小内存数.
            logfile,              // 日志文件位置. null则不会存储.
            }
  */
function testPerformance(opt)