Skip to content

Commit 93bd41e

Browse files
Alice Johnsonarcs-c3po
authored andcommitted
Create new build flag: rms-bugs. This flag does not guard anything at the moment but it will guard the changes necessary to resolve several reference mode store bugs.
PiperOrigin-RevId: 363547340
1 parent 7defbcd commit 93bd41e

File tree

7 files changed

+45
-24
lines changed

7 files changed

+45
-24
lines changed

java/arcs/core/storage/testutil/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ arcs_kt_jvm_library(
3737
"//java/arcs/core/storage/referencemode",
3838
"//java/arcs/core/type",
3939
"//java/arcs/core/util/testutil",
40+
"//java/arcs/flags/testing",
4041
"//java/arcs/jvm/util",
4142
"//third_party/java/junit:junit-android",
4243
"//third_party/java/truth:truth-android",

java/arcs/core/storage/testutil/ReferenceModeStoreTestBase.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ import arcs.core.storage.referencemode.RefModeStoreOutput
3333
import arcs.core.storage.referencemode.ReferenceModeStorageKey
3434
import arcs.core.storage.toReference
3535
import arcs.core.util.testutil.LogRule
36+
import arcs.flags.testing.BuildFlagsRule
37+
import arcs.flags.testing.ParameterizedBuildFlags
3638
import com.google.common.truth.Truth.assertThat
3739
import kotlin.test.assertFailsWith
3840
import kotlinx.coroutines.CompletableDeferred
@@ -44,20 +46,25 @@ import kotlinx.coroutines.launch
4446
import kotlinx.coroutines.test.runBlockingTest
4547
import org.junit.Rule
4648
import org.junit.Test
49+
import org.junit.runner.RunWith
50+
import org.junit.runners.Parameterized
4751

4852
/**
4953
* Testing base class for [ReferenceModeStore] tests. Subclasses can override this class to run its
5054
* suite of tests for its own database backend.
5155
*/
56+
@RunWith(Parameterized::class)
5257
@OptIn(ExperimentalCoroutinesApi::class)
53-
abstract class ReferenceModeStoreTestBase {
58+
abstract class ReferenceModeStoreTestBase(private val parameters: ParameterizedBuildFlags) {
5459
// TODO(b/171729186): Move all tests that are shared between ReferenceModeStoreTest,
5560
// ReferenceModeStoreDatabaseIntegrationTest and ReferenceModeStoreDatabaseImplIntegrationTest
5661
// here.
5762

5863
@get:Rule
5964
val logRule = LogRule()
6065

66+
@get:Rule val rule = BuildFlagsRule.parameterized(parameters)
67+
6168
protected abstract val TEST_KEY: ReferenceModeStorageKey
6269

6370
protected abstract var driverFactory: DriverFactory

javatests/arcs/android/storage/ReferenceModeStoreDatabaseImplIntegrationTest.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,11 @@ import arcs.core.storage.driver.DatabaseDriverProvider
2626
import arcs.core.storage.keys.DatabaseStorageKey
2727
import arcs.core.storage.referencemode.ReferenceModeStorageKey
2828
import arcs.core.storage.testutil.ReferenceModeStoreTestBase
29-
import arcs.flags.testing.BuildFlagsRule
3029
import arcs.flags.testing.ParameterizedBuildFlags
3130
import kotlinx.coroutines.ExperimentalCoroutinesApi
3231
import kotlinx.coroutines.test.runBlockingTest
3332
import org.junit.After
3433
import org.junit.Before
35-
import org.junit.Rule
3634
import org.junit.runner.RunWith
3735
import org.robolectric.ParameterizedRobolectricTestRunner
3836

@@ -41,14 +39,15 @@ import org.robolectric.ParameterizedRobolectricTestRunner
4139
@RunWith(ParameterizedRobolectricTestRunner::class)
4240
class ReferenceModeStoreDatabaseImplIntegrationTest(
4341
private val parameters: ParameterizedBuildFlags
44-
) : ReferenceModeStoreTestBase() {
45-
46-
@get:Rule val rule = BuildFlagsRule.parameterized(parameters)
42+
) : ReferenceModeStoreTestBase(parameters) {
4743

4844
companion object {
4945
@JvmStatic
5046
@ParameterizedRobolectricTestRunner.Parameters(name = "{0}")
51-
fun params() = ParameterizedBuildFlags.of("STORAGE_STRING_REDUCTION").toList()
47+
fun params() = ParameterizedBuildFlags.of(
48+
"STORAGE_STRING_REDUCTION",
49+
"REFERENCE_MODE_STORE_FIXES"
50+
).toList()
5251
}
5352

5453
override val TEST_KEY = ReferenceModeStorageKey(

javatests/arcs/android/storage/ReferenceModeStoreDatabaseImplReducedStorageStringIntegrationTest.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
package arcs.android.storage
1313

14+
import androidx.test.core.app.ApplicationProvider
1415
import arcs.android.storage.database.AndroidSqliteDatabaseManager
1516
import arcs.core.crdt.CrdtData
1617
import arcs.core.crdt.CrdtSet
@@ -26,17 +27,14 @@ import arcs.core.storage.keys.DatabaseStorageKey
2627
import arcs.core.storage.referencemode.ReferenceModeStorageKey
2728
import arcs.core.storage.testutil.ReferenceModeStoreTestBase
2829
import arcs.core.util.RandomBuilder
29-
import arcs.flags.testing.BuildFlagsRule
3030
import arcs.flags.testing.ParameterizedBuildFlags
31-
import androidx.test.core.app.ApplicationProvider
31+
import kotlin.random.Random
3232
import kotlinx.coroutines.ExperimentalCoroutinesApi
3333
import kotlinx.coroutines.test.runBlockingTest
3434
import org.junit.After
3535
import org.junit.Before
36-
import org.junit.Rule
3736
import org.junit.runner.RunWith
3837
import org.robolectric.ParameterizedRobolectricTestRunner
39-
import kotlin.random.Random
4038

4139
/**
4240
* Implementation of [ReferenceModeStoreTestBase] that mirrors
@@ -48,14 +46,15 @@ import kotlin.random.Random
4846
@RunWith(ParameterizedRobolectricTestRunner::class)
4947
class ReferenceModeStoreDatabaseImplReducedStorageStringIntegrationTest(
5048
private val parameters: ParameterizedBuildFlags
51-
) : ReferenceModeStoreTestBase() {
52-
53-
@get:Rule val rule = BuildFlagsRule.parameterized(parameters)
49+
) : ReferenceModeStoreTestBase(parameters) {
5450

5551
companion object {
5652
@JvmStatic
5753
@ParameterizedRobolectricTestRunner.Parameters(name = "{0}")
58-
fun params() = ParameterizedBuildFlags.of("STORAGE_STRING_REDUCTION").toList()
54+
fun params() = ParameterizedBuildFlags.of(
55+
"STORAGE_STRING_REDUCTION",
56+
"REFERENCE_MODE_STORE_FIXES"
57+
).toList()
5958
}
6059

6160
override val TEST_KEY = ReferenceModeStorageKey(

javatests/arcs/core/storage/ReferenceModeStoreDatabaseIntegrationTest.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import arcs.core.storage.keys.DatabaseStorageKey
2222
import arcs.core.storage.referencemode.ReferenceModeStorageKey
2323
import arcs.core.storage.testutil.RefModeStoreHelper
2424
import arcs.core.storage.testutil.ReferenceModeStoreTestBase
25+
import arcs.flags.testing.ParameterizedBuildFlags
2526
import arcs.jvm.storage.database.testutil.FakeDatabaseManager
2627
import com.google.common.truth.Truth.assertThat
2728
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -30,12 +31,20 @@ import kotlinx.coroutines.test.runBlockingTest
3031
import org.junit.Before
3132
import org.junit.Test
3233
import org.junit.runner.RunWith
33-
import org.junit.runners.JUnit4
34+
import org.junit.runners.Parameterized
3435

3536
@Suppress("UNCHECKED_CAST")
3637
@OptIn(ExperimentalCoroutinesApi::class)
37-
@RunWith(JUnit4::class)
38-
class ReferenceModeStoreDatabaseIntegrationTest : ReferenceModeStoreTestBase() {
38+
@RunWith(Parameterized::class)
39+
class ReferenceModeStoreDatabaseIntegrationTest(
40+
private val parameters: ParameterizedBuildFlags
41+
) : ReferenceModeStoreTestBase(parameters) {
42+
43+
companion object {
44+
@get:JvmStatic
45+
@get:Parameterized.Parameters(name = "{0}")
46+
val PARAMETERS = ParameterizedBuildFlags.of("REFERENCE_MODE_STORE_FIXES")
47+
}
3948

4049
override val TEST_KEY = ReferenceModeStorageKey(
4150
DatabaseStorageKey.Persistent("entities", HASH),

javatests/arcs/core/storage/ReferenceModeStoreTest.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,12 @@ import arcs.core.storage.testutil.FakeDriver
2121
import arcs.core.storage.testutil.FakeDriverVendor
2222
import arcs.core.storage.testutil.ReferenceModeStoreTestBase
2323
import arcs.core.storage.testutil.getStoredDataForTesting
24-
import arcs.flags.testing.BuildFlagsRule
2524
import arcs.flags.testing.ParameterizedBuildFlags
2625
import com.google.common.truth.Truth.assertThat
2726
import kotlinx.coroutines.ExperimentalCoroutinesApi
2827
import kotlinx.coroutines.test.runBlockingTest
2928
import org.junit.Before
3029
import org.junit.Ignore
31-
import org.junit.Rule
3230
import org.junit.Test
3331
import org.junit.runner.RunWith
3432
import org.junit.runners.Parameterized
@@ -39,16 +37,15 @@ import org.junit.runners.Parameterized
3937
@RunWith(Parameterized::class)
4038
class ReferenceModeStoreTest(
4139
private val parameters: ParameterizedBuildFlags
42-
) : ReferenceModeStoreTestBase() {
43-
44-
@get:Rule val rule = BuildFlagsRule.parameterized(parameters)
40+
) : ReferenceModeStoreTestBase(parameters) {
4541

4642
companion object {
4743
@get:JvmStatic
4844
@get:Parameterized.Parameters(name = "{0}")
4945
val PARAMETERS = ParameterizedBuildFlags.of(
5046
"STORAGE_STRING_REDUCTION",
51-
"BATCH_CONTAINER_STORE_OPS"
47+
"BATCH_CONTAINER_STORE_OPS",
48+
"REFERENCE_MODE_STORE_FIXES"
5249
)
5350
}
5451

third_party/java/arcs/flags/flags.bzl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,15 @@ ARCS_BUILD_FLAGS = [
100100
"batch.?container.?store.?ops",
101101
],
102102
),
103+
arcs_build_flag(
104+
name = "reference_mode_store_fixes",
105+
desc = "Resolve several reference mode store bugs",
106+
bug_id = "b/176930336",
107+
status = "NOT_READY",
108+
stopwords = [
109+
"reference.?mode.?store.?fixes",
110+
],
111+
),
103112
]
104113

105114
validate_flag_list(ARCS_BUILD_FLAGS)

0 commit comments

Comments
 (0)