@@ -31,6 +31,7 @@ import arcs.core.storage.FixedDriverFactory
3131import arcs.core.storage.ProxyMessage
3232import arcs.core.storage.RawReference
3333import arcs.core.storage.ReferenceModeStore
34+ import arcs.core.storage.StorageKey
3435import arcs.core.storage.StorageKeyManager
3536import arcs.core.storage.StoreOptions
3637import arcs.core.storage.UntypedActiveStore
@@ -45,6 +46,8 @@ import arcs.core.storage.keys.DATABASE_NAME_DEFAULT
4546import arcs.core.storage.keys.DatabaseStorageKey
4647import arcs.core.storage.referencemode.ReferenceModeStorageKey
4748import arcs.core.storage.testutil.testWriteBackProvider
49+ import arcs.core.testutil.IntInRange
50+ import arcs.core.testutil.runFuzzTest
4851import arcs.flags.BuildFlags
4952import arcs.jvm.util.JvmTime
5053import com.google.common.truth.Truth.assertThat
@@ -103,6 +106,23 @@ class WriteOnlyStoreDatabaseImplIntegrationTest {
103106 invariant_storeRoundTrip_sameAsCrdtModel(writeStore, readStore, ops)
104107 }
105108
109+ @Test
110+ fun writeOnlyStore_sequenceOfOps_readByReferenceModeStore_FuzzTest () = runFuzzTest {
111+ // Write in write-only-mode, read with ref-mode-store.
112+ val writeOnlyStack = StoresStack (
113+ createStore(true , TEST_KEY ),
114+ createStore(false , TEST_KEY )
115+ )
116+ // Write and read with ref-mode-store.
117+ val refModeStack = StoresStack (
118+ createStore(false , TEST_KEY_2 ),
119+ createStore(false , TEST_KEY_2 )
120+ )
121+ val ops = FixtureEntitiesOperationsGenerator (it, IntInRange (it, 1 , 20 ))
122+
123+ invariant_storeRoundTrip_sameAsCrdtModelReadBack(writeOnlyStack, refModeStack, ops())
124+ }
125+
106126 @Test
107127 fun writeOnlyStore_propagatesToDatabase () = runBlockingTest {
108128 val (writeStore, _) = createStores()
@@ -137,10 +157,10 @@ class WriteOnlyStoreDatabaseImplIntegrationTest {
137157 return writeStore to readStore
138158 }
139159
140- private suspend fun createStore (writeOnly : Boolean ) =
160+ private suspend fun createStore (writeOnly : Boolean , storageKey : StorageKey = TEST_KEY ) =
141161 ActiveStore <CrdtData , CrdtOperation , Any ?>(
142162 StoreOptions (
143- TEST_KEY ,
163+ storageKey ,
144164 CollectionType (EntityType (FixtureEntity .SCHEMA )),
145165 writeOnly = writeOnly
146166 ),
@@ -174,5 +194,9 @@ class WriteOnlyStoreDatabaseImplIntegrationTest {
174194 DatabaseStorageKey .Persistent (" entities" , HASH ),
175195 DatabaseStorageKey .Persistent (" set" , HASH )
176196 )
197+ private val TEST_KEY_2 = ReferenceModeStorageKey (
198+ DatabaseStorageKey .Persistent (" entities2" , HASH ),
199+ DatabaseStorageKey .Persistent (" set2" , HASH )
200+ )
177201 }
178202}
0 commit comments