Skip to content

Commit

Permalink
fix: use require instead of t.Fatal(err) in tests/e2e package
Browse files Browse the repository at this point in the history
Signed-off-by: Matthieu MOREL <[email protected]>
  • Loading branch information
mmorel-35 committed Nov 1, 2024
1 parent 3de0018 commit c17a82e
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 121 deletions.
57 changes: 20 additions & 37 deletions tests/e2e/v3_curl_election_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,33 +40,24 @@ func testCurlV3Campaign(cx ctlCtx) {
Name: []byte("/election-prefix"),
Value: []byte("v1"),
})
if err != nil {
cx.t.Fatal(err)
}
require.NoError(cx.t, err)
cargs := e2e.CURLPrefixArgsCluster(cx.epc.Cfg, cx.epc.Procs[rand.Intn(cx.epc.Cfg.ClusterSize)], "POST", e2e.CURLReq{
Endpoint: "/v3/election/campaign",
Value: string(cdata),
})
lines, err := e2e.SpawnWithExpectLines(context.TODO(), cargs, cx.envMap, expect.ExpectedResponse{Value: `"leader":{"name":"`})
if err != nil {
cx.t.Fatalf("failed post campaign request (%v)", err)
}
require.NoErrorf(cx.t, err, "failed post campaign request")
if len(lines) != 1 {
cx.t.Fatalf("len(lines) expected 1, got %+v", lines)
}

var cresp campaignResponse
if err = json.Unmarshal([]byte(lines[0]), &cresp); err != nil {
cx.t.Fatalf("failed to unmarshal campaign response %v", err)
}
err = json.Unmarshal([]byte(lines[0]), &cresp)
require.NoErrorf(cx.t, err, "failed to unmarshal campaign response")
ndata, err := base64.StdEncoding.DecodeString(cresp.Leader.Name)
if err != nil {
cx.t.Fatalf("failed to decode leader key %v", err)
}
require.NoErrorf(cx.t, err, "failed to decode leader key")
kdata, err := base64.StdEncoding.DecodeString(cresp.Leader.Key)
if err != nil {
cx.t.Fatalf("failed to decode leader key %v", err)
}
require.NoErrorf(cx.t, err, "failed to decode leader key")

// observe
observeReq, err := json.Marshal(&epb.LeaderRequest{
Expand Down Expand Up @@ -100,16 +91,13 @@ func testCurlV3Campaign(cx ctlCtx) {
},
Value: []byte("v2"),
})
if err != nil {
cx.t.Fatal(err)
}
if err = e2e.CURLPost(cx.epc, e2e.CURLReq{
require.NoError(cx.t, err)
err = e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/election/proclaim",
Value: string(pdata),
Expected: expect.ExpectedResponse{Value: `"revision":`},
}); err != nil {
cx.t.Fatalf("failed post proclaim request (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post proclaim request")
}

func TestCurlV3ProclaimMissiongLeaderKeyNoTLS(t *testing.T) {
Expand All @@ -118,44 +106,39 @@ func TestCurlV3ProclaimMissiongLeaderKeyNoTLS(t *testing.T) {

func testCurlV3ProclaimMissiongLeaderKey(cx ctlCtx) {
pdata, err := json.Marshal(&epb.ProclaimRequest{Value: []byte("v2")})
if err != nil {
cx.t.Fatal(err)
}
if err = e2e.CURLPost(cx.epc, e2e.CURLReq{
require.NoError(cx.t, err)
err = e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/election/proclaim",
Value: string(pdata),
Expected: expect.ExpectedResponse{Value: `"message":"\"leader\" field must be provided"`},
}); err != nil {
cx.t.Fatalf("failed post proclaim request (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post proclaim request")
}

func TestCurlV3ResignMissiongLeaderKeyNoTLS(t *testing.T) {
testCtl(t, testCurlV3ResignMissiongLeaderKey, withCfg(*e2e.NewConfigNoTLS()))
}

func testCurlV3ResignMissiongLeaderKey(cx ctlCtx) {
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{
err := e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/election/resign",
Value: `{}`,
Expected: expect.ExpectedResponse{Value: `"message":"\"leader\" field must be provided"`},
}); err != nil {
cx.t.Fatalf("failed post resign request (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post resign request")
}

func TestCurlV3ElectionLeader(t *testing.T) {
testCtl(t, testCurlV3ElectionLeader, withCfg(*e2e.NewConfigNoTLS()))
}

func testCurlV3ElectionLeader(cx ctlCtx) {
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{
err := e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/election/leader",
Value: `{"name": "aGVsbG8="}`, // base64 encoded string "hello"
Expected: expect.ExpectedResponse{Value: `election: no leader`},
}); err != nil {
cx.t.Fatalf("testCurlV3ElectionLeader failed to get leader (%v)", err)
}
})
require.NoErrorf(cx.t, err, "testCurlV3ElectionLeader failed to get leader")
}

// to manually decode; JSON marshals integer fields with
Expand Down
42 changes: 15 additions & 27 deletions tests/e2e/v3_curl_lease_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import (
"fmt"
"testing"

"github.com/stretchr/testify/require"

pb "go.etcd.io/etcd/api/v3/etcdserverpb"
"go.etcd.io/etcd/tests/v3/framework/e2e"
)
Expand Down Expand Up @@ -66,9 +68,8 @@ func testCurlV3LeaseGrant(cx ctlCtx) {
expected: `"grantedTTL"`,
},
}
if err := CURLWithExpected(cx, tests); err != nil {
cx.t.Fatalf("testCurlV3LeaseGrant: %v", err)
}
err := CURLWithExpected(cx, tests)
require.NoErrorf(cx.t, err, "testCurlV3LeaseGrant")
}

func testCurlV3LeaseRevoke(cx ctlCtx) {
Expand All @@ -86,9 +87,8 @@ func testCurlV3LeaseRevoke(cx ctlCtx) {
expected: `"revision":"`,
},
}
if err := CURLWithExpected(cx, tests); err != nil {
cx.t.Fatalf("testCurlV3LeaseRevoke: %v", err)
}
err := CURLWithExpected(cx, tests)
require.NoErrorf(cx.t, err, "testCurlV3LeaseRevoke")
}

func testCurlV3LeaseLeases(cx ctlCtx) {
Expand All @@ -106,9 +106,8 @@ func testCurlV3LeaseLeases(cx ctlCtx) {
expected: gwLeaseIDExpected(leaseID),
},
}
if err := CURLWithExpected(cx, tests); err != nil {
cx.t.Fatalf("testCurlV3LeaseGrant: %v", err)
}
err := CURLWithExpected(cx, tests)
require.NoErrorf(cx.t, err, "testCurlV3LeaseGrant")
}

func testCurlV3LeaseKeepAlive(cx ctlCtx) {
Expand All @@ -126,9 +125,8 @@ func testCurlV3LeaseKeepAlive(cx ctlCtx) {
expected: gwLeaseIDExpected(leaseID),
},
}
if err := CURLWithExpected(cx, tests); err != nil {
cx.t.Fatalf("testCurlV3LeaseGrant: %v", err)
}
err := CURLWithExpected(cx, tests)
require.NoErrorf(cx.t, err, "testCurlV3LeaseGrant")
}

func gwLeaseIDExpected(leaseID int64) string {
Expand All @@ -138,44 +136,34 @@ func gwLeaseIDExpected(leaseID int64) string {
func gwLeaseTTLWithKeys(cx ctlCtx, leaseID int64) string {
d := &pb.LeaseTimeToLiveRequest{ID: leaseID, Keys: true}
s, err := e2e.DataMarshal(d)
if err != nil {
cx.t.Fatalf("gwLeaseTTLWithKeys: error (%v)", err)
}
require.NoErrorf(cx.t, err, "gwLeaseTTLWithKeys: error")
return s
}

func gwLeaseKeepAlive(cx ctlCtx, leaseID int64) string {
d := &pb.LeaseKeepAliveRequest{ID: leaseID}
s, err := e2e.DataMarshal(d)
if err != nil {
cx.t.Fatalf("gwLeaseKeepAlive: Marshal error (%v)", err)
}
require.NoErrorf(cx.t, err, "gwLeaseKeepAlive: Marshal error")
return s
}

func gwLeaseGrant(cx ctlCtx, leaseID int64, ttl int64) string {
d := &pb.LeaseGrantRequest{ID: leaseID, TTL: ttl}
s, err := e2e.DataMarshal(d)
if err != nil {
cx.t.Fatalf("gwLeaseGrant: Marshal error (%v)", err)
}
require.NoErrorf(cx.t, err, "gwLeaseGrant: Marshal error")
return s
}

func gwLeaseRevoke(cx ctlCtx, leaseID int64) string {
d := &pb.LeaseRevokeRequest{ID: leaseID}
s, err := e2e.DataMarshal(d)
if err != nil {
cx.t.Fatalf("gwLeaseRevoke: Marshal error (%v)", err)
}
require.NoErrorf(cx.t, err, "gwLeaseRevoke: Marshal error")
return s
}

func gwKVPutLease(cx ctlCtx, k string, v string, leaseID int64) string {
d := pb.PutRequest{Key: []byte(k), Value: []byte(v), Lease: leaseID}
s, err := e2e.DataMarshal(d)
if err != nil {
cx.t.Fatalf("gwKVPutLease: Marshal error (%v)", err)
}
require.NoErrorf(cx.t, err, "gwKVPutLease: Marshal error")
return s
}
7 changes: 3 additions & 4 deletions tests/e2e/v3_curl_lock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,10 @@ func testCurlV3LockOperations(cx ctlCtx) {
require.True(cx.t, ok)

// unlock
if err = e2e.CURLPost(cx.epc, e2e.CURLReq{
err = e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/lock/unlock",
Value: fmt.Sprintf(`{"key": "%v"}`, key),
Expected: expect.ExpectedResponse{Value: "revision"},
}); err != nil {
cx.t.Fatalf("testCurlV3LockOperations failed to execute unlock (%v)", err)
}
})
require.NoErrorf(cx.t, err, "testCurlV3LockOperations failed to execute unlock")
}
35 changes: 15 additions & 20 deletions tests/e2e/v3_curl_maintenance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,11 @@ func TestCurlV3MaintenanceAlarmMissiongAlarm(t *testing.T) {
}

func testCurlV3MaintenanceAlarmMissiongAlarm(cx ctlCtx) {
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{
err := e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/maintenance/alarm",
Value: `{"action": "ACTIVATE"}`,
}); err != nil {
cx.t.Fatalf("failed post maintenance alarm (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post maintenance alarm")
}

func TestCurlV3MaintenanceStatus(t *testing.T) {
Expand Down Expand Up @@ -67,15 +66,14 @@ func TestCurlV3MaintenanceDefragment(t *testing.T) {
}

func testCurlV3MaintenanceDefragment(cx ctlCtx) {
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{
err := e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/maintenance/defragment",
Value: "{}",
Expected: expect.ExpectedResponse{
Value: "{}",
},
}); err != nil {
cx.t.Fatalf("failed post maintenance defragment request: (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post maintenance defragment request")
}

func TestCurlV3MaintenanceHash(t *testing.T) {
Expand Down Expand Up @@ -125,45 +123,42 @@ func TestCurlV3MaintenanceSnapshot(t *testing.T) {
}

func testCurlV3MaintenanceSnapshot(cx ctlCtx) {
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{
err := e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/maintenance/snapshot",
Value: "{}",
Expected: expect.ExpectedResponse{
Value: `"result":{"blob":`,
},
}); err != nil {
cx.t.Fatalf("failed post maintenance snapshot request: (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post maintenance snapshot request")
}

func TestCurlV3MaintenanceMoveleader(t *testing.T) {
testCtl(t, testCurlV3MaintenanceMoveleader, withCfg(*e2e.NewConfigNoTLS()))
}

func testCurlV3MaintenanceMoveleader(cx ctlCtx) {
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{
err := e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/maintenance/transfer-leadership",
Value: `{"targetID": 123}`,
Expected: expect.ExpectedResponse{
Value: `"message":"etcdserver: bad leader transferee"`,
},
}); err != nil {
cx.t.Fatalf("failed post maintenance moveleader request: (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post maintenance moveleader request")
}

func TestCurlV3MaintenanceDowngrade(t *testing.T) {
testCtl(t, testCurlV3MaintenanceDowngrade, withCfg(*e2e.NewConfigNoTLS()))
}

func testCurlV3MaintenanceDowngrade(cx ctlCtx) {
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{
err := e2e.CURLPost(cx.epc, e2e.CURLReq{
Endpoint: "/v3/maintenance/downgrade",
Value: `{"action": 0, "version": "3.0"}`,
Expected: expect.ExpectedResponse{
Value: `"message":"etcdserver: invalid downgrade target version"`,
},
}); err != nil {
cx.t.Fatalf("failed post maintenance downgrade request: (%v)", err)
}
})
require.NoErrorf(cx.t, err, "failed post maintenance downgrade request")
}
21 changes: 6 additions & 15 deletions tests/e2e/v3_curl_maxstream_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ func TestCurlV3_MaxStreams_BelowLimit_NoTLS_Medium(t *testing.T) {

func TestCurlV3_MaxStreamsNoTLS_BelowLimit_Large(t *testing.T) {
f, err := setRLimit(10240)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer f()
testCurlV3MaxStream(t, false, withCfg(*e2e.NewConfigNoTLS()), withMaxConcurrentStreams(1000), withTestTimeout(200*time.Second))
}
Expand Down Expand Up @@ -92,9 +90,7 @@ func testCurlV3MaxStream(t *testing.T, reachLimit bool, opts ...ctlOption) {
// Step 2: create the cluster
t.Log("Creating an etcd cluster")
epc, err := e2e.NewEtcdProcessCluster(context.TODO(), t, e2e.WithConfig(&cx.cfg))
if err != nil {
t.Fatalf("Failed to start etcd cluster: %v", err)
}
require.NoErrorf(t, err, "Failed to start etcd cluster")
cx.epc = epc
cx.dataDir = epc.Procs[0].Config().DataDirPath

Expand Down Expand Up @@ -147,9 +143,7 @@ func submitConcurrentWatch(cx ctlCtx, number int, wgDone *sync.WaitGroup, closeC
Key: []byte("foo"),
},
})
if err != nil {
cx.t.Fatal(err)
}
require.NoError(cx.t, err)

var wgSchedule sync.WaitGroup

Expand Down Expand Up @@ -194,9 +188,8 @@ func submitConcurrentWatch(cx ctlCtx, number int, wgDone *sync.WaitGroup, closeC
go func(i int) {
defer wgDone.Done()

if err := createWatchConnection(); err != nil {
cx.t.Fatalf("testCurlV3MaxStream watch failed: %d, error: %v", i, err)
}
err := createWatchConnection()
require.NoErrorf(cx.t, err, "testCurlV3MaxStream watch failed: %d", i)
}(i)
}

Expand All @@ -209,9 +202,7 @@ func submitRangeAfterConcurrentWatch(cx ctlCtx, expectedValue string) {
rangeData, err := json.Marshal(&pb.RangeRequest{
Key: []byte("foo"),
})
if err != nil {
cx.t.Fatal(err)
}
require.NoError(cx.t, err)

cx.t.Log("Submitting range request...")
if err := e2e.CURLPost(cx.epc, e2e.CURLReq{Endpoint: "/v3/kv/range", Value: string(rangeData), Expected: expect.ExpectedResponse{Value: expectedValue}, Timeout: 5}); err != nil {
Expand Down
Loading

0 comments on commit c17a82e

Please sign in to comment.