ddosy

package
v0.0.0-...-1e835ce Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2023 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TaskStatusStr = map[TaskStatus]string{
	Unknown:   "Unknown",
	Scheduled: "Scheduled",
	Running:   "Running",
	Killed:    "Killed",
	Done:      "Done",
}

Functions

func CreateDistribution

func CreateDistribution(ws []float64) []float64

func NewWeightedTargeter

func NewWeightedTargeter(pattern TrafficPattern) vegeta.Targeter

func RandomPick

func RandomPick(ws []float64) int

func Start

func Start(cfg ServerConfig) error

func ValidateLinearLoadWeb

func ValidateLinearLoadWeb(load LinearLoadWeb) error

func ValidateLoadPatternWeb

func ValidateLoadPatternWeb(pattern LoadPatternWeb) error

func ValidateScheduleRequestWeb

func ValidateScheduleRequestWeb(req ScheduleRequestWeb) error

func ValidateSineLoadWeb

func ValidateSineLoadWeb(load SineLoadWeb) error

func ValidateTrafficPatternWeb

func ValidateTrafficPatternWeb(pattern TrafficPatternWeb) error

Types

type DatabaseTask

type DatabaseTask struct {
	Id        uint64
	StatusId  TaskStatus
	CreatedAt time.Time
	StartedAt *time.Time
	KilledAt  *time.Time
	DoneAt    *time.Time
	Request   ScheduleRequestWeb
	Results   string
}

database

type LinearLoadWeb

type LinearLoadWeb struct {
	StartRate int `json:"startRate"`
	EndRate   int `json:"endRate"`
}

type LoadPattern

type LoadPattern struct {
	// contains filtered or unexported fields
}

func NewLoadPattern

func NewLoadPattern(pattern LoadPatternWeb) LoadPattern

type LoadPatternWeb

type LoadPatternWeb struct {
	Duration string         `json:"duration"`
	Linear   *LinearLoadWeb `json:"linear"`
	Sine     *SineLoadWeb   `json:"sine"`
}

type LoadTask

type LoadTask struct {
	// contains filtered or unexported fields
}

internal

func NewLoadTask

func NewLoadTask(req ScheduleRequestWeb) *LoadTask

func (*LoadTask) Targeter

func (t *LoadTask) Targeter() vegeta.Targeter

type LoadTaskReport

type LoadTaskReport struct {
	Endpoint  string
	Status    string
	CreatedAt string
	StartedAt string
	KilledAt  string
	DoneAt    string
	Metrics   string
	Request   string
}

func (LoadTaskReport) String

func (r LoadTaskReport) String() (string, error)

type ResultProvider

type ResultProvider struct {
	// contains filtered or unexported fields
}

func NewRelustProvider

func NewRelustProvider(repo *TaskRepository) *ResultProvider

func (*ResultProvider) FinalizeRunning

func (p *ResultProvider) FinalizeRunning(id uint64)

flush in memory metris to database

func (*ResultProvider) Get

func (p *ResultProvider) Get(id uint64) (string, error)

func (*ResultProvider) UpdateRunning

func (p *ResultProvider) UpdateRunning(id uint64, res *vegeta.Result)

updates in memory metrics

type ScheduleRequestWeb

type ScheduleRequestWeb struct {
	Endpoint        string              `json:"endpoint"`
	LoadPatterns    []LoadPatternWeb    `json:"load"`
	TrafficPatterns []TrafficPatternWeb `json:"traffic"`
}

type ScheduleResponseWeb

type ScheduleResponseWeb struct {
	Id    uint64 `json:"id"`
	Error string `json:"error"`
}

type Server

type Server struct {
	// contains filtered or unexported fields
}

func NewServer

func NewServer(cfg ServerConfig) *Server

func (*Server) KillHandler

func (s *Server) KillHandler(w http.ResponseWriter, r *http.Request)

func (*Server) ScheduleHandler

func (s *Server) ScheduleHandler(w http.ResponseWriter, r *http.Request)

func (*Server) StatusHandler

func (s *Server) StatusHandler(w http.ResponseWriter, r *http.Request)

type ServerConfig

type ServerConfig struct {
	Port              int
	DbUrl             string
	TruncateDbOnStart bool
}

type SineLoadWeb

type SineLoadWeb struct {
	Mean   int    `json:"mean"`
	Amp    int    `json:"amplitude"`
	Period string `json:"period"`
}

type TaskProvider

type TaskProvider struct {
	// contains filtered or unexported fields
}

func NewTaskProvider

func NewTaskProvider(repostiroy *TaskRepository) *TaskProvider

func (*TaskProvider) Done

func (p *TaskProvider) Done(id uint64)

func (*TaskProvider) Kill

func (p *TaskProvider) Kill(id uint64)

func (*TaskProvider) Next

func (p *TaskProvider) Next() *LoadTask

func (*TaskProvider) ScheduleTask

func (p *TaskProvider) ScheduleTask(req ScheduleRequestWeb) (uint64, error)

type TaskRepository

type TaskRepository struct {
	// contains filtered or unexported fields
}

func NewTaskRepository

func NewTaskRepository(dbURL string, truncate bool) *TaskRepository

func (*TaskRepository) Get

func (r *TaskRepository) Get(id uint64) (DatabaseTask, error)

func (*TaskRepository) GetNextTask

func (r *TaskRepository) GetNextTask() (uint64, ScheduleRequestWeb, error)

return next scheduled task and mark it as running

func (*TaskRepository) Save

func (*TaskRepository) UpdateProgress

func (r *TaskRepository) UpdateProgress(id uint64, progress string) error

func (*TaskRepository) UpdateStatus

func (r *TaskRepository) UpdateStatus(id uint64, newStatus TaskStatus) error

type TaskStatus

type TaskStatus int8
const (
	Unknown TaskStatus = iota
	Scheduled
	Running
	Killed
	Done
)

type TrafficDistribution

type TrafficDistribution struct {
	// contains filtered or unexported fields
}

type TrafficPattern

type TrafficPattern struct {
	// contains filtered or unexported fields
}

func NewTrafficPattern

func NewTrafficPattern(endpoint string, patterns []TrafficPatternWeb) TrafficPattern

type TrafficPatternWeb

type TrafficPatternWeb struct {
	Weight  float64 `json:"weight"`
	Payload string  `json:"payload"`
}

Jump to

Keyboard shortcuts

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