Skip to content

ozgur-yalcin/loadtest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Simple HTTP load test

package main

import (
	"encoding/json"
	"fmt"
	"net/url"
	"os"
	"strconv"
	"time"

	vegeta "github.com/tsenart/vegeta/lib"
)

func main() {
	frequency, err := strconv.Atoi(os.Args[1])
	if err != nil {
		panic(err)
	}
	duration, err := time.ParseDuration(os.Args[2])
	if err != nil {
		panic(err)
	}
	target, err := url.Parse(os.Args[3])
	if err != nil {
		panic(err)
	}
	targeter := vegeta.NewStaticTargeter(vegeta.Target{Method: "GET", URL: target.String()})
	rate := vegeta.Rate{Freq: frequency, Per: time.Second}
	attacker := vegeta.NewAttacker()
	var metrics vegeta.Metrics
	for res := range attacker.Attack(targeter, rate, duration, "Big Bang!") {
		metrics.Add(res)
	}
	metrics.Close()
	fmt.Println("target:", target)
	fmt.Println("request rate:", metrics.Rate)
	fmt.Println("duration:", metrics.Duration.Seconds())
	fmt.Println("total requests:", metrics.Requests)
	fmt.Println("mean latency:", metrics.Latencies.Mean.Seconds())
	fmt.Println("max latency:", metrics.Latencies.Max.Seconds())
	fmt.Println("total bytes:", metrics.BytesIn.Total)
	fmt.Println("mean bytes:", metrics.BytesIn.Mean)
	fmt.Println("success ratio:", metrics.Success)
	statuscodes, _ := json.MarshalIndent(metrics.StatusCodes, " ", " ")
	fmt.Println("status codes:", string(statuscodes))
	errors, _ := json.MarshalIndent(metrics.Errors, " ", " ")
	fmt.Println("errors:", string(errors))
}
$ go get github.com/tsenart/vegeta
$ go run main.go 50 5s http://www.example.com/

About

Simple HTTP load test

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages