testreporters

package
v0.0.0-...-692deea Latest Latest
Warning

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

Go to latest
Published: May 6, 2024 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IntListStats

func IntListStats(in []int64) (float64, int64, int64, int64, int64)

intListStats helper calculates some statistics on an int list: avg, median, 90pct, 99pct, max

Types

type ChainlinkProfileTestReporter

type ChainlinkProfileTestReporter struct {
	Results []*client.ChainlinkProfileResults
	// contains filtered or unexported fields
}

func (*ChainlinkProfileTestReporter) SendSlackNotification

SendNotification hasn't been implemented for this test

func (*ChainlinkProfileTestReporter) SetNamespace

func (c *ChainlinkProfileTestReporter) SetNamespace(namespace string)

SetNamespace sets the namespace of the report for clean reports

func (*ChainlinkProfileTestReporter) WriteReport

func (c *ChainlinkProfileTestReporter) WriteReport(folderLocation string) error

WriteReport create the profile files

type FoundEvent

type FoundEvent struct {
	StartTime   time.Time
	BlockNumber uint64
	Address     string
	Answer      int64
	RoundID     uint64
}

FoundEvent is a single round update event

func (*FoundEvent) CSV

func (a *FoundEvent) CSV() [][]string

CSV returns a CSV representation of the event

func (*FoundEvent) Time

func (a *FoundEvent) Time() time.Time

type KeeperBenchmarkTestConfig

type KeeperBenchmarkTestConfig struct {
	Chainlink map[string]map[string]string `json:"chainlink"`
	Geth      map[string]map[string]string `json:"geth"`
}

type KeeperBenchmarkTestLoad

type KeeperBenchmarkTestLoad struct {
	TotalCheckGasPerBlock           int64   `json:"totalCheckGasPerBlock"`
	TotalPerformGasPerBlock         int64   `json:"totalPerformGasPerBlock"`
	AverageExpectedPerformsPerBlock float64 `json:"averageExpectedPerformsPerBlock"`
}

type KeeperBenchmarkTestMetrics

type KeeperBenchmarkTestMetrics struct {
	Delay                         map[string]interface{} `json:"delay"`
	PercentWithinSLA              float64                `json:"percentWithinSLA"`
	PercentRevert                 float64                `json:"percentRevert"`
	PercentStale                  float64                `json:"percentStale"`
	TotalTimesEligible            int64                  `json:"totalTimesEligible"`
	TotalTimesPerformed           int64                  `json:"totalTimesPerformed"`
	TotalStaleReports             int64                  `json:"totalStaleReports"`
	AverageActualPerformsPerBlock float64                `json:"averageActualPerformsPerBlock"`
}

type KeeperBenchmarkTestReport

type KeeperBenchmarkTestReport struct {
	RegistryAddress       string  `json:"registryAddress"`
	ContractAddress       string  `json:"contractAddress"`
	TotalEligibleCount    int64   `json:"totalEligibleCount"`
	TotalSLAMissedUpkeeps int64   `json:"totalSLAMissedUpkeeps"`
	TotalPerformedUpkeeps int64   `json:"totalPerformedUpkeeps"`
	AllCheckDelays        []int64 `json:"allCheckDelays"` // List of the delays since checkUpkeep for all performs
}

KeeperBenchmarkTestReport holds a report information for a single Upkeep Consumer contract

type KeeperBenchmarkTestReporter

type KeeperBenchmarkTestReporter struct {
	Reports                        []KeeperBenchmarkTestReport `json:"reports"`
	ReportMutex                    sync.Mutex
	AttemptedChainlinkTransactions []*client.TransactionsData `json:"attemptedChainlinkTransactions"`
	NumRevertedUpkeeps             int64
	NumStaleUpkeepReports          int64
	Summary                        KeeperBenchmarkTestSummary `json:"summary"`
	// contains filtered or unexported fields
}

KeeperBenchmarkTestReporter enables reporting on the keeper benchmark test

func (*KeeperBenchmarkTestReporter) SendSlackNotification

func (k *KeeperBenchmarkTestReporter) SendSlackNotification(t *testing.T, slackClient *slack.Client, grafanaUrlProvider testreporters.GrafanaURLProvider) error

SendSlackNotification sends a slack notification on the results of the test

func (*KeeperBenchmarkTestReporter) SetNamespace

func (k *KeeperBenchmarkTestReporter) SetNamespace(namespace string)

func (*KeeperBenchmarkTestReporter) WriteReport

func (k *KeeperBenchmarkTestReporter) WriteReport(folderLocation string) error

type KeeperBenchmarkTestSummary

type KeeperBenchmarkTestSummary struct {
	Load       KeeperBenchmarkTestLoad    `json:"load"`
	Config     KeeperBenchmarkTestConfig  `json:"config"`
	Metrics    KeeperBenchmarkTestMetrics `json:"metrics"`
	TestInputs map[string]interface{}     `json:"testInputs"`
	StartTime  int64                      `json:"startTime"`
	EndTime    int64                      `json:"endTime"`
}

type KeeperBlockTimeTestReport

type KeeperBlockTimeTestReport struct {
	ContractAddress        string  `json:"contractAddress"`
	TotalExpectedUpkeeps   int64   `json:"totalExpectedUpkeeps"`
	TotalSuccessfulUpkeeps int64   `json:"totalSuccessfulUpkeeps"`
	AllMissedUpkeeps       []int64 `json:"allMissedUpkeeps"` // List of each time an upkeep was missed, represented by how many blocks it was missed by
}

KeeperBlockTimeTestReport holds a report information for a single Upkeep Consumer contract

type KeeperBlockTimeTestReporter

type KeeperBlockTimeTestReporter struct {
	Reports                        []KeeperBlockTimeTestReport `json:"reports"`
	ReportMutex                    sync.Mutex
	AttemptedChainlinkTransactions []*client.TransactionsData `json:"attemptedChainlinkTransactions"`
	// contains filtered or unexported fields
}

KeeperBlockTimeTestReporter enables reporting on the keeper block time test

func (*KeeperBlockTimeTestReporter) SendSlackNotification

func (k *KeeperBlockTimeTestReporter) SendSlackNotification(t *testing.T, slackClient *slack.Client) error

SendSlackNotification sends a slack notification on the results of the test

func (*KeeperBlockTimeTestReporter) SetNamespace

func (k *KeeperBlockTimeTestReporter) SetNamespace(namespace string)

func (*KeeperBlockTimeTestReporter) WriteReport

func (k *KeeperBlockTimeTestReporter) WriteReport(folderLocation string) error

type OCRRoundState

type OCRRoundState struct {
	StartTime      time.Time                `toml:"startTime"`
	EndTime        time.Time                `toml:"endTime"` // Time when the round should end, only used for analysis
	Answer         int64                    `toml:"answer"`
	Anomalous      bool                     `toml:"anomalous"`   // Whether the round was anomalous
	FoundEvents    map[string][]*FoundEvent `toml:"foundEvents"` // Address -> FoundEvents, possible to have multiple found events per round, and need to call it out
	TimeLineEvents []TimeLineEvent          `toml:"timeLineEvents"`
	// contains filtered or unexported fields
}

OCRRoundState indicates that a round per contract should complete within this time with this answer

func (*OCRRoundState) CSV

func (e *OCRRoundState) CSV() [][]string

CSV returns a CSV representation of the test state and all events

func (*OCRRoundState) Time

func (e *OCRRoundState) Time() time.Time

func (*OCRRoundState) Validate

func (e *OCRRoundState) Validate() bool

Validate checks that 1. There is a FoundEvent for every address 2. There is only one FoundEvent for every address 3. The answer is correct

type OCRSoakTestReporter

type OCRSoakTestReporter struct {
	StartTime         time.Time
	AnomaliesDetected bool
	OCRVersion        string
	// contains filtered or unexported fields
}

OCRSoakTestReporter collates all OCRAnswerUpdated events into a single report

func (*OCRSoakTestReporter) RecordEvents

func (o *OCRSoakTestReporter) RecordEvents(testStates []*OCRRoundState, testIssues []*TestIssue)

RecordEvents takes in a list of test states and RPC issues, orders them, and records them in the timeline

func (*OCRSoakTestReporter) SendSlackNotification

func (o *OCRSoakTestReporter) SendSlackNotification(t *testing.T, slackClient *slack.Client, _ testreporters.GrafanaURLProvider) error

SendNotification sends a slack message to a slack webhook and uploads test artifacts

func (*OCRSoakTestReporter) SetNamespace

func (o *OCRSoakTestReporter) SetNamespace(namespace string)

SetNamespace sets the namespace of the report for clean reports

func (*OCRSoakTestReporter) WriteReport

func (o *OCRSoakTestReporter) WriteReport(folderLocation string) error

WriteReport writes OCR Soak test report to a CSV file and final report

type TestIssue

type TestIssue struct {
	StartTime time.Time `toml:"startTime"`
	Message   string    `toml:"message"`
}

TestIssue is a single RPC issue, either a disconnect or reconnect

func (*TestIssue) CSV

func (r *TestIssue) CSV() [][]string

func (*TestIssue) Time

func (r *TestIssue) Time() time.Time

type TimeLineEvent

type TimeLineEvent interface {
	Time() time.Time
	CSV() [][]string
}

TimeLineEvent represents a single event in the timeline

type VRFLoadTestMetrics

type VRFLoadTestMetrics struct {
	RequestCount                         *big.Int
	FulfilmentCount                      *big.Int
	AverageFulfillmentInMillions         *big.Int
	SlowestFulfillment                   *big.Int
	FastestFulfillment                   *big.Int
	P90FulfillmentBlockTime              float64
	P95FulfillmentBlockTime              float64
	AverageResponseTimeInSecondsMillions *big.Int
	SlowestResponseTimeInSeconds         *big.Int
	FastestResponseTimeInSeconds         *big.Int
}

todo - fix import cycle to avoid struct duplicate

type VRFV2PlusTestReporter

type VRFV2PlusTestReporter struct {
	TestType            string
	LoadTestMetrics     VRFLoadTestMetrics
	VRFv2PlusTestConfig types.VRFv2PlusTestConfig
}

func (*VRFV2PlusTestReporter) SendSlackNotification

func (o *VRFV2PlusTestReporter) SendSlackNotification(t *testing.T, slackClient *slack.Client, vtfv2PlusTestConfig types.VRFv2PlusTestConfig) error

SendSlackNotification sends a slack message to a slack webhook

func (*VRFV2PlusTestReporter) SetReportData

func (o *VRFV2PlusTestReporter) SetReportData(
	testType string,
	metrics VRFLoadTestMetrics,
	testConfig types.VRFv2PlusTestConfig,
)

type VRFV2TestReporter

type VRFV2TestReporter struct {
	TestType        string
	LoadTestMetrics VRFLoadTestMetrics
	VRFv2TestConfig types.VRFv2TestConfig
}

func (*VRFV2TestReporter) SendSlackNotification

func (o *VRFV2TestReporter) SendSlackNotification(t *testing.T, slackClient *slack.Client) error

SendSlackNotification sends a slack message to a slack webhook

func (*VRFV2TestReporter) SetReportData

func (o *VRFV2TestReporter) SetReportData(
	testType string,
	metrics VRFLoadTestMetrics,
	vrfv2TestConfig types.VRFv2TestConfig,
)

Jump to

Keyboard shortcuts

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