job

command module
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2019 License: Apache-2.0 Imports: 2 Imported by: 0

README

job

GoDoc Go Report Card Build Status Version Coverage Status

make your short-term command as a long-term job

Install

Brew install

$: brew tap liujianping/tap && brew install job

OR

$: git clone https://github.com/liujianping/job.git
$: cd job 
$: go build -mod vendor

Usage


$: job -h
Job, make your short-term command as a long-term job

Usage:
  job [flags] [command args ...]

Examples:

(simple)      $: job echo hello
(schedule)    $: job -s "* * * * *" -- echo hello
(retry)       $: job -r 3 -- echox hello
(repeat)      $: job -n 10 -i 100ms -- echo hello
(concurrent)  $: job -c 10 -n 10 -- echo hello
(report)      $: job -R -- echo hello
(timeout cmd) $: job -t 500ms -R -- sleep 1
(timeout job) $: job -n 10 -i 500ms -T 3s -R -- echo hello
(job output)  $: job -n 10 -i 500ms -T 3s -o -- echo hello
(job config)  $: job -f /path/to/job.yaml

Flags:
  -e, --cmd-env stringToString          job command enviromental variables (default [])
  -r, --cmd-retry int                   job command retry times when failed
  -d, --cmd-stdout-discard              job command stdout discard ?
  -t, --cmd-timeout duration            job command timeout duration
  -c, --concurrent int                  job concurrent numbers
  -f, --config string                   job config file path
  -G, --guarantee                       job guarantee mode enable ?
  -h, --help                            help for job
  -M, --metadata stringToString         job metadata definition (default [])
  -N, --name string                     job name definition
  -o, --output                          job yaml config output enable ?
  -i, --repeat-interval duration        job repeat interval duration
  -n, --repeat-times int                job repeat times, 0 means forever (default 1)
  -R, --report                          job report enable ?
  -P, --report-push-gateway string      job report to prometheus push gateway address
  -I, --report-push-interval duration   job report to prometheus push gateway interval
  -s, --schedule string                 job schedule in crontab format
  -T, --timeout duration                job timeout duration
  -V, --verbose                         job verbose log enable ?
  -v, --version                         job version
Output Job
$: job -n 10 -i 500ms -T 3s -o -- curl https://www.baidu.com
Job:
  name: ""
  command:
    shell:
      name: curl
      args:
      - https://www.baidu.com
      envs: []
    stdout: true
    retry: 0
    timeout: 0s
  guarantee: false
  crontab: ""
  repeat:
    times: 10
    interval: 500ms
  concurrent: 1
  timeout: 3s
  report: true
  order:
    precondition: []
    weight: 0
    wait: false
** Multple Job Config **
Job:
  name: "echo"
  command:
    shell: 
      name: "echo"
      args: 
        - hello
        - job
      envs:
        - name: "key"
          value: "val"
    retry: 3
    timeout: 3s
    guarantee: false
  crontab: ""
  concurrent: 0
  repeat:
    times: 2
    interval: 100ms
  timeout: 10s
  report: true
  order:
    precondition: [""]
    weight: 4
    wait: false
---
Job:
  name: "http"
  command:
    retry: 3
    timeout: 3s
    stdout: true
    http:    
      request: 
        url: "https://github.com/liujianping/job"
        method: GET
        # headers: 
        #   Content-Type: application/json
        # body:
        #   json:
        #     hello: "demo"
        #     person:
        #       name: jay
        #       hobby: football
  crontab: ""
  concurrent: 2
  repeat:
    times: 3
    interval: "10ms"
  timeout: 1h
  report: true
  order:
    weight: 3
    precondition: ["echo"]
    wait: false
Local Report
$: job -n 10 -i 500ms -c 5 -R -- echo hello

Uptime:	5.1037 secs

Summary:
  Total:	5.1029 secs
  Slowest:	0.0091 secs
  Fastest:	0.0036 secs
  Average:	0.0068 secs
  Op/sec:	9.7983

  Total data:	210 bytes
  Size/Resp:	210 bytes

Response time histogram:
  0.004 [1]	|■■■■
  0.004 [0]	|
  0.005 [2]	|■■■■■■■■■
  0.005 [2]	|■■■■■■■■■
  0.006 [4]	|■■■■■■■■■■■■■■■■■■
  0.006 [9]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.007 [8]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.007 [7]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.008 [6]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.009 [6]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.009 [5]	|■■■■■■■■■■■■■■■■■■■■■■


Latency distribution:
  10% in 0.0056 secs
  25% in 0.0061 secs
  50% in 0.0068 secs
  75% in 0.0080 secs
  90% in 0.0086 secs
  95% in 0.0088 secs
  0% in 0.0000 secs

Code distribution:
  [0]	50 responses

TODO

  • support metrics report to prometheus push gateway
  • template variables for commands
  • more embedded commands support, like:
    • http
    • grpc
    • thrift
    • database
    • smtp
  • commands response assertions

Inspired By

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL