@@ -16,6 +16,7 @@ import (
1616 "github.com/stretchr/testify/mock"
1717 "github.com/stretchr/testify/require"
1818
19+ "github.com/evstack/ev-node/block/internal/cache"
1920 coresequencer "github.com/evstack/ev-node/core/sequencer"
2021 "github.com/evstack/ev-node/pkg/config"
2122 datypes "github.com/evstack/ev-node/pkg/da/types"
@@ -165,6 +166,62 @@ func TestNewSyncComponents_WithoutDA(t *testing.T) {
165166 assert .Nil (t , components .Submitter )
166167}
167168
169+ func TestNewSyncComponents_WithoutDADoesNotRestoreDAInclusionCache (t * testing.T ) {
170+ daConfig := config .DefaultConfig ()
171+ daConfig .DA .Address = "ws://da.example.invalid"
172+ require .True (t , daConfig .DAEnabled ())
173+
174+ rootDir := t .TempDir ()
175+ database , err := store .NewDefaultKVStore (rootDir , "data" , "ev-node" )
176+ require .NoError (t , err )
177+ diskStore := store .New (store .NewEvNodeKVStore (database ))
178+
179+ previousDAManager , err := cache .NewManager (daConfig , diskStore , zerolog .Nop ())
180+ require .NoError (t , err )
181+ previousDAManager .SetHeaderDAIncluded ("persisted-da-header" , 9001 , 42 )
182+ previousDAManager .SetDataDAIncluded ("persisted-da-data" , 9001 , 42 )
183+ require .NoError (t , previousDAManager .SaveToStore ())
184+ require .NoError (t , diskStore .Close ())
185+
186+ reopenedDatabase , err := store .NewDefaultKVStore (rootDir , "data" , "ev-node" )
187+ require .NoError (t , err )
188+ reopenedStore := store .New (store .NewEvNodeKVStore (reopenedDatabase ))
189+ t .Cleanup (func () {
190+ require .NoError (t , reopenedStore .Close ())
191+ })
192+
193+ p2pConfig := config .DefaultConfig ()
194+ require .False (t , p2pConfig .DAEnabled ())
195+
196+ components , err := NewSyncComponents (
197+ p2pConfig ,
198+ genesis.Genesis {
199+ ChainID : "da-to-p2p-repro" ,
200+ InitialHeight : 1 ,
201+ StartTime : time .Now (),
202+ ProposerAddress : []byte ("test-proposer" ),
203+ },
204+ reopenedStore ,
205+ testmocks .NewMockExecutor (t ),
206+ nil ,
207+ extmocks.NewMockStore [* types.P2PSignedHeader ](t ),
208+ extmocks.NewMockStore [* types.P2PData ](t ),
209+ noopDAHintAppender {},
210+ noopDAHintAppender {},
211+ zerolog .Nop (),
212+ NopMetrics (),
213+ DefaultBlockOptions (),
214+ nil ,
215+ )
216+ require .NoError (t , err )
217+ require .Nil (t , components .Submitter )
218+
219+ _ , headerLoaded := components .Cache .GetHeaderDAIncludedByHeight (42 )
220+ _ , dataLoaded := components .Cache .GetDataDAIncludedByHeight (42 )
221+ require .False (t , headerLoaded , "P2P-only startup must not restore persisted DA header state" )
222+ require .False (t , dataLoaded , "P2P-only startup must not restore persisted DA data state" )
223+ }
224+
168225func TestNewAggregatorComponents_Creation (t * testing.T ) {
169226 ds := sync .MutexWrap (datastore .NewMapDatastore ())
170227 memStore := store .New (ds )
0 commit comments