Skip to content
This repository was archived by the owner on May 29, 2024. It is now read-only.

Commit 02f53a3

Browse files
committed
Add e2e tests for sns event publishing
1 parent c1e3f97 commit 02f53a3

14 files changed

+160
-21
lines changed

Makefile

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ test:
3131

3232
.PHONY: test-e2e
3333
e2e-test:
34-
@ go test ./e2e/... -timeout $(TEST_LIMIT) -deploy-config ../.devnet/devnetL1.json -parallel=4 -v
34+
@docker compose up -d
35+
@go test ./e2e/... -timeout $(TEST_LIMIT) -deploy-config ../.devnet/devnetL1.json -parallel=4 -v
3536

3637
.PHONY: lint
3738
lint:

docker-compose.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
version: "3.8"
2+
3+
services:
4+
localstack:
5+
container_name: "${LOCALSTACK_DOCKER_NAME:-localstack-main}"
6+
image: localstack/localstack
7+
ports:
8+
- "127.0.0.1:4566:4566" # LocalStack Gateway
9+
- "127.0.0.1:4510-4559:4510-4559" # external services port range
10+
environment:
11+
# LocalStack configuration: https://docs.localstack.cloud/references/configuration/
12+
- DEBUG=${DEBUG:-0}
13+
volumes:
14+
- "/var/run/docker.sock:/var/run/docker.sock"
15+
- "./scripts/localstack-setup.sh:/etc/localstack/init/ready.d/script.sh"

e2e/alerting_test.go

+24-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package e2e_test
33
import (
44
"context"
55
"math/big"
6+
67
"testing"
78
"time"
89

@@ -17,11 +18,17 @@ import (
1718
"github.com/stretchr/testify/require"
1819
)
1920

21+
const (
22+
MultiDirectiveTopicArn = "arn:aws:sns:us-east-1:000000000000:multi-directive-test-topic"
23+
CoolDownTopicArn = "arn:aws:sns:us-east-1:000000000000:alert-cooldown-test-topic"
24+
)
25+
2026
// TestMultiDirectiveRouting ... Tests the E2E flow of a contract event heuristic with high priority alerts all
2127
// necessary destinations
2228
func TestMultiDirectiveRouting(t *testing.T) {
2329

24-
ts := e2e.CreateSysTestSuite(t)
30+
ts := e2e.CreateSysTestSuite(t, MultiDirectiveTopicArn)
31+
defer ts.Close()
2532

2633
updateSig := "ConfigUpdate(uint256,uint8,bytes)"
2734
alertMsg := "System config gas config updated"
@@ -73,6 +80,12 @@ func TestMultiDirectiveRouting(t *testing.T) {
7380
return height != nil && height.Uint64() > receipt.BlockNumber.Uint64(), nil
7481
}))
7582

83+
sqsMessages, err := e2e.GetMessages(ts.AppCfg.AlertConfig.SNSConfig.Endpoint, "multi-directive-test-queue")
84+
require.NoError(t, err)
85+
86+
assert.Len(t, sqsMessages.Messages, 1, "Incorrect number of SNS messages sent")
87+
assert.Contains(t, *sqsMessages.Messages[0].Body, "contract_event", "System contract event alert was not sent")
88+
7689
slackPosts := ts.TestSlackSvr.SlackAlerts()
7790
pdPosts := ts.TestPagerDutyServer.PagerDutyAlerts()
7891

@@ -90,7 +103,7 @@ func TestMultiDirectiveRouting(t *testing.T) {
90103
// balance enforcement heuristic session on L2 network with a cooldown.
91104
func TestCoolDown(t *testing.T) {
92105

93-
ts := e2e.CreateSysTestSuite(t)
106+
ts := e2e.CreateSysTestSuite(t, CoolDownTopicArn)
94107
defer ts.Close()
95108

96109
alice := ts.Cfg.Secrets.Addresses().Alice
@@ -149,7 +162,7 @@ func TestCoolDown(t *testing.T) {
149162
receipt, err := wait.ForReceipt(context.Background(), ts.L2Client, drainAliceTx.Hash(), types.ReceiptStatusSuccessful)
150163
require.NoError(t, err)
151164

152-
require.NoError(t, wait.For(context.Background(), 500*time.Millisecond, func() (bool, error) {
165+
require.NoError(t, wait.For(context.Background(), 1000*time.Millisecond, func() (bool, error) {
153166
id := ids[0].PathID
154167
height, err := ts.Subsystems.PathHeight(id)
155168
if err != nil {
@@ -159,15 +172,23 @@ func TestCoolDown(t *testing.T) {
159172
return height != nil && height.Uint64() > receipt.BlockNumber.Uint64(), nil
160173
}))
161174

175+
time.Sleep(1 * time.Second)
176+
162177
// Check that the balance enforcement was triggered using the mocked server cache.
163178
posts := ts.TestSlackSvr.SlackAlerts()
164179

165180
require.Equal(t, 1, len(posts), "No balance enforcement alert was sent")
166181
assert.Contains(t, posts[0].Text, "balance_enforcement", "Balance enforcement alert was not sent")
167182
assert.Contains(t, posts[0].Text, alertMsg)
168183

184+
sqsMessages, err := e2e.GetMessages(ts.AppCfg.AlertConfig.SNSConfig.Endpoint, "alert-cooldown-test-queue")
185+
assert.NoError(t, err)
186+
assert.Len(t, sqsMessages.Messages, 1, "Incorrect number of SNS messages sent")
187+
assert.Contains(t, *sqsMessages.Messages[0].Body, "balance_enforcement", "Balance enforcement alert was not sent")
188+
169189
// Ensure that no new alerts are sent for provided cooldown period.
170190
time.Sleep(1 * time.Second)
171191
posts = ts.TestSlackSvr.SlackAlerts()
172192
assert.Equal(t, 1, len(posts), "No alerts should be sent after the transaction is sent")
193+
173194
}

e2e/heuristic_test.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
// balance enforcement heuristic session on L2 network.
3232
func TestBalanceEnforcement(t *testing.T) {
3333

34-
ts := e2e.CreateSysTestSuite(t)
34+
ts := e2e.CreateSysTestSuite(t, "")
3535
defer ts.Close()
3636

3737
alice := ts.Cfg.Secrets.Addresses().Alice
@@ -158,7 +158,7 @@ func TestBalanceEnforcement(t *testing.T) {
158158
// contract event heuristic session on L1 network.
159159
func TestContractEvent(t *testing.T) {
160160

161-
ts := e2e.CreateSysTestSuite(t)
161+
ts := e2e.CreateSysTestSuite(t, "")
162162
defer ts.Close()
163163

164164
// The string declaration of the event we want to listen for.
@@ -226,7 +226,7 @@ func TestContractEvent(t *testing.T) {
226226
// safety heuristic session. This test ensures that an alert is produced in the event
227227
// of a highly suspicious withdrawal.
228228
func TestWithdrawalSafetyAllInvariants(t *testing.T) {
229-
ts := e2e.CreateSysTestSuite(t)
229+
ts := e2e.CreateSysTestSuite(t, "")
230230
defer ts.Close()
231231

232232
opts, err := bind.NewKeyedTransactorWithChainID(ts.Cfg.Secrets.Alice, ts.Cfg.L2ChainIDBig())
@@ -357,7 +357,7 @@ func TestWithdrawalSafetyAllInvariants(t *testing.T) {
357357
// of a normal tx
358358
func TestWithdrawalSafetyNoInvariants(t *testing.T) {
359359

360-
ts := e2e.CreateSysTestSuite(t)
360+
ts := e2e.CreateSysTestSuite(t, "")
361361
defer ts.Close()
362362

363363
ids, err := ts.App.BootStrap([]*models.SessionRequestParams{
@@ -439,7 +439,7 @@ func TestWithdrawalSafetyNoInvariants(t *testing.T) {
439439
// TestFaultDetector ... Ensures that an alert is produced in the presence of a faulty L2Output root
440440
// on the L1 Optimism portal contract.
441441
func TestFaultDetector(t *testing.T) {
442-
ts := e2e.CreateSysTestSuite(t)
442+
ts := e2e.CreateSysTestSuite(t, "")
443443
defer ts.Close()
444444

445445
// Generate transactor opts

e2e/setup.go

+45-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import (
66
"os"
77
"testing"
88

9+
"github.com/aws/aws-sdk-go/aws"
10+
"github.com/aws/aws-sdk-go/aws/session"
11+
"github.com/aws/aws-sdk-go/service/sqs"
912
"github.com/base-org/pessimism/internal/alert"
1013
"github.com/base-org/pessimism/internal/api/server"
1114
"github.com/base-org/pessimism/internal/app"
@@ -19,11 +22,11 @@ import (
1922
"github.com/base-org/pessimism/internal/state"
2023
"github.com/base-org/pessimism/internal/subsystem"
2124
ix_node "github.com/ethereum-optimism/optimism/indexer/node"
22-
"github.com/golang/mock/gomock"
23-
2425
op_e2e "github.com/ethereum-optimism/optimism/op-e2e"
2526
"github.com/ethereum/go-ethereum/ethclient"
2627
"github.com/ethereum/go-ethereum/log"
28+
"github.com/golang/mock/gomock"
29+
"go.uber.org/zap"
2730
)
2831

2932
// SysTestSuite ... Stores all the information needed to run an e2e system test
@@ -51,7 +54,7 @@ type SysTestSuite struct {
5154
}
5255

5356
// CreateSysTestSuite ... Creates a new SysTestSuite
54-
func CreateSysTestSuite(t *testing.T) *SysTestSuite {
57+
func CreateSysTestSuite(t *testing.T, topicArn string) *SysTestSuite {
5558
t.Log("Creating system test suite")
5659
ctx := context.Background()
5760
logging.New(core.Development)
@@ -112,11 +115,16 @@ func CreateSysTestSuite(t *testing.T) *SysTestSuite {
112115

113116
pagerdutyServer := NewTestPagerDutyServer("127.0.0.1", 0)
114117

118+
os.Setenv("AWS_REGION", "us-east-1") //nolint:tenv // Cannot use t.SetEnv in parallel tests
119+
os.Setenv("AWS_SECRET_ACCESS_KEY", "test") //nolint:tenv // Cannot use t.SetEnv in parallel tests
120+
os.Setenv("AWS_ACCESS_KEY_ID", "test") //nolint:tenv // Cannot use t.SetEnv in parallel tests
121+
115122
slackURL := fmt.Sprintf("http://127.0.0.1:%d", slackServer.Port)
116123
pagerdutyURL := fmt.Sprintf("http://127.0.0.1:%d", pagerdutyServer.Port)
117124

118125
appCfg.AlertConfig.PagerdutyAlertEventsURL = pagerdutyURL
119126
appCfg.AlertConfig.RoutingParams = DefaultRoutingParams(core.StringFromEnv(slackURL))
127+
appCfg.AlertConfig.SNSConfig.TopicArn = topicArn
120128

121129
pess, kill, err := app.NewPessimismApp(ctx, appCfg)
122130
if err != nil {
@@ -166,7 +174,7 @@ func DefaultTestConfig() *config.Config {
166174
PagerdutyAlertEventsURL: "",
167175
RoutingCfgPath: "",
168176
SNSConfig: &client.SNSConfig{
169-
TopicArn: "e2e-test-arn",
177+
Endpoint: "http://localhost:4566",
170178
},
171179
},
172180
EngineConfig: &engine.Config{
@@ -189,6 +197,39 @@ func DefaultTestConfig() *config.Config {
189197
}
190198
}
191199

200+
func GetMessages(endpoint string, queueName string) (*sqs.ReceiveMessageOutput, error) {
201+
sess, err := session.NewSession(&aws.Config{
202+
Endpoint: aws.String(endpoint),
203+
})
204+
if err != nil {
205+
logging.NoContext().Error("failed to create AWS session", zap.Error(err))
206+
return nil, err
207+
}
208+
209+
svc := sqs.New(sess)
210+
urlResult, err := svc.GetQueueUrl(&sqs.GetQueueUrlInput{
211+
QueueName: aws.String(queueName),
212+
})
213+
if err != nil {
214+
return nil, err
215+
}
216+
217+
queueURL := urlResult.QueueUrl
218+
msgResult, err := svc.ReceiveMessage(&sqs.ReceiveMessageInput{
219+
QueueUrl: queueURL,
220+
MaxNumberOfMessages: aws.Int64(10),
221+
WaitTimeSeconds: aws.Int64(5),
222+
MessageAttributeNames: []*string{
223+
aws.String(sqs.QueueAttributeNameAll),
224+
},
225+
})
226+
if err != nil {
227+
return nil, err
228+
}
229+
230+
return msgResult, nil
231+
}
232+
192233
// DefaultRoutingParams ... Returns a default routing params configuration for testing
193234
func DefaultRoutingParams(slackURL core.StringFromEnv) *core.AlertRoutingParams {
194235
return &core.AlertRoutingParams{

go.mod

+13-1
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,17 @@ require (
5151
github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect
5252
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
5353
github.com/deepmap/oapi-codegen v1.8.2 // indirect
54+
github.com/distribution/reference v0.5.0 // indirect
5455
github.com/dlclark/regexp2 v1.7.0 // indirect
56+
github.com/docker/docker v25.0.2+incompatible // indirect
57+
github.com/docker/go-connections v0.5.0 // indirect
5558
github.com/docker/go-units v0.5.0 // indirect
5659
github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 // indirect
5760
github.com/elastic/gosigar v0.14.2 // indirect
5861
github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 // indirect
5962
github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20231001123245-7b48d3818686 // indirect
6063
github.com/ethereum/c-kzg-4844 v0.3.1 // indirect
64+
github.com/felixge/httpsnoop v1.0.4 // indirect
6165
github.com/fjl/memsize v0.0.1 // indirect
6266
github.com/flynn/noise v1.0.0 // indirect
6367
github.com/francoispqt/gojay v1.2.13 // indirect
@@ -66,6 +70,8 @@ require (
6670
github.com/getsentry/sentry-go v0.18.0 // indirect
6771
github.com/go-chi/chi/v5 v5.0.10 // indirect
6872
github.com/go-chi/docgen v1.2.0 // indirect
73+
github.com/go-logr/logr v1.4.1 // indirect
74+
github.com/go-logr/stdr v1.2.2 // indirect
6975
github.com/go-ole/go-ole v1.2.6 // indirect
7076
github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect
7177
github.com/go-stack/stack v1.8.1 // indirect
@@ -75,7 +81,7 @@ require (
7581
github.com/gogo/protobuf v1.3.2 // indirect
7682
github.com/golang-jwt/jwt/v4 v4.4.2 // indirect
7783
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
78-
github.com/google/go-cmp v0.5.9 // indirect
84+
github.com/google/go-cmp v0.6.0 // indirect
7985
github.com/google/gopacket v1.1.19 // indirect
8086
github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect
8187
github.com/gorilla/websocket v1.5.0 // indirect
@@ -150,6 +156,8 @@ require (
150156
github.com/multiformats/go-varint v0.0.7 // indirect
151157
github.com/onsi/ginkgo/v2 v2.12.0 // indirect
152158
github.com/onsi/gomega v1.28.0 // indirect
159+
github.com/opencontainers/go-digest v1.0.0 // indirect
160+
github.com/opencontainers/image-spec v1.0.2 // indirect
153161
github.com/opencontainers/runtime-spec v1.1.0 // indirect
154162
github.com/opentracing/opentracing-go v1.2.0 // indirect
155163
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
@@ -180,6 +188,10 @@ require (
180188
github.com/urfave/cli/v2 v2.25.7 // indirect
181189
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
182190
github.com/yusufpapurcu/wmi v1.2.2 // indirect
191+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect
192+
go.opentelemetry.io/otel v1.22.0 // indirect
193+
go.opentelemetry.io/otel/metric v1.22.0 // indirect
194+
go.opentelemetry.io/otel/trace v1.22.0 // indirect
183195
go.uber.org/dig v1.17.0 // indirect
184196
go.uber.org/fx v1.20.0 // indirect
185197
go.uber.org/multierr v1.11.0 // indirect

go.sum

+27
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,17 @@ github.com/dgraph-io/ristretto v0.0.2 h1:a5WaUrDa0qm0YrAAS1tUykT5El3kt62KNZZeMxQ
150150
github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
151151
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
152152
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
153+
github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
154+
github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
153155
github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
154156
github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo=
155157
github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
156158
github.com/docker/docker v24.0.5+incompatible h1:WmgcE4fxyI6EEXxBRxsHnZXrO1pQ3smi0k/jho4HLeY=
157159
github.com/docker/docker v24.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
160+
github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY=
161+
github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
162+
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
163+
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
158164
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
159165
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
160166
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
@@ -186,6 +192,8 @@ github.com/ethereum/c-kzg-4844 v0.3.1 h1:sR65+68+WdnMKxseNWxSJuAv2tsUrihTpVBTfM/
186192
github.com/ethereum/c-kzg-4844 v0.3.1/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
187193
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
188194
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
195+
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
196+
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
189197
github.com/fjl/memsize v0.0.1 h1:+zhkb+dhUgx0/e+M8sF0QqiouvMQUiKR+QYvdxIOKcQ=
190198
github.com/fjl/memsize v0.0.1/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
191199
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
@@ -227,8 +235,13 @@ github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxI
227235
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
228236
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
229237
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
238+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
230239
github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
231240
github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
241+
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
242+
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
243+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
244+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
232245
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
233246
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
234247
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
@@ -298,6 +311,8 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
298311
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
299312
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
300313
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
314+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
315+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
301316
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
302317
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
303318
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -645,6 +660,10 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl
645660
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
646661
github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c=
647662
github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8=
663+
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
664+
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
665+
github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=
666+
github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
648667
github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
649668
github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
650669
github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
@@ -816,6 +835,14 @@ github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPR
816835
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
817836
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
818837
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
838+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08=
839+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw=
840+
go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y=
841+
go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI=
842+
go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg=
843+
go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY=
844+
go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0=
845+
go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo=
819846
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
820847
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
821848
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=

0 commit comments

Comments
 (0)