Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bitfireAT/ical4android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunik Kupfer <kupfer@bitfire.at>2022-06-21 17:07:08 +0300
committerSunik Kupfer <kupfer@bitfire.at>2022-06-21 17:07:08 +0300
commit27c36e621c03f125fd155b1dba1260e85fada578 (patch)
treed962703796ba78b05c60464e54afcf58568b48a9
parent44b15be25e5141b98f36f6e717b61b111e6e4add (diff)
extract large transaction test to BatchOperationTest42-ci-tests-fail-at-testlargetransactionmanyrows
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt26
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/BatchOperationTest.kt127
2 files changed, 132 insertions, 21 deletions
diff --git a/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt b/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt
index aaccd05..3bc4409 100644
--- a/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt
+++ b/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt
@@ -2282,39 +2282,23 @@ class AndroidEventTest {
- @LargeTest
@Test
- fun testLargeTransactionManyRows() {
+ fun testTransaction() {
val event = Event()
- event.uid = "sample1@testLargeTransaction"
- event.summary = "Large event"
+ event.uid = "sample1@testTransaction"
+ event.summary = "an event"
event.dtStart = DtStart("20150502T120000Z")
event.dtEnd = DtEnd("20150502T130000Z")
- for (i in 0 until 3000)
+ for (i in 0 until 20)
event.attendees += Attendee(URI("mailto:att$i@example.com"))
val uri = TestEvent(calendar, event).add()
val testEvent = calendar.findById(ContentUris.parseId(uri))
try {
- assertEquals(3000, testEvent.event!!.attendees.size)
+ assertEquals(20, testEvent.event!!.attendees.size)
} finally {
testEvent.delete()
}
}
- @Test(expected = CalendarStorageException::class)
- fun testLargeTransactionSingleRow() {
- val event = Event()
- event.uid = "sample1@testLargeTransaction"
- event.dtStart = DtStart("20150502T120000Z")
- event.dtEnd = DtEnd("20150502T130000Z")
-
- // 1 MB SUMMARY ... have fun
- val data = CharArray(1024*1024)
- Arrays.fill(data, 'x')
- event.summary = String(data)
-
- TestEvent(calendar, event).add()
- }
-
}
diff --git a/src/androidTest/java/at/bitfire/ical4android/BatchOperationTest.kt b/src/androidTest/java/at/bitfire/ical4android/BatchOperationTest.kt
new file mode 100644
index 0000000..39021fb
--- /dev/null
+++ b/src/androidTest/java/at/bitfire/ical4android/BatchOperationTest.kt
@@ -0,0 +1,127 @@
+/***************************************************************************************************
+ * Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
+ **************************************************************************************************/
+
+package at.bitfire.ical4android
+
+import android.Manifest
+import android.accounts.Account
+import android.content.ContentProviderClient
+import android.content.ContentUris
+import android.net.Uri
+import android.provider.CalendarContract
+import androidx.test.filters.FlakyTest
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.rule.GrantPermissionRule
+import at.bitfire.ical4android.MiscUtils.ContentProviderClientHelper.closeCompat
+import at.bitfire.ical4android.MiscUtils.UriHelper.asSyncAdapter
+import at.bitfire.ical4android.impl.TestCalendar
+import at.bitfire.ical4android.impl.TestEvent
+import net.fortuna.ical4j.model.property.Attendee
+import net.fortuna.ical4j.model.property.DtEnd
+import net.fortuna.ical4j.model.property.DtStart
+import org.junit.*
+import org.junit.Assert.*
+
+import java.net.URI
+import java.util.*
+
+class BatchOperationTest {
+
+ companion object {
+
+ @JvmField
+ @ClassRule
+ val permissionRule = GrantPermissionRule.grant(
+ Manifest.permission.READ_CALENDAR,
+ Manifest.permission.WRITE_CALENDAR
+ )
+
+ lateinit var provider: ContentProviderClient
+
+ @BeforeClass
+ @JvmStatic
+ fun connectProvider() {
+ provider = InstrumentationRegistry.getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)!!
+ }
+
+ @AfterClass
+ @JvmStatic
+ fun closeProvider() {
+ provider.closeCompat()
+ }
+
+ }
+
+ private val testAccount = Account("ical4android@example.com", CalendarContract.ACCOUNT_TYPE_LOCAL)
+
+ private lateinit var calendarUri: Uri
+ private lateinit var calendar: TestCalendar
+
+ @Before
+ fun prepare() {
+ calendar = TestCalendar.findOrCreate(testAccount, provider)
+ assertNotNull(calendar)
+ calendarUri = ContentUris.withAppendedId(CalendarContract.Calendars.CONTENT_URI, calendar.id)
+ }
+
+ @After
+ fun shutdown() {
+ calendar.delete()
+ }
+
+ @Test
+ fun testTransactionSplitting() {
+ val event = Event()
+ event.uid = "sample1@testLargeTransaction"
+ event.summary = "Large event"
+ event.dtStart = DtStart("20150502T120000Z")
+ event.dtEnd = DtEnd("20150502T130000Z")
+ for (i in 0 until 2000) // 2000 are enough for a transaction split to happen, but won't make the test fail in CI server environment
+ event.attendees += Attendee(URI("mailto:att$i@example.com"))
+ val uri = TestEvent(calendar, event).add()
+
+ val testEvent = calendar.findById(ContentUris.parseId(uri))
+ try {
+ assertEquals(2000, testEvent.event!!.attendees.size)
+ } finally {
+ testEvent.delete()
+ }
+ }
+
+ @FlakyTest
+ @Test
+ fun testLargeTransactionSplitting() {
+ // This test only fails on the CI server emulator (see issue #42)
+ val event = Event()
+ event.uid = "sample1@testLargeTransaction"
+ event.summary = "Large event"
+ event.dtStart = DtStart("20150502T120000Z")
+ event.dtEnd = DtEnd("20150502T130000Z")
+ for (i in 0 until 10000) // 2000 are enough for a transaction split to happen, but won't make the test fail in CI server environment
+ event.attendees += Attendee(URI("mailto:att$i@example.com"))
+ val uri = TestEvent(calendar, event).add()
+
+ val testEvent = calendar.findById(ContentUris.parseId(uri))
+ try {
+ assertEquals(10000, testEvent.event!!.attendees.size)
+ } finally {
+ testEvent.delete()
+ }
+ }
+
+ @Test(expected = CalendarStorageException::class)
+ fun testLargeTransactionSingleRow() {
+ val event = Event()
+ event.uid = "sample1@testLargeTransaction"
+ event.dtStart = DtStart("20150502T120000Z")
+ event.dtEnd = DtEnd("20150502T130000Z")
+
+ // 1 MB SUMMARY ... have fun
+ val data = CharArray(1024*1024)
+ Arrays.fill(data, 'x')
+ event.summary = String(data)
+
+ TestEvent(calendar, event).add()
+ }
+} \ No newline at end of file