github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/manager/state/raft/transport/peer_test.go (about)

     1  package transport
     2  
     3  import (
     4  	"context"
     5  	"math"
     6  	"testing"
     7  
     8  	"github.com/coreos/etcd/raft/raftpb"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  // Test SplitSnapshot() for different snapshot sizes.
    13  func TestSplitSnapshot(t *testing.T) {
    14  	ctx, cancel := context.WithCancel(context.Background())
    15  	defer cancel()
    16  	var raftMsg raftpb.Message
    17  	raftMsg.Type = raftpb.MsgSnap
    18  	snaphotSize := 8 << 20
    19  	raftMsg.Snapshot.Data = make([]byte, snaphotSize)
    20  
    21  	raftMessagePayloadSize := raftMessagePayloadSize(&raftMsg)
    22  
    23  	check := func(size, expectedNumMsgs int) {
    24  		raftMsg.Snapshot.Data = make([]byte, size)
    25  		msgs := splitSnapshotData(ctx, &raftMsg)
    26  		assert.Equal(t, expectedNumMsgs, len(msgs), "unexpected number of messages")
    27  	}
    28  
    29  	check(snaphotSize, int(math.Ceil(float64(snaphotSize)/float64(raftMessagePayloadSize))))
    30  	check(raftMessagePayloadSize, 1)
    31  	check(raftMessagePayloadSize-1, 1)
    32  	check(raftMessagePayloadSize*2, 2)
    33  	check(0, 0)
    34  
    35  	raftMsg.Type = raftpb.MsgApp
    36  	check(0, 0)
    37  }