// Copyright 2021 The etcd Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package txn

import (
	"errors"
	"testing"
	"time"

	"go.uber.org/zap/zaptest"

	"go.etcd.io/raft/v3/raftpb"
)

func BenchmarkWarnOfExpensiveRequestNoLog(b *testing.B) {
	m := &raftpb.Message{
		Type:    0,
		To:      0,
		From:    1,
		Term:    2,
		LogTerm: 3,
		Index:   0,
		Entries: []raftpb.Entry{
			{
				Term:  0,
				Index: 0,
				Type:  0,
				Data:  make([]byte, 1024),
			},
		},
		Commit:     0,
		Snapshot:   nil,
		Reject:     false,
		RejectHint: 0,
		Context:    nil,
	}
	err := errors.New("benchmarking warn of expensive request")
	lg := zaptest.NewLogger(b)
	for n := 0; n < b.N; n++ {
		WarnOfExpensiveRequest(lg, time.Second, time.Now(), nil, m, err)
	}
}
