scenario

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package scenario decide, em runtime, qual comportamento uma requisição recebe: sucesso, erro de negócio, erro de servidor, timeout, corpo malformado ou desconexão. A escolha é feita por um Scenario (tipicamente um Profile com pesos), deixando o transport apenas executar o Result.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Available

func Available() []string

Available lista os nomes de profile suportados, em ordem alfabética.

Types

type Kind

type Kind int

Kind enumera os comportamentos possíveis de uma resposta mockada.

const (
	// KindSuccess devolve a resposta de sucesso documentada do endpoint.
	KindSuccess Kind = iota
	// KindBusinessError devolve um erro de negócio documentado (4xx) do endpoint.
	KindBusinessError
	// KindServerError devolve um status de servidor fixo (ex.: 500, 503).
	KindServerError
	// KindTimeout dorme por Delay e então responde 504, simulando serviço travado.
	KindTimeout
	// KindMalformed responde 200 com um corpo JSON inválido.
	KindMalformed
	// KindDisconnect derruba a conexão sem responder.
	KindDisconnect
)

type Profile

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

Profile é um Scenario que sorteia o Result conforme pesos. A soma dos pesos não precisa ser 1; é normalizada no sorteio.

func (*Profile) Name

func (p *Profile) Name() string

Name devolve o identificador do profile (ex.: "chaos").

func (*Profile) Resolve

func (p *Profile) Resolve(*RequestContext) Result

Resolve sorteia um Result conforme os pesos do profile.

type RequestContext

type RequestContext struct {
	Method   string
	Path     string
	Endpoint domain.Endpoint
}

RequestContext carrega o que o scenario pode inspecionar para decidir. No MVP a decisão é só probabilística, mas o endpoint já fica disponível para regras futuras (por path, método, etc.).

type Result

type Result struct {
	Kind   Kind
	Status int
	Delay  time.Duration
}

Result descreve a decisão do scenario para uma requisição.

type Scenario

type Scenario interface {
	Resolve(*RequestContext) Result
}

Scenario resolve o comportamento de uma requisição.

func Always

func Always(r Result) Scenario

Always devolve um Scenario que sempre produz o mesmo Result. Útil para o profile happy, para testes e para overrides por endpoint no futuro.

func ForProfile

func ForProfile(name string) (Scenario, error)

ForProfile devolve o Scenario do profile nomeado. Retorna erro com a lista de profiles válidos quando o nome não existe.

func ForceStatus

func ForceStatus(status int, base Scenario) Scenario

ForceStatus devolve um Scenario que força um status HTTP nas requisições cujo endpoint documenta aquele status na spec (sucesso ou erro). Endpoints que não documentam o status caem em base (tipicamente o profile). Assim, forçar 500 num profile happy faz só os endpoints com 500 mapeado responderem 500; os demais seguem o happy.

Jump to

Keyboard shortcuts

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