2023-03-28 22:48:58 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
2023-08-11 13:12:13 +00:00
|
|
|
// SPDX-License-Identifier: BUSL-1.1
|
2023-03-28 22:48:58 +00:00
|
|
|
|
2022-11-01 19:03:23 +00:00
|
|
|
package assert
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/hashicorp/consul/api"
|
|
|
|
"github.com/hashicorp/consul/sdk/testutil/retry"
|
2023-07-18 23:41:30 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
2022-11-01 19:03:23 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// PeeringStatus verifies the peering connection is the specified state with a default retry.
|
|
|
|
func PeeringStatus(t *testing.T, client *api.Client, peerName string, status api.PeeringState) {
|
2023-05-16 19:57:24 +00:00
|
|
|
PeeringStatusOpts(t, client, peerName, status, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
// PeeringStatusOpts verifies the peering connection is the specified
|
|
|
|
// state with a default retry with options.
|
|
|
|
func PeeringStatusOpts(t *testing.T, client *api.Client, peerName string, status api.PeeringState, opts *api.QueryOptions) {
|
2022-11-01 19:03:23 +00:00
|
|
|
failer := func() *retry.Timer {
|
2022-12-15 21:31:12 +00:00
|
|
|
return &retry.Timer{Timeout: 180 * time.Second, Wait: defaultWait}
|
2022-11-01 19:03:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
retry.RunWith(failer(), t, func(r *retry.R) {
|
2023-05-16 19:57:24 +00:00
|
|
|
peering, _, err := client.Peerings().Read(context.Background(), peerName, opts)
|
2022-11-01 19:03:23 +00:00
|
|
|
if err != nil {
|
|
|
|
r.Fatal("error reading peering data")
|
|
|
|
}
|
2023-05-16 19:57:24 +00:00
|
|
|
if peering == nil {
|
|
|
|
r.Fatal("peering not found")
|
|
|
|
}
|
2022-11-01 19:03:23 +00:00
|
|
|
if status != peering.State {
|
|
|
|
r.Fatal("peering state did not match: got ", peering.State, " want ", status)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// PeeringExports verifies the correct number of exported services with a default retry.
|
|
|
|
func PeeringExports(t *testing.T, client *api.Client, peerName string, exports int) {
|
2023-05-16 19:57:24 +00:00
|
|
|
PeeringExportsOpts(t, client, peerName, exports, nil)
|
|
|
|
}
|
|
|
|
|
|
|
|
// PeeringExportsOpts verifies the correct number of exported services
|
|
|
|
// with a default retry with options.
|
|
|
|
func PeeringExportsOpts(t *testing.T, client *api.Client, peerName string, exports int, opts *api.QueryOptions) {
|
2022-11-01 19:03:23 +00:00
|
|
|
failer := func() *retry.Timer {
|
|
|
|
return &retry.Timer{Timeout: defaultTimeout, Wait: defaultWait}
|
|
|
|
}
|
|
|
|
|
|
|
|
retry.RunWith(failer(), t, func(r *retry.R) {
|
2023-05-16 19:57:24 +00:00
|
|
|
peering, _, err := client.Peerings().Read(context.Background(), peerName, opts)
|
2023-07-18 23:41:30 +00:00
|
|
|
require.Nil(r, err, "reading peering data")
|
|
|
|
require.NotNilf(r, peering, "peering not found %q", peerName)
|
|
|
|
assert.Len(r, peering.StreamStatus.ExportedServices, exports, "peering exported services")
|
2022-11-01 19:03:23 +00:00
|
|
|
})
|
|
|
|
}
|