From 5bb2cf35abc3f1c2eab2ad015ae9f9c522ea5bc9 Mon Sep 17 00:00:00 2001 From: healthykim Date: Thu, 19 Mar 2026 03:10:51 +0900 Subject: [PATCH] remove receipt tests in peer_test.go --- eth/protocols/eth/peer_test.go | 331 --------------------------------- 1 file changed, 331 deletions(-) diff --git a/eth/protocols/eth/peer_test.go b/eth/protocols/eth/peer_test.go index 6297dbb51c..81b762452e 100644 --- a/eth/protocols/eth/peer_test.go +++ b/eth/protocols/eth/peer_test.go @@ -21,17 +21,11 @@ package eth import ( "crypto/rand" - "math/big" "testing" - "time" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" ) // testPeer is a simulated peer to allow testing direct network calls. @@ -94,328 +88,3 @@ func TestPeerSet(t *testing.T) { t.Fatalf("bad size") } } - -func TestPartialReceipt(t *testing.T) { - gen := func(_ int, g *core.BlockGen) { - signer := types.HomesteadSigner{} - - for range 4 { - tx, _ := types.SignTx(types.NewTransaction(g.TxNonce(testAddr), testAddr, big.NewInt(10), params.TxGas, g.BaseFee(), nil), signer, testKey) - g.AddTx(tx) - } - } - - backend := newTestBackendWithGenerator(4, true, true, gen) - defer backend.close() - - app, net := p2p.MsgPipe() - var id enode.ID - if _, err := rand.Read(id[:]); err != nil { - t.Fatalf("failed to create random peer: %v", err) - } - - peer := NewPeer(ETH70, p2p.NewPeer(id, "peer", nil), net, nil, nil) - - packetCh := make(chan *GetReceiptsPacket70, 1) - go func() { - for { - msg, err := app.ReadMsg() - if err != nil { - return - } - if msg.Code == GetReceiptsMsg { - var pkt GetReceiptsPacket70 - if err := msg.Decode(&pkt); err == nil { - select { - case packetCh <- &pkt: - default: - } - } - } - msg.Discard() - } - }() - - hashes := []common.Hash{ - backend.chain.GetBlockByNumber(1).Hash(), - backend.chain.GetBlockByNumber(2).Hash(), - backend.chain.GetBlockByNumber(3).Hash(), - backend.chain.GetBlockByNumber(4).Hash(), - } - gasUsed := []uint64{ - backend.chain.GetBlockByNumber(1).GasUsed(), - backend.chain.GetBlockByNumber(2).GasUsed(), - backend.chain.GetBlockByNumber(3).GasUsed(), - backend.chain.GetBlockByNumber(4).GasUsed(), - } - timestamps := []uint64{ - backend.chain.GetBlockByNumber(1).Time(), - backend.chain.GetBlockByNumber(2).Time(), - backend.chain.GetBlockByNumber(3).Time(), - backend.chain.GetBlockByNumber(4).Time(), - } - - sink := make(chan *Response, 1) - req, err := peer.RequestReceipts(hashes, gasUsed, timestamps, sink) - if err != nil { - t.Fatalf("RequestReceipts failed: %v", err) - } - select { - case _ = <-packetCh: - case <-time.After(2 * time.Second): - t.Fatalf("timeout waiting for request packet") - } - - receipts := []Receipt{ - {GasUsed: 21_000, Logs: rlp.RawValue(make([]byte, 1))}, - } - logReceipts := []Receipt{ - {GasUsed: 21_000, Logs: rlp.RawValue(make([]byte, 1))}, - {GasUsed: 21_000, Logs: rlp.RawValue(make([]byte, 1))}, - {GasUsed: 21_000, Logs: rlp.RawValue(make([]byte, 1))}, - } - delivery := &ReceiptsPacket70{ - RequestId: req.id, - LastBlockIncomplete: true, - List: encodeRL([]*ReceiptList{ - { - items: encodeRL(receipts), - }, - { - items: encodeRL(receipts), - }, - }), - } - - receiptList, _ := delivery.List.Items() - if err := peer.bufferReceipts(delivery.RequestId, receiptList, delivery.LastBlockIncomplete, backend); err != nil { - t.Fatalf("first bufferReceipts failed: %v", err) - } - - if err := peer.requestPartialReceipts(req.id); err != nil { - t.Fatalf("requestPartialReceipts failed: %v", err) - } - - var rereq *GetReceiptsPacket70 - select { - case rereq = <-packetCh: - case <-time.After(2 * time.Second): - t.Fatalf("timeout waiting for re-request packet") - } - - buffer, ok := peer.receiptBuffer[rereq.RequestId] - if !ok { - t.Fatalf("receiptBuffer should buffer incomplete receipts") - } - if rereq.FirstBlockReceiptIndex != uint64(buffer.list[len(buffer.list)-1].items.Len()) { - t.Fatalf("unexpected FirstBlockReceiptIndex, got %d want %d", rereq.FirstBlockReceiptIndex, buffer.list[len(buffer.list)-1].items.Len()) - } - - delivery = &ReceiptsPacket70{ - RequestId: req.id, - LastBlockIncomplete: true, - List: encodeRL([]*ReceiptList{ - { - items: encodeRL(receipts), - }, - }), - } - receiptLists, _ := delivery.List.Items() - if err := peer.bufferReceipts(delivery.RequestId, receiptLists, delivery.LastBlockIncomplete, backend); err != nil { - t.Fatalf("second bufferReceipts failed: %v", err) - } - - if err := peer.requestPartialReceipts(req.id); err != nil { - t.Fatalf("requestPartialReceipts failed: %v", err) - } - - select { - case rereq = <-packetCh: - case <-time.After(2 * time.Second): - t.Fatalf("timeout waiting for re-request packet") - } - - buffer, ok = peer.receiptBuffer[rereq.RequestId] - if !ok { - t.Fatalf("receiptBuffer should buffer incomplete receipts") - } - if rereq.FirstBlockReceiptIndex != uint64(buffer.list[len(buffer.list)-1].items.Len()) { - t.Fatalf("unexpected FirstBlockReceiptIndex, got %d want %d", rereq.FirstBlockReceiptIndex, buffer.list[len(buffer.list)-1].items.Len()) - } - if len(rereq.GetReceiptsRequest) != 3 { - t.Fatalf("wrong partial request range, got %d want %d", len(rereq.GetReceiptsRequest), 3) - } - - delivery = &ReceiptsPacket70{ - RequestId: rereq.RequestId, - LastBlockIncomplete: false, - List: encodeRL([]*ReceiptList{ - { - items: encodeRL(receipts), - }, - { - items: encodeRL(receipts), - }, - { - items: encodeRL(receipts), - }, - }), - } - receiptList, _ = delivery.List.Items() - if err := peer.bufferReceipts(delivery.RequestId, receiptList, delivery.LastBlockIncomplete, backend); err != nil { - t.Fatalf("third bufferReceipts failed: %v", err) - } - merged := peer.flushReceipts(rereq.RequestId) - if merged == nil { - t.Fatalf("flushReceipts should return merged receipt lists") - } - if _, ok := peer.receiptBuffer[rereq.RequestId]; ok { - t.Fatalf("receiptBuffer should be cleared after flush") - } - for i, list := range merged { - if i == 1 { - if list.items.Len() != len(logReceipts) { - t.Fatalf("wrong response buffering, got %d want %d", list.items.Len(), len(logReceipts)) - } - } else { - if list.items.Len() != len(receipts) { - t.Fatalf("wrong response buffering, got %d want %d", list.items.Len(), len(receipts)) - } - } - } -} - -func TestPartialReceiptFailure(t *testing.T) { - gen := func(_ int, g *core.BlockGen) { - signer := types.HomesteadSigner{} - - for range 4 { - tx, _ := types.SignTx(types.NewTransaction(g.TxNonce(testAddr), testAddr, big.NewInt(10), params.TxGas, g.BaseFee(), nil), signer, testKey) - g.AddTx(tx) - } - } - - backend := newTestBackendWithGenerator(4, true, true, gen) - defer backend.close() - - app, net := p2p.MsgPipe() - var id enode.ID - if _, err := rand.Read(id[:]); err != nil { - t.Fatalf("failed to create random peer: %v", err) - } - - peer := NewPeer(ETH70, p2p.NewPeer(id, "peer", nil), net, nil, nil) - - packetCh := make(chan *GetReceiptsPacket70, 1) - go func() { - for { - msg, err := app.ReadMsg() - if err != nil { - return - } - if msg.Code == GetReceiptsMsg { - var pkt GetReceiptsPacket70 - if err := msg.Decode(&pkt); err == nil { - select { - case packetCh <- &pkt: - default: - } - } - } - msg.Discard() - } - }() - - // If a peer delivers response which is never requested, the tracker should reject it. - delivery := &ReceiptsPacket70{ - RequestId: 66, - LastBlockIncomplete: true, - List: encodeRL([]*ReceiptList{ - { - items: encodeRL([]Receipt{ - {GasUsed: 21_000, Logs: rlp.RawValue(make([]byte, 1))}, - }), - }, - { - items: encodeRL([]Receipt{ - {GasUsed: 21_000, Logs: rlp.RawValue(make([]byte, 2))}, - }), - }, - }), - } - // If a peer deliverse excessive amount of receipts, it should also fail the validation - hashes := []common.Hash{ - backend.chain.GetBlockByNumber(1).Hash(), - backend.chain.GetBlockByNumber(2).Hash(), - backend.chain.GetBlockByNumber(3).Hash(), - backend.chain.GetBlockByNumber(4).Hash(), - } - gasUsed := []uint64{ - backend.chain.GetBlockByNumber(1).GasUsed(), - backend.chain.GetBlockByNumber(2).GasUsed(), - backend.chain.GetBlockByNumber(3).GasUsed(), - backend.chain.GetBlockByNumber(4).GasUsed(), - } - timestamps := []uint64{ - backend.chain.GetBlockByNumber(1).Time(), - backend.chain.GetBlockByNumber(2).Time(), - backend.chain.GetBlockByNumber(3).Time(), - backend.chain.GetBlockByNumber(4).Time(), - } - - // Case 1 ) The number of receipts exceeds maximum tx count - sink := make(chan *Response, 1) - req, err := peer.RequestReceipts(hashes, gasUsed, timestamps, sink) - if err != nil { - t.Fatalf("RequestReceipts failed: %v", err) - } - select { - case _ = <-packetCh: - case <-time.After(2 * time.Second): - t.Fatalf("timeout waiting for request packet") - } - - maxTxCount := backend.chain.GetBlockByNumber(1).GasUsed() / 21_000 - excessiveReceipts := []Receipt{{Logs: rlp.RawValue(make([]byte, 1))}} - for range maxTxCount { - excessiveReceipts = append(excessiveReceipts, Receipt{Logs: rlp.RawValue(make([]byte, 1))}) - } - delivery = &ReceiptsPacket70{ - RequestId: req.id, - LastBlockIncomplete: true, - List: encodeRL([]*ReceiptList{{ - items: encodeRL(excessiveReceipts), - }}), - } - receiptList, _ := delivery.List.Items() - err = peer.bufferReceipts(delivery.RequestId, receiptList, delivery.LastBlockIncomplete, backend) - if err == nil { - t.Fatal("Response with the excessive number of receipts should fail the validation") - } - - // Case 2 ) Total receipt size exceeds the block gas limit - req, err = peer.RequestReceipts(hashes, gasUsed, timestamps, sink) - if err != nil { - t.Fatalf("RequestReceipts failed: %v", err) - } - select { - case _ = <-packetCh: - case <-time.After(2 * time.Second): - t.Fatalf("timeout waiting for request packet") - } - maxReceiptSize := backend.chain.GetBlockByNumber(1).GasUsed() / params.LogDataGas - delivery = &ReceiptsPacket70{ - RequestId: req.id, - LastBlockIncomplete: true, - List: encodeRL([]*ReceiptList{{ - items: encodeRL([]Receipt{ - {Logs: rlp.RawValue(make([]byte, maxReceiptSize+1))}, - }), - }}), - } - receiptList, _ = delivery.List.Items() - err = peer.bufferReceipts(delivery.RequestId, receiptList, delivery.LastBlockIncomplete, backend) - if err == nil { - t.Fatal("Response with the large log size should fail the validation") - } -}