braindead

0.3.6 • Public • Published

Braindead

Websocket cli client and replicator

Installation

npm i -g braindead

Usage

braindead -h

Output:

Usage: braindead [options] [command]
 
 
  Options:
 
    -V, --version  output the version number
    -h, --help     output usage information
 
  Commands:
 
    interact [options]           connect to server and open an interact shell
    exec <files>                 run client yaml script
    replicate [options] <files>  run replicator with an yaml script

Interaction Mode

Usage: interact [options]
 
  connect to server and open an interact shell
 
 
  Options:
 
    -H, --host <host>            client host (default: localhost)
    -P, --port <port>            client port
    -S, --ssl                    enable SSL
    -U, --uri <address>          uri
    -t, --timeout <miliseconds>  request timeout
    -h, --help                   output usage information

Example:

braindead interact -H localhost -P 3014
braindead interact -H localhost -P 3014 -S
braindead interact -U wss://localhost:3014

Executor Mode

Usage: exec [options] <files>
 
  run client yaml script
 
 
  Options:
 
    -h, --help  output usage information

Example:

braindead exec ./client.yaml
braindead exec ./client1.yaml,./client2.yaml

Replicator Mode

Usage: replicate [options] <files>
 
  run replicator with an yaml script
 
 
  Options:
 
    -i, --interval <miliseconds>           replicator intervel
    -c, --concurrency <count>              replicator concurrent count
    -l, --level <verbose|info|warn|error>  replicator log level
    -p, --prefix <prefix>                  replicator instance id prefix
    -o, --log <path>                       replicator log file path
    -h, --help                             output usage information
braindead replicate -o test.log -i 1000 -c 500 ./client.yaml
braindead replicate client1.yaml,client2.yaml,client3.yaml

Yaml Scripting

Examples:

connect:
    host: 'localhost'
    port: 3014
    ssl: true
    timeout: 5000
emit:
    route: 'gate.handler.connect'
    data:
      udid:
        $eval: '$options.name'
    expect: 'code === 200'
    success: '$session.host = host; $session.port = port'
disconnect:
sleep: 500
connect:
     host:
      $eval: '$session.host'
    port:
      $eval: '$session.port'
    ssl: true
    timeout: 5000
emit:
    route: 'connector.handler.login'
    data:
      udid:
        $eval: '$options.name'
emit: 'connector.handler.changeRoom'
emit: 'room.roomHandler.enterRoom'
emit: 'connector.handler.logout'
disconnect:
connect:
    host: 'localhost'
    port: 3014
    ssl: true
    timeout: 30000
emit:
    route: 'gate.handler.connect'
    data:
      udid:
        $eval: '$options.name'
    expect: 'code === 200'
    success: '$session.host = host; $session.port = port'
disconnect:
sleep: 500
connect:
    host:
      $eval: '$session.host'
    port:
      $eval: '$session.port'
    ssl: true
    timeout: 30000
emit:
    route: 'connector.handler.login'
    udid:
        $eval: '$options.name'
    expect: 'code === 200'
emit:
    route: 'connector.handler.changeRoom'
    expect: 'code === 200'
emit:
    route: 'room.roomHandler.enterRoom'
    expect: 'code === 200'
emit:
    route: 'room.userHandler.unlockSlot'
    data:
      slotId: 1
    expect: '/^(200|400)$/.test(code)'
sleep: 500
emit:
    route: 'connector.handler.changeRoom'
    data:
      slotId: 1
      mode: 1
      type: 2
    expect: 'code === 200'
emit:
    route: 'room.roomHandler.enterRoom'
    expect: 'code === 200'0
emit:
    route: 'room.slotsHandler.spin'
    data:
      bet: 1000
    expect: 'code === 200'
    repeat:
      sleep: 6000

Expressions

connect

# connect to remote host 
connect:
    # hostname(required) 
    host: 'localhost'
    # port(required) 
    port: 9000
    # connection and request timeout in millisec(optional) 
    timeout: 30000

disconnect

# disconnect from remote host 
disconnect:

emit

# a request without message body 
emit: 'room.roomHandler.enterRoom'
# a request 
emit:
    # request route(required) 
    route: 'connector.handler.login'
    # request data(optional) 
    data:
      udid: '123456'
    # response test(optional) run in the context with current response data and global data 
    expect: 'code === 200'
    # success hook(optional) run in the context with current response data and global data 
    success: '$session.user = user'
    # repeat(optional) 
    repeat:
      # count(optional, omit to make infinite loop) 
      count: 3
      # sleep for millisec before next repeat(optional) 
      sleep: 6000

sleep

# sleep for millisec 
sleep: 6000

Interpolation

$session, $options, $env can be used in $eval, expect, and success.

$eval can be used in connect and emit.

$session

Fetch variables stored in session.

connect:
    host:
      $eval: '$session.host'
    port:
      $eval: '$session.port'
emit:
    route:
      $eval: '$session.route'
emit:
    route: 'room.userHanlder.unlock'
    data:
      id:
        $eval: '$session.id'

$options

Fetch variables stored in options. Available variables are host, port, ssl, uri, timeout, interval, concurrency, level and prefix.

$env

Fetch variables stored in environment variables.

emit:
    route: 'room.userHanlder.check'
    data:
      env:
        $eval: '$env.NODE_ENV'

Readme

Keywords

none

Package Sidebar

Install

npm i braindead

Weekly Downloads

0

Version

0.3.6

License

MIT

Unpacked Size

39.8 kB

Total Files

8

Last publish

Collaborators

  • seancheung