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 Match(tc *models.TestCase, actualResponse *models.HTTPResp, ...) (bool, *models.Result)
- func MatchesAnyRegex(str string, regexArray []string) (bool, string)
- func ReplaceBaseURL(newURL, oldURL string) (string, error)
- func SetTestHooks(testHooks TestHooks)
- 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 Hooks
- func (h *Hooks) AfterTestSetRun(ctx context.Context, _, testSetID string, _ models.TestCoverage, _ int, ...) error
- func (h *Hooks) BeforeTestSetRun(ctx context.Context, testSetID string) error
- func (h *Hooks) SimulateRequest(ctx context.Context, _ uint64, tc *models.TestCase, testSetID string) (*models.HTTPResp, error)
- type InstrumentState
- type Instrumentation
- type JSONComparisonResult
- type MockAction
- type MockDB
- type Replayer
- func (r *Replayer) DeleteTestSet(ctx context.Context, testSetID string) error
- func (r *Replayer) DeleteTests(ctx context.Context, testSetID string, testCaseIDs []string) error
- func (r *Replayer) DenoiseTestCases(ctx context.Context, testSetID string, noiseParams []*models.NoiseParams) ([]*models.NoiseParams, error)
- func (r *Replayer) GetAllTestSetIDs(ctx context.Context) ([]string, error)
- func (r *Replayer) GetMocks(ctx context.Context, testSetID string, afterTime time.Time, ...) (filtered, unfiltered []*models.Mock, err error)
- func (r *Replayer) GetNextTestRunID(ctx context.Context) (string, error)
- func (r *Replayer) GetTestCases(ctx context.Context, testID string) ([]*models.TestCase, error)
- func (r *Replayer) GetTestSetConf(ctx context.Context, testSet string) (*models.TestSet, error)
- func (r *Replayer) GetTestSetStatus(ctx context.Context, testRunID string, testSetID string) (models.TestSetStatus, error)
- func (r *Replayer) Instrument(ctx context.Context) (*InstrumentState, error)
- func (r *Replayer) Normalize(ctx context.Context) error
- func (r *Replayer) NormalizeTestCases(ctx context.Context, testRun string, testSetID string, ...) 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) SetupOrUpdateMocks(ctx context.Context, appID uint64, testSetID string, ...) error
- func (r *Replayer) Start(ctx context.Context) error
- func (r *Replayer) Templatize(ctx context.Context) error
- type ReportDB
- type Service
- type Storage
- type Telemetry
- type TestDB
- type TestHooks
- type TestReportVerdict
- type TestSetConfig
- 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 ReplaceBaseURL ¶
ReplaceBaseURL replaces the baseUrl of the old URL with the new URL's.
func SetTestHooks ¶
func SetTestHooks(testHooks TestHooks)
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 Hooks ¶
type Hooks struct {
// contains filtered or unexported fields
}
func (*Hooks) AfterTestSetRun ¶
func (*Hooks) BeforeTestSetRun ¶
type InstrumentState ¶
type InstrumentState struct { AppID uint64 HookCancel context.CancelFunc }
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 GetContainerIP(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 MockAction ¶
type MockAction string
const ( Start MockAction = "start" Update MockAction = "update" )
MockAction constants define the possible actions that can be taken on a mocking.
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) DeleteTestSet ¶
func (*Replayer) DeleteTests ¶
func (*Replayer) DenoiseTestCases ¶
func (r *Replayer) DenoiseTestCases(ctx context.Context, testSetID string, noiseParams []*models.NoiseParams) ([]*models.NoiseParams, error)
func (*Replayer) GetAllTestSetIDs ¶
func (*Replayer) GetNextTestRunID ¶
func (*Replayer) GetTestCases ¶
func (*Replayer) GetTestSetConf ¶
func (*Replayer) GetTestSetStatus ¶
func (*Replayer) Instrument ¶
func (r *Replayer) Instrument(ctx context.Context) (*InstrumentState, error)
func (*Replayer) NormalizeTestCases ¶
func (*Replayer) RunApplication ¶
func (*Replayer) RunTestSet ¶
func (*Replayer) SetupOrUpdateMocks ¶
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 UpdateReport(ctx context.Context, testRunID string, testCoverage any) error }
type Service ¶
type Service interface { Start(ctx context.Context) error Instrument(ctx context.Context) (*InstrumentState, error) GetNextTestRunID(ctx context.Context) (string, 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) GetTestCases(ctx context.Context, testID string) ([]*models.TestCase, error) GetTestSetConf(ctx context.Context, testSetID string) (*models.TestSet, error) RunApplication(ctx context.Context, appID uint64, opts models.RunOptions) models.AppError Normalize(ctx context.Context) error Templatize(ctx context.Context) error DenoiseTestCases(ctx context.Context, testSetID string, noiseParams []*models.NoiseParams) ([]*models.NoiseParams, error) NormalizeTestCases(ctx context.Context, testRun string, testSetID string, selectedTestCaseIDs []string, testResult []models.TestResult) error DeleteTests(ctx context.Context, testSetID string, testCaseIDs []string) error DeleteTestSet(ctx context.Context, testSetID string) error }
type TestDB ¶
type TestDB interface { GetAllTestSetIDs(ctx context.Context) ([]string, error) GetTestCases(ctx context.Context, testSetID string) ([]*models.TestCase, error) UpdateTestCase(ctx context.Context, testCase *models.TestCase, testSetID string) error DeleteTests(ctx context.Context, testSetID string, testCaseIDs []string) error DeleteTestSet(ctx context.Context, testSetID string) error }
type TestHooks ¶
type TestHooks interface { SimulateRequest(ctx context.Context, appID uint64, tc *models.TestCase, testSetID string) (*models.HTTPResp, error) BeforeTestSetRun(ctx context.Context, testSetID string) error AfterTestSetRun(ctx context.Context, testRunID, testSetID string, coverage models.TestCoverage, totalTestSets int, status bool) error }
var HookImpl TestHooks
type TestReportVerdict ¶
type TestReportVerdict struct {
// contains filtered or unexported fields
}
type TestSetConfig ¶
type ValidatedJSON ¶
type ValidatedJSON struct {
// contains filtered or unexported fields
}
func ValidateAndMarshalJSON ¶
func ValidateAndMarshalJSON(log *zap.Logger, exp, act *string) (ValidatedJSON, error)