Commit Graph
22 Commits
Author SHA1 Message Date
Thomas Bouldin 90e4522e66 [Feature launch] Re-add increment operator (#5149)
* Definition is currently in an "unreleased" extension to FIRServerValues
* Tests are added to FData.m (integration tests)
* Some tests are renamed to make it clear that ServerValues != timestamps
* Functions that resolve server values now need access to any existing snapshot. This is done with lazy evaluation as described below:

Based on fix https://github.com/firebase/firebase-js-sdk/pull/2499
to bug https://github.com/firebase/firebase-js-sdk/issues/2487

Micro-benchmarking showed that N writes in succession led to N^2
performance when calculating the resolved write tree for those
writes (thankfully only at the subpath in this SDK). Lazy evaluation
of current data matches the optimization in JS that mitigated a
20% performance regression.
2020-04-01 13:30:29 -07:00
Sebastian Schmidt 339c8404d0 Revert "Add +[FIRServerValues increment:] (#4328)" (#4627)
This reverts commit 1cf8a944d7.
2020-01-08 09:25:30 -08:00
Thomas Bouldin 1cf8a944d7 Add +[FIRServerValues increment:] (#4328)
Add +[FIRServerValues increment:]

* Definition is currently in an "unreleased" extension to FIRServerValues
* Functions that resolve server values now need access to any existing snapshot; please help ensure that this is not done wastefully.
* Tests are added to FData.m
  * Setting increment values
  * Setting increment priorities
  * Type coercion
  * Overflows
* Some tests are renamed to make it clear that ServerValues != timestamps
2019-11-21 11:46:56 -08:00
Paul Beusterien b594723572 Update formatters for the Xcode 10.3 Travis image (#3739) 2019-09-03 08:46:21 -07:00
Sebastian Schmidt c706ce9508 Support the RTDB emulator (#3491) 2019-08-05 16:54:37 -07:00
Sebastian Schmidt 9bfbb9ece0 Enable clang-format for RTDB (#3506) 2019-08-05 13:27:47 -07:00
Paul Beusterien 5ab3c91d80 Add test_specs and fix test build warnings for Database (#3034) 2019-05-21 08:29:15 -07:00
Benoit St-Pierre 54659e8d99 Database Interop Rollforward (#2095)
* Register Database with Interop

+ Add AuthInterop dependency
+ Have Database register with Interop component container
+ Add weak dependency on Auth
~ Cleaned up imports

* Use Interop for Auth token fetching

+ Use macro to get auth component
~ Change `getTokenForcingRefresh:withCallback:` call to use Interop component version of Auth
~ Clean up imports

* Implement necessary protocols

+ Added FIRComponentRegistrant and FIRDatabaseNilProtocol to FIRDatabase

* Squash of my previous local commits for Database Interop

Register Database with Interop:

  + Add AuthInterop dependency
  + Have Database register with Interop component container
  + Add weak dependency on Auth
  ~ Cleaned up imports

Use Interop for Auth token fetching:

  + Use macro to get auth component
  ~ Change `getTokenForcingRefresh:withCallback:` call to use Interop component version of Auth
  ~ Clean up imports

Implement necessary protocols:

  + Added FIRComponentRegistrant and FIRDatabaseNilProtocol to FIRDatabase

Clean up Database tests:

  - Removed all unnecessary header files
  ~ Ran style.sh across all the tests

Cleaned Up project file:

  Some header removals were missed in the last commit.

Sorted some test files

Fix Database Fake App Tests:

  + Added container property
  + Added an Auth fake in the container
  + Added the Shared utils files to the necessary targets
  + Added a missing XCTest reference in a test that didn't compile for me

* Revert "Squash of my previous local commits for Database Interop"

This reverts commit c0d0421237.

* Cleaned Up project file

Some header removals were missed in the last commit.

* Sorted some test files

* Fix Database Fake App Tests

+ Added container property
+ Added an Auth fake in the container
+ Added the Shared utils files to the necessary targets
+ Added a missing XCTest reference in a test that didn't compile for me

* PR Feedback Changes

+ Created new FIRDatabaseComponent class to encapsulate instance creation
+ Updated FAuthTokenProvider to only use an auth instance rather than an app.

* PR Feedback Follow-Up

- Removed FIRDatabase registration code

* pod deintegrate

* Move instance management

Somes tests may still be out of date.

* Fix Auth integration test

* pod deintegrate -- again

* PR Feedback

* PR Feedback

Added the FIRComponentLifecycleMaintainer protocol to FIRDatabaseComponent

* Update Firebase/Database/Api/FIRDatabaseComponent.m

Missed some small changes

* Get integration tests compiling

* Fix some tests

* Fixed more tests

Component needs to be cacheable in order to get the appWIllBeDeleted callback.

* Update target memberships

* Revert project file changes

* Add FIRAuthInteropFake for broken targets

* PR feedback

* Spacing and Style

* Moved `instances` to ivar

* Simplify FIRDatabaseDictionary

It's now keyed on the URL with the app being implied since each app will get its own `FIRDatabaseComponent`

* Fix Database Integration Tests

Have the FakeApp cache DB instances
Use the Full host/URL path to cache DB instances
Simplified shared scheme

```
Test Suite 'Database_IntegrationTests_iOS.xctest' passed at 2018-11-20 07:09:30.520.
	 Executed 326 tests, with 0 failures (0 unexpected) in 66.251 (66.528) seconds
Test Suite 'All tests' passed at 2018-11-20 07:09:30.522.
	 Executed 326 tests, with 0 failures (0 unexpected) in 66.251 (66.530) seconds
```

* Clarify defaultApp use
2018-11-22 06:44:42 -05:00
Benoit St-Pierre 50d27eb6ac Revert "Database Interop (#1865)" (#2093)
This reverts commit 4090195f15.
2018-11-19 09:52:42 -05:00
Benoit St-Pierre 4090195f15 Database Interop (#1865)
* Register Database with Interop

+ Add AuthInterop dependency
+ Have Database register with Interop component container
+ Add weak dependency on Auth
~ Cleaned up imports

* Use Interop for Auth token fetching

+ Use macro to get auth component
~ Change `getTokenForcingRefresh:withCallback:` call to use Interop component version of Auth
~ Clean up imports

* Implement necessary protocols

+ Added FIRComponentRegistrant and FIRDatabaseNilProtocol to FIRDatabase

* Squash of my previous local commits for Database Interop

Register Database with Interop:

  + Add AuthInterop dependency
  + Have Database register with Interop component container
  + Add weak dependency on Auth
  ~ Cleaned up imports

Use Interop for Auth token fetching:

  + Use macro to get auth component
  ~ Change `getTokenForcingRefresh:withCallback:` call to use Interop component version of Auth
  ~ Clean up imports

Implement necessary protocols:

  + Added FIRComponentRegistrant and FIRDatabaseNilProtocol to FIRDatabase

Clean up Database tests:

  - Removed all unnecessary header files
  ~ Ran style.sh across all the tests

Cleaned Up project file:

  Some header removals were missed in the last commit.

Sorted some test files

Fix Database Fake App Tests:

  + Added container property
  + Added an Auth fake in the container
  + Added the Shared utils files to the necessary targets
  + Added a missing XCTest reference in a test that didn't compile for me

* Revert "Squash of my previous local commits for Database Interop"

This reverts commit c0d0421237.

* Cleaned Up project file

Some header removals were missed in the last commit.

* Sorted some test files

* Fix Database Fake App Tests

+ Added container property
+ Added an Auth fake in the container
+ Added the Shared utils files to the necessary targets
+ Added a missing XCTest reference in a test that didn't compile for me

* PR Feedback Changes

+ Created new FIRDatabaseComponent class to encapsulate instance creation
+ Updated FAuthTokenProvider to only use an auth instance rather than an app.

* PR Feedback Follow-Up

- Removed FIRDatabase registration code

* pod deintegrate

* Move instance management

Somes tests may still be out of date.

* Fix Auth integration test

* pod deintegrate -- again

* PR Feedback

* PR Feedback

Added the FIRComponentLifecycleMaintainer protocol to FIRDatabaseComponent

* Update Firebase/Database/Api/FIRDatabaseComponent.m

Missed some small changes

* Get integration tests compiling

* Fix some tests

* Fixed more tests

Component needs to be cacheable in order to get the appWIllBeDeleted callback.

* Update target memberships

* Revert project file changes

* Add FIRAuthInteropFake for broken targets

* PR feedback

* Spacing and Style

* Moved `instances` to ivar

* Simplify FIRDatabaseDictionary

It's now keyed on the URL with the app being implied since each app will get its own `FIRDatabaseComponent`
2018-11-19 07:36:05 -05:00
Paul Beusterien d195f6eb8a ifdef out flaky Database Integration Tests (#1808) 2018-09-12 10:13:39 -07:00
Sebastian Schmidt 12faf205f3 Cleaning up implicit retain for the RTDB and Storage 2018-02-13 10:27:53 -08:00
Paul Beusterien ed3e4982f9 Standardize cross module imports with angle bracket syntax (#526)
Qualify all cross-pod imports of FirebaseCore headers
2017-12-04 08:52:11 -08:00
Paul Beusterien da9308408d Use brackets for module imports (#487) 2017-11-22 09:19:10 -08:00
Paul Beusterien 3e592526ec Buildable and interoperable source pods (#444) 2017-11-21 17:02:22 -08:00
Sebastian Schmidt c6bde890ce Adding Multi-Resource support to the Firebase iOS SDK (#278)
* Adding Multi-Resource support to the Firebase iOS SDK.

This CL also makes RepoInfo hashable and simplifies RepoManager based on this.
2017-09-15 16:45:46 -07:00
Ryan Wilson f3d2588b94 Fix failing Database integration tests. (#206)
Deleting the defaultApp causes issues between the other tests. Remove
the portion of the test deleting the defaultApp will alleviate the
issue.
2017-08-18 22:22:02 -04:00
Ryan Wilson 566665e3bb Delete app from Database when deleted in Core. (#194)
* Delete an app from Database when deleted in Core.

When a FIRApp is deleted in Core, it should also be deleted from
the instances array in Database.

See #160 for more details.

* Add tests for deleting databases.

* Add call to clean up deleted FIRDatabase instance.
2017-08-17 11:15:25 -04:00
Paul Beusterien 053b2f11ea Use modulemap to fix exposure of FirebaseCore's internal headers (#121) 2017-07-10 14:57:03 -07:00
Paul Beusterien ddbfd4cc66 Add travis trailing whitespace check (#116)
* Add travis trailing whitespace check

* Remove trailing white space
2017-06-30 13:47:37 -04:00
Sebastian Schmidt c67a8bdc58 Fixing parsing for double numbers (#107)
NSJSONSerialization parses long values as doubles and returns NSNumber that are backed by doubles to the users. For NSNumbers that can be stored as longs, we can overwrite this behavior by re-running the initialization step.
2017-06-27 10:04:47 -07:00
Paul Beusterien 98ba64449a Initial 2017-05-15 12:27:07 -07:00