Documentation ¶
Overview ¶
Package replay provides functions for replaying requests and comparing responses.
Index ¶
- Constants
- func AbsMatch(tcs1, tcs2 *models.TestCase, noiseConfig map[string]map[string][]string, ...) (bool, bool, bool, *models.AbsResult)
- func AddHTTPBodyToMap(body string, m map[string][]string) error
- func ArrayToMap(arr []string) map[string]bool
- func CheckStringExist(s string, mp map[string][]string) ([]string, bool)
- func CompareCurl(curl1, curl2 string, logger *zap.Logger) bool
- func CompareHTTPReq(tcs1, tcs2 *models.TestCase, _ models.GlobalNoise, ignoreOrdering bool, ...) (bool, models.ReqCompare)
- func CompareHTTPResp(tcs1, tcs2 *models.TestCase, noiseConfig models.GlobalNoise, ...) (bool, models.RespCompare)
- func CompareHeaders(h1 http.Header, h2 http.Header, res *[]models.HeaderResult, ...) bool
- func CompareNoise(noise1, noise2 map[string][]string) bool
- func CompareURLParams(urlParams1, urlParams2 map[string]string, ...) bool
- func Contains(elems []string, v string) bool
- func Flatten(j interface{}) map[string][]string
- func FlattenHTTPResponse(h http.Header, body string) (map[string][]string, error)
- func InterfaceToString(val interface{}) string
- func LeftJoinNoise(globalNoise config.GlobalNoise, tsNoise config.GlobalNoise) config.GlobalNoise
- func MapToArray(mp map[string][]string) []string
- func MatchesAnyRegex(str string, regexArray []string) (bool, string)
- func SetTestUtilInstance(instance RequestEmulator)
- func UnmarshallJSON(s string, log *zap.Logger) (interface{}, error)
- type DiffsPrinter
- func (d *DiffsPrinter) PushBodyDiff(exp, act string, noise map[string][]string)
- func (d *DiffsPrinter) PushFooterDiff(key string)
- func (d *DiffsPrinter) PushHeaderDiff(exp, act, key string, noise map[string][]string)
- func (d *DiffsPrinter) PushStatusDiff(exp, act string)
- func (d *DiffsPrinter) Render() error
- type Instrumentation
- type JSONComparisonResult
- type MockDB
- type Replayer
- func (r *Replayer) BootReplay(ctx context.Context) (string, uint64, context.CancelFunc, error)
- func (r *Replayer) GetAllTestSetIDs(ctx context.Context) ([]string, error)
- func (r *Replayer) GetTestSetStatus(ctx context.Context, testRunID string, testSetID string) (models.TestSetStatus, error)
- func (r *Replayer) ProvideMocks(ctx context.Context) error
- func (r *Replayer) RunApplication(ctx context.Context, appID uint64, opts models.RunOptions) models.AppError
- func (r *Replayer) RunTestSet(ctx context.Context, testSetID string, testRunID string, appID uint64, ...) (models.TestSetStatus, error)
- func (r *Replayer) Start(ctx context.Context) error
- type ReportDB
- type RequestEmulator
- type Service
- type Telemetry
- type TestDB
- type TestReportVerdict
- type ValidatedJSON
Constants ¶
const MAX_LINE_LENGTH = 50
MAX_LINE_LENGTH is chars PER expected/actual string. Can be changed no problem
Variables ¶
This section is empty.
Functions ¶
func AbsMatch ¶
func AbsMatch(tcs1, tcs2 *models.TestCase, noiseConfig map[string]map[string][]string, ignoreOrdering bool, logger *zap.Logger) (bool, bool, bool, *models.AbsResult)
AbsMatch (Absolute Match) compares two test cases and returns a boolean value indicating whether they are equal or not. It also returns a AbsResult object which contains the results of the comparison. Parameters: tcs1, tcs2, noiseConfig, ignoreOrdering, logger Returns: bool, *models.AbsResult
func ArrayToMap ¶
func CompareHTTPReq ¶
func CompareHTTPReq(tcs1, tcs2 *models.TestCase, _ models.GlobalNoise, ignoreOrdering bool, logger *zap.Logger) (bool, models.ReqCompare)
CompareHTTPReq compares two http requests and returns a boolean value indicating whether they are equal or not.
func CompareHTTPResp ¶
func CompareHTTPResp(tcs1, tcs2 *models.TestCase, noiseConfig models.GlobalNoise, ignoreOrdering bool, logger *zap.Logger) (bool, models.RespCompare)
CompareHTTPResp compares two http responses and returns a boolean value indicating whether they are equal or not.
func CompareHeaders ¶
func CompareNoise ¶
func CompareURLParams ¶
func CompareURLParams(urlParams1, urlParams2 map[string]string, urlParamsResult *[]models.URLParamsResult) bool
func Flatten ¶
Flatten takes a map and returns a new one where nested maps are replaced by dot-delimited keys. examples of valid jsons - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#examples
func FlattenHTTPResponse ¶
func InterfaceToString ¶
func InterfaceToString(val interface{}) string
func LeftJoinNoise ¶
func LeftJoinNoise(globalNoise config.GlobalNoise, tsNoise config.GlobalNoise) config.GlobalNoise
func MapToArray ¶
func SetTestUtilInstance ¶
func SetTestUtilInstance(instance RequestEmulator)
Types ¶
type DiffsPrinter ¶
type DiffsPrinter struct {
// contains filtered or unexported fields
}
func NewDiffsPrinter ¶
func NewDiffsPrinter(testCase string) DiffsPrinter
func (*DiffsPrinter) PushBodyDiff ¶
func (d *DiffsPrinter) PushBodyDiff(exp, act string, noise map[string][]string)
func (*DiffsPrinter) PushFooterDiff ¶
func (d *DiffsPrinter) PushFooterDiff(key string)
func (*DiffsPrinter) PushHeaderDiff ¶
func (d *DiffsPrinter) PushHeaderDiff(exp, act, key string, noise map[string][]string)
func (*DiffsPrinter) PushStatusDiff ¶
func (d *DiffsPrinter) PushStatusDiff(exp, act string)
func (*DiffsPrinter) Render ¶
func (d *DiffsPrinter) Render() error
Render will display and colorize diffs side-by-side
type Instrumentation ¶
type Instrumentation interface { //Setup prepares the environment for the recording Setup(ctx context.Context, cmd string, opts models.SetupOptions) (uint64, error) //Hook will load hooks and start the proxy server. Hook(ctx context.Context, id uint64, opts models.HookOptions) error MockOutgoing(ctx context.Context, id uint64, opts models.OutgoingOptions) error // SetMocks Allows for setting mocks between test runs for better filtering and matching SetMocks(ctx context.Context, id uint64, filtered []*models.Mock, unFiltered []*models.Mock) error // GetConsumedMocks to log the names of the mocks that were consumed during the test run of failed test cases GetConsumedMocks(ctx context.Context, id uint64) ([]string, error) // Run is blocking call and will execute until error Run(ctx context.Context, id uint64, opts models.RunOptions) models.AppError GetAppIP(ctx context.Context, id uint64) (string, error) }
type JSONComparisonResult ¶
type JSONComparisonResult struct {
// contains filtered or unexported fields
}
func JSONDiffWithNoiseControl ¶
func JSONDiffWithNoiseControl(validatedJSON ValidatedJSON, noise map[string][]string, ignoreOrdering bool) (JSONComparisonResult, error)
type MockDB ¶
type MockDB interface { GetFilteredMocks(ctx context.Context, testSetID string, afterTime time.Time, beforeTime time.Time) ([]*models.Mock, error) GetUnFilteredMocks(ctx context.Context, testSetID string, afterTime time.Time, beforeTime time.Time) ([]*models.Mock, error) UpdateMocks(ctx context.Context, testSetID string, mockNames map[string]bool) error }
type Replayer ¶
type Replayer struct {
// contains filtered or unexported fields
}
func (*Replayer) BootReplay ¶
func (*Replayer) GetAllTestSetIDs ¶
func (*Replayer) GetTestSetStatus ¶
func (*Replayer) RunApplication ¶
func (*Replayer) RunTestSet ¶
type ReportDB ¶
type ReportDB interface { GetAllTestRunIDs(ctx context.Context) ([]string, error) GetTestCaseResults(ctx context.Context, testRunID string, testSetID string) ([]models.TestResult, error) GetReport(ctx context.Context, testRunID string, testSetID string) (*models.TestReport, error) InsertTestCaseResult(ctx context.Context, testRunID string, testSetID string, result *models.TestResult) error InsertReport(ctx context.Context, testRunID string, testSetID string, testReport *models.TestReport) error }
type RequestEmulator ¶
type RequestEmulator interface {
SimulateRequest(ctx context.Context, appID uint64, tc *models.TestCase, testSetID string) (*models.HTTPResp, error)
}
RequestEmulator is used to simulate the API requests to the user API. The requests are read from the recorded test case of the user app.
func NewTestUtils ¶
func NewTestUtils(apiTimeout uint64, logger *zap.Logger) RequestEmulator
type Service ¶
type Service interface { Start(ctx context.Context) error BootReplay(ctx context.Context) (string, uint64, context.CancelFunc, error) GetAllTestSetIDs(ctx context.Context) ([]string, error) RunTestSet(ctx context.Context, testSetID string, testRunID string, appID uint64, serveTest bool) (models.TestSetStatus, error) GetTestSetStatus(ctx context.Context, testRunID string, testSetID string) (models.TestSetStatus, error) RunApplication(ctx context.Context, appID uint64, opts models.RunOptions) models.AppError ProvideMocks(ctx context.Context) error }
type TestReportVerdict ¶
type TestReportVerdict struct {
// contains filtered or unexported fields
}
type ValidatedJSON ¶
type ValidatedJSON struct {
// contains filtered or unexported fields
}
func ValidateAndMarshalJSON ¶
func ValidateAndMarshalJSON(log *zap.Logger, exp, act *string) (ValidatedJSON, error)