Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to latest core #7837

Merged
merged 11 commits into from
Oct 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
* None.

### Fixed
* None.
* Rare corruption causing 'Invalid streaming format cookie'-exception. Typically following compact, convert or copying to a new file. (Issue [#7775](https://github.com/realm/realm-java/issues/7775), since v10.13.0 (Core v12.12.0))
* [RealmApp] Crash when opening a Realm with a proxy enabled. (Issue [#7828](https://github.com/realm/realm-java/issues/7828))

### Compatibility
* File format: Generates Realms with format v23. Unsynced Realms will be upgraded from Realm Java 2.0 and later. Synced Realms can only be read and upgraded if created with Realm Java v10.0.0-BETA.1.
Expand All @@ -17,7 +18,7 @@
* Android Gradle Plugin 7.4.0 and above.

### Internal
* None.
* Updated to Realm Core 13.22.0, commit 0b19887b5b25746afaf474fe298e38f450f0486e.


## 10.16.1 (2023-06-26)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import org.bson.types.Decimal128;
import org.bson.types.ObjectId;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;

Expand Down Expand Up @@ -401,11 +400,11 @@ public void isEmpty_acrossLink() {
case LINKING_OBJECTS:
// Rows 0 and 1 are not included as they are linked to another row through FIELD_OBJECT
// Row 2 is included (no link)
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the expected values changed for these tests?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was changed after realm/realm-core#6867. There was a lot of discussion about this, but in the end, we determined that the old behavior was buggy and subsequently fixed.

assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());
// Row 0 has link to row 0 which has a backlink (list); not included
// Row 1 has link to row 1 which has a backlink (list); not included
// Row 2 has no link; included
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());
// Row 2 has no link; no included
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());
break;
default:
// tested in RealmQueryTests
Expand All @@ -427,17 +426,17 @@ public void isEmpty_acrossLinkingObjectObjectLink() {
case LIST:
// Row 0: backlink to row 0, linklist is empty; included
// Row 1: backlink to row 1, linklist to row 0; not included
// Row 2: no backlink; included
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LIST).count());
// Row 2: no backlink; not included
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LIST).count());
break;
case LINKING_OBJECTS:
// Both row 0 and 1 have a link/backlink; not included
// row 2 has no link/backlink and an empty list; included
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());
// row 2 has no link/backlink and an empty list; not included
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());
break;
case OBJECT:
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_OBJECT).count());
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_OBJECT).count());
break;
case INTEGER_LIST:
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_INTEGER_LIST).count());
Expand Down Expand Up @@ -542,7 +541,7 @@ public void isEmpty_acrossLinkingObjectObjectLink() {
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_DECIMAL128_SET).count());
break;
case LINK_SET:
assertEquals(3, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LINK_SET).count());
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LINK_SET).count());
break;
default:
fail("Unknown type: " + type);
Expand All @@ -565,24 +564,24 @@ public void isEmpty_acrossLinkingObjectListLink() {
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_BINARY).count());
break;
case LIST:
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_LIST).count());
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_LIST).count());
break;
case LINKING_OBJECTS:
// Row 0: Backlink (list) to row 1, row 1 backlink to row 1; not included
// Row 1: Backlink (list) to row 2, row 2 no backlink; included
// Row 2: No backlink (list); included
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());
// Row 2: No backlink (list); not included
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());

// Step 1:
// Row 0 skipped; FIELD_LO_LIST.count > 0
// Row 1 included; FIELD_LO_LIST.count() == 0
//
// Step 2: now checking Row 2
// Row 0 included: goes to Row 1 where FIELD_LO_LIST.count() == 0
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());
// Row 0 not included: goes to Row 1 where FIELD_LO_LIST.count() == 0
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());
break;
case OBJECT:
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_OBJECT).count());
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_OBJECT).count());
break;
case INTEGER_LIST:
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_LIST + "." + AllJavaTypesUnsupportedTypes.FIELD_INTEGER_LIST).count());
Expand Down Expand Up @@ -862,7 +861,8 @@ public void isNotEmpty_acrossLinkingObjectObjectLink() {
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isNotEmpty(AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_REALM_ANY_SET).count());
break;
default:
fail("Unknown type: " + type);
// Do nothing
fail("Unknown type: " + type);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2665,18 +2665,18 @@ public void isEmpty_acrossLink() {
// Row 0: Backlink list to row 1, list to row 0; included
// Row 1: Backlink list to row 2, list to row 1; included
// Row 2: No backlink list; not included
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LIST).count());
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LIST).count());
break;
case LINKING_OBJECTS:
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_LIST).count());

// Row 0: Link to row 0, backlink to row 0; not included
// Row 1: Link to row 1m backlink to row 1; not included
// Row 2: Empty link; included
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());
// Row 2: Empty link; not included
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LO_OBJECT).count());
break;
case OBJECT:
assertEquals(1, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_OBJECT).count());
assertEquals(0, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_OBJECT).count());
break;
case INTEGER_LIST:
assertEquals(3, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_INTEGER_LIST).count());
Expand Down Expand Up @@ -2745,7 +2745,7 @@ public void isEmpty_acrossLink() {
assertEquals(3, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_DECIMAL128_DICTIONARY).count());
break;
case STRING_TO_LINK_MAP:
assertEquals(3, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LINK_DICTIONARY).count());
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LINK_DICTIONARY).count());
break;
case MIXED_SET:
assertEquals(3, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_REALM_ANY_SET).count());
Expand Down Expand Up @@ -2781,7 +2781,7 @@ public void isEmpty_acrossLink() {
assertEquals(3, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_DECIMAL128_SET).count());
break;
case LINK_SET:
assertEquals(3, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LINK_SET).count());
assertEquals(2, realm.where(AllJavaTypesUnsupportedTypes.class).isEmpty(AllJavaTypesUnsupportedTypes.FIELD_OBJECT + "." + AllJavaTypesUnsupportedTypes.FIELD_LINK_SET).count());
break;
default:
fail("Unknown type: " + type);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
Expand Down Expand Up @@ -1939,7 +1940,7 @@ public void setValue_specificType_internalNameOnDynamicRealms() {

@Test
public void asJSON() throws JSONException {
Date date = Calendar.getInstance().getTime();
Date date = Date.from(Calendar.getInstance().getTime().toInstant().truncatedTo(ChronoUnit.SECONDS));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); // Core return dates in UTC time
String now = sdf.format(date);
Expand Down Expand Up @@ -2144,7 +2145,7 @@ public void asJSON_withEscaping() throws JSONException {

@Test
public void asJSON_cycles() throws JSONException {
Date date = Calendar.getInstance().getTime();
Date date = Date.from(Calendar.getInstance().getTime().toInstant().truncatedTo(ChronoUnit.SECONDS));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); // Core return dates in UTC time
String now = sdf.format(date);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1193,6 +1193,7 @@ public void compactRealm_populatedRealm() throws IOException {
assertTrue(before >= after);
}

// This is only supported on API level 30 and below
@Test
public void compactRealm_onExternalStorage() {
final File externalFilesDir = context.getExternalFilesDir(null);
Expand Down Expand Up @@ -4431,6 +4432,7 @@ public void getLocalInstanceCount() {
assertEquals(0, Realm.getLocalInstanceCount(config));
}

// This is only supported on API 30 and below
@Test
public void namedPipeDirForExternalStorage() {

Expand Down Expand Up @@ -4851,14 +4853,14 @@ public void getNumberOfActiveVersions() throws InterruptedException {
for (int i = 0; i < 5; i++) {
bgRealm.executeTransaction(r -> { /* empty */ });
}
assertEquals(6, bgRealm.getNumberOfActiveVersions());
assertEquals(3, bgRealm.getNumberOfActiveVersions());
bgWritesCompleted.countDown();
TestHelper.awaitOrFail(closeBgRealm);
bgRealm.close();
});
t.start();
TestHelper.awaitOrFail(bgWritesCompleted);
assertEquals(6, realm.getNumberOfActiveVersions());
assertEquals(3, realm.getNumberOfActiveVersions());
closeBgRealm.countDown();
t.join();
realm.refresh(); // Release old versions for GC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import io.realm.TEST_APP_1
import io.realm.TEST_APP_2
import io.realm.TEST_APP_3
import kotlin.random.Random
import kotlin.test.assertContains

abstract class EmailPasswordAuthTests {

Expand Down Expand Up @@ -569,7 +570,7 @@ class EmailPasswordAuthWithCustomFunctionConfirmTests: EmailPasswordAuthTests()
val exception = assertFailsWith<AppException> {
provider.retryCustomConfirmation(email)
}
assertEquals("""failed to confirm user "$email"""", exception.errorMessage)
assertContains(exception.errorMessage!!, "failed to confirm user \"$email\"")
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import io.realm.entities.SyncStringOnly
import io.realm.mongodb.SyncTestUtils.Companion.createTestUser
import io.realm.mongodb.close
import io.realm.mongodb.registerUserAndLogin
import io.realm.mongodb.sync.SyncConfiguration
import io.realm.mongodb.sync.testSchema
import io.realm.util.assertFailsWith
Expand Down Expand Up @@ -47,7 +48,7 @@ class SchemaTests {
@Before
fun setUp() {
app = TestApp()
val user = createTestUser(app)
val user = app.registerUserAndLogin(TestHelper.getRandomEmail(), "123456")
config = configFactory
.createSyncConfigurationBuilder(user)
.testSchema(SyncStringOnly::class.java)
Expand Down
Loading
Loading