Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
86ed975
create lazy aggregation adr proposal
Apr 29, 2025
ed5dce1
ammend based on feedback
Apr 30, 2025
ee3550d
Merge branch 'main' into marko/lazy-aggregation-adr
Apr 30, 2025
e7472d7
Update specs/lazy-adr/adr-021-lazy-aggregation.md
tac0turtle Apr 30, 2025
10ea3ae
Merge branch 'main' into marko/lazy-aggregation-adr
tac0turtle May 2, 2025
cb5fb90
lint fix
May 2, 2025
f68588b
Merge branch 'main' into marko/lazy-aggregation-adr
tac0turtle May 2, 2025
7fb554a
chore: empty blocks & lazy aggrgation (#2243)
tac0turtle May 2, 2025
4219dd2
remove unused
May 2, 2025
4949f09
reset block timer when no txs are present
May 2, 2025
95897a4
Simplify
Manav-Aggarwal May 2, 2025
0ea7657
Fix test
Manav-Aggarwal May 2, 2025
4d4d9d2
Add reaper logic in adr
Manav-Aggarwal May 2, 2025
b19a14e
Implement execValidate and insert back dataHash
Manav-Aggarwal May 2, 2025
d938c88
Add batchValidation in retriever
Manav-Aggarwal May 2, 2025
71dec18
modify validation logic
Manav-Aggarwal May 2, 2025
5a74dc4
Add DA Includer Loop
Manav-Aggarwal May 2, 2025
446cd75
Fix test syntax
Manav-Aggarwal May 2, 2025
eccf399
Add Validate method for signed header
Manav-Aggarwal May 2, 2025
05d2888
setDAIncluded for sequencers too
Manav-Aggarwal May 2, 2025
609d51d
Fix first retriever test
Manav-Aggarwal May 3, 2025
6cb6b1b
Refactor retriever and fix more tests
Manav-Aggarwal May 3, 2025
f616f69
fixed all retriever tests
Manav-Aggarwal May 3, 2025
6648f6c
Add more tests to retriever and handle empty blobs
Manav-Aggarwal May 3, 2025
91c30a8
make fromProto more robust
Manav-Aggarwal May 3, 2025
4dc7f9b
Add doc headers to add test methods in block package
Manav-Aggarwal May 3, 2025
1bf36e6
Make TestProcessNextDAHeader_MultipleHeadersAndBatches more robust
Manav-Aggarwal May 3, 2025
fe160ce
Fix from rebase
Manav-Aggarwal May 3, 2025
8c3006a
fix publishBlock tests
Manav-Aggarwal May 3, 2025
a16e63b
Add daIncluderTests
Manav-Aggarwal May 3, 2025
66cc82d
enable t.Parallel in all block tests
Manav-Aggarwal May 3, 2025
66a34c8
go mod tidy everywhere
Manav-Aggarwal May 3, 2025
76f652b
catch errcheck in setfinal and add test for it in daIncluder
Manav-Aggarwal May 3, 2025
3925c86
fix lint
Manav-Aggarwal May 3, 2025
b1c076e
remove gci from golintci
Manav-Aggarwal May 3, 2025
c0f82b3
Fix first test in sync_test
Manav-Aggarwal May 3, 2025
58ce301
Fix all sync tests
Manav-Aggarwal May 4, 2025
4a9ec90
fix execution_test.go
Manav-Aggarwal May 4, 2025
4698368
Modify dummy
Manav-Aggarwal May 4, 2025
9bd183a
enhance daIncluder
Manav-Aggarwal May 4, 2025
b2d8260
fix first integration test
Manav-Aggarwal May 4, 2025
2e546df
add execValidateTests
Manav-Aggarwal Jun 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fixed all retriever tests
  • Loading branch information
Manav-Aggarwal committed May 3, 2025
commit f616f69bfade0dbf5b77ec00af2603129aab903d
46 changes: 40 additions & 6 deletions block/retriever_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,12 +283,17 @@ func TestProcessNextDAHeader_UnexpectedSequencer(t *testing.T) {
default:
// Expected behavior
}
select {
case <-manager.dataInCh:
t.Fatal("No data event should be received for unmarshal error")
default:
}

mockDAClient.AssertExpectations(t)
mockLogger.AssertExpectations(t)
}

// TestProcessNextDAHeader_FetchError_RetryFailure tests the processNextDAHeaderAndBlock function for a fetch error.
// TestProcessNextDAHeader_FetchError_RetryFailure tests the processNextDAHeaderAndData function for a fetch error.
func TestProcessNextDAHeader_FetchError_RetryFailure(t *testing.T) {
daHeight := uint64(40)
manager, mockDAClient, _, _, _, _, cancel := setupManagerForRetrieverTest(t, daHeight)
Expand All @@ -311,14 +316,20 @@ func TestProcessNextDAHeader_FetchError_RetryFailure(t *testing.T) {
default:
}

select {
case <-manager.dataInCh:
t.Fatal("No data event should be received for unmarshal error")
default:
}

mockDAClient.AssertExpectations(t)
}

// TestProcessNextDAHeader_HeaderAlreadySeen tests the processNextDAHeaderAndData function for a header that has already been seen.
func TestProcessNextDAHeader_HeaderAlreadySeen(t *testing.T) {
// TestProcessNextDAHeader_HeaderAndDataAlreadySeen tests the processNextDAHeaderAndData function for a header and data that has already been seen.
func TestProcessNextDAHeader_HeaderAndDataAlreadySeen(t *testing.T) {
daHeight := uint64(45)
blockHeight := uint64(120)
manager, mockDAClient, mockStore, _, headerCache, _, cancel := setupManagerForRetrieverTest(t, daHeight)
manager, mockDAClient, mockStore, _, headerCache, dataCache, cancel := setupManagerForRetrieverTest(t, daHeight)
defer cancel()

hc := types.HeaderConfig{
Expand All @@ -333,12 +344,30 @@ func TestProcessNextDAHeader_HeaderAlreadySeen(t *testing.T) {
headerBytes, err := proto.Marshal(headerProto)
require.NoError(t, err)

// Create valid batch (data)
blockConfig := types.BlockConfig{
Height: blockHeight,
NTxs: 2,
ProposerAddr: manager.genesis.ProposerAddress,
}
_, blockData, _ := types.GenerateRandomBlockCustom(&blockConfig, manager.genesis.ChainID)
batchProto := &v1.Batch{Txs: make([][]byte, len(blockData.Txs))}
for i, tx := range blockData.Txs {
batchProto.Txs[i] = tx
}
blockDataBytes, err := proto.Marshal(batchProto)
require.NoError(t, err)
dataHash := blockData.DACommitment().String()

// Mark both header and data as seen and DA included
headerCache.SetSeen(headerHash)
headerCache.SetDAIncluded(headerHash)
dataCache.SetSeen(dataHash)
dataCache.SetDAIncluded(dataHash)

mockDAClient.On("Retrieve", mock.Anything, daHeight).Return(coreda.ResultRetrieve{
BaseResult: coreda.BaseResult{Code: coreda.StatusSuccess},
Data: [][]byte{headerBytes},
Data: [][]byte{headerBytes, blockDataBytes},
}, nil).Once()

heightBytes := make([]byte, 8)
Expand All @@ -353,6 +382,11 @@ func TestProcessNextDAHeader_HeaderAlreadySeen(t *testing.T) {
t.Fatal("Header event should not be received if already seen")
case <-time.After(50 * time.Millisecond):
}
select {
case <-manager.dataInCh:
t.Fatal("Data event should not be received if already seen")
case <-time.After(50 * time.Millisecond):
}

mockDAClient.AssertExpectations(t)
mockStore.AssertExpectations(t)
Expand Down Expand Up @@ -424,7 +458,7 @@ func TestRetrieveLoop_ProcessError_Other(t *testing.T) {

errorLogged := make(chan struct{})
mockLogger.ExpectedCalls = nil
mockLogger.On("Error", "failed to retrieve block from DALC", mock.Anything).Run(func(args mock.Arguments) {
mockLogger.On("Error", "failed to retrieve data from DALC", mock.Anything, mock.Anything, mock.Anything).Run(func(args mock.Arguments) {
close(errorLogged)
}).Return().Once()
mockLogger.On("Debug", mock.Anything, mock.Anything).Maybe()
Expand Down