Skip to content

Commit bcf6c5f

Browse files
committed
[realppl 7] realppl integration with remote/local and unit tests
1 parent f3752fa commit bcf6c5f

File tree

87 files changed

+3127
-609
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+3127
-609
lines changed

Firestore/Example/Firestore.xcodeproj/project.pbxproj

Lines changed: 24 additions & 9 deletions
Large diffs are not rendered by default.

Firestore/Example/Tests/API/FIRQuerySnapshotTests.mm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#import "Firestore/Source/API/FIRQuerySnapshot+Internal.h"
3131
#import "Firestore/Source/API/FIRSnapshotMetadata+Internal.h"
3232

33+
#include "Firestore/core/src/core/pipeline_util.h"
3334
#include "Firestore/core/src/core/query.h"
3435
#include "Firestore/core/src/core/view_snapshot.h"
3536
#include "Firestore/core/src/model/document.h"
@@ -101,7 +102,8 @@ - (void)testIncludeMetadataChanges {
101102

102103
std::shared_ptr<Firestore> firestore = FSTTestFirestore().wrapped;
103104
core::Query query = Query("foo");
104-
ViewSnapshot viewSnapshot(query, newDocuments, oldDocuments, std::move(documentChanges),
105+
ViewSnapshot viewSnapshot(core::QueryOrPipeline(query), newDocuments, oldDocuments,
106+
std::move(documentChanges),
105107
/*mutated_keys=*/DocumentKeySet(),
106108
/*from_cache=*/false,
107109
/*sync_state_changed=*/true,

Firestore/Example/Tests/API/FSTAPIHelpers.mm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#import "Firestore/Source/API/FIRSnapshotMetadata+Internal.h"
3434
#import "Firestore/Source/API/FSTUserDataReader.h"
3535

36+
#include "Firestore/core/src/core/pipeline_util.h"
3637
#include "Firestore/core/src/core/view_snapshot.h"
3738
#include "Firestore/core/src/model/document.h"
3839
#include "Firestore/core/src/model/document_set.h"
@@ -148,7 +149,7 @@
148149
}
149150
newDocuments = newDocuments.insert(doc);
150151
}
151-
ViewSnapshot viewSnapshot{Query(path),
152+
ViewSnapshot viewSnapshot{core::QueryOrPipeline(Query(path)),
152153
newDocuments,
153154
oldDocuments,
154155
std::move(documentChanges),

Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ bool IsOpen() const override {
109109
}
110110

111111
void WatchQuery(const TargetData& query) override {
112-
LOG_DEBUG("WatchQuery: %s: %s, %s", query.target_id(), query.target().ToString(),
112+
LOG_DEBUG("WatchQuery: %s: %s, %s", query.target_id(), query.target_or_pipeline().ToString(),
113113
query.resume_token().ToString());
114114

115115
// Snapshot version is ignored on the wire

Firestore/Example/Tests/SpecTests/FSTSpecTests.mm

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -842,36 +842,36 @@ - (void)validateExpectedState:(nullable NSDictionary *)expectedState {
842842
}
843843
if (expectedState[@"activeTargets"]) {
844844
__block ActiveTargetMap expectedActiveTargets;
845-
[expectedState[@"activeTargets"]
846-
enumerateKeysAndObjectsUsingBlock:^(NSString *targetIDString, NSDictionary *queryData,
847-
BOOL *) {
848-
TargetId targetID = [targetIDString intValue];
849-
NSArray *queriesJson = queryData[@"queries"];
850-
std::vector<TargetData> queries;
851-
for (id queryJson in queriesJson) {
852-
Query query = [self parseQuery:queryJson];
853-
854-
QueryPurpose purpose = QueryPurpose::Listen;
855-
if ([queryData objectForKey:@"targetPurpose"] != nil) {
856-
purpose = [self parseQueryPurpose:queryData[@"targetPurpose"]];
857-
}
858-
859-
TargetData target_data(query.ToTarget(), targetID, 0, purpose);
860-
if ([queryData objectForKey:@"resumeToken"] != nil) {
861-
target_data = target_data.WithResumeToken(
862-
MakeResumeToken(queryData[@"resumeToken"]), SnapshotVersion::None());
863-
} else {
864-
target_data = target_data.WithResumeToken(
865-
ByteString(), [self parseVersion:queryData[@"readTime"]]);
866-
}
867-
868-
if ([queryData objectForKey:@"expectedCount"] != nil) {
869-
target_data = target_data.WithExpectedCount([queryData[@"expectedCount"] intValue]);
870-
}
871-
queries.push_back(std::move(target_data));
872-
}
873-
expectedActiveTargets[targetID] = std::move(queries);
874-
}];
845+
[expectedState[@"activeTargets"] enumerateKeysAndObjectsUsingBlock:^(NSString *targetIDString,
846+
NSDictionary *queryData,
847+
BOOL *) {
848+
TargetId targetID = [targetIDString intValue];
849+
NSArray *queriesJson = queryData[@"queries"];
850+
std::vector<TargetData> queries;
851+
for (id queryJson in queriesJson) {
852+
Query query = [self parseQuery:queryJson];
853+
854+
QueryPurpose purpose = QueryPurpose::Listen;
855+
if ([queryData objectForKey:@"targetPurpose"] != nil) {
856+
purpose = [self parseQueryPurpose:queryData[@"targetPurpose"]];
857+
}
858+
859+
TargetData target_data(core::TargetOrPipeline(query.ToTarget()), targetID, 0, purpose);
860+
if ([queryData objectForKey:@"resumeToken"] != nil) {
861+
target_data = target_data.WithResumeToken(MakeResumeToken(queryData[@"resumeToken"]),
862+
SnapshotVersion::None());
863+
} else {
864+
target_data = target_data.WithResumeToken(ByteString(),
865+
[self parseVersion:queryData[@"readTime"]]);
866+
}
867+
868+
if ([queryData objectForKey:@"expectedCount"] != nil) {
869+
target_data = target_data.WithExpectedCount([queryData[@"expectedCount"] intValue]);
870+
}
871+
queries.push_back(std::move(target_data));
872+
}
873+
expectedActiveTargets[targetID] = std::move(queries);
874+
}];
875875
[self.driver setExpectedActiveTargets:std::move(expectedActiveTargets)];
876876
}
877877
}
@@ -982,7 +982,7 @@ - (void)validateActiveTargets {
982982
const TargetData &actual = found->second;
983983

984984
XCTAssertEqual(actual.purpose(), targetData.purpose());
985-
XCTAssertEqual(actual.target(), targetData.target());
985+
XCTAssertEqual(actual.target_or_pipeline(), targetData.target_or_pipeline());
986986
XCTAssertEqual(actual.target_id(), targetData.target_id());
987987
XCTAssertEqual(actual.snapshot_version(), targetData.snapshot_version());
988988
XCTAssertEqual(actual.resume_token(), targetData.resume_token());

Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -478,18 +478,19 @@ - (FSTOutstandingWrite *)receiveWriteError:(int)errorCode
478478

479479
- (TargetId)addUserListenerWithQuery:(Query)query options:(ListenOptions)options {
480480
// TODO(dimond): Change spec tests to verify isFromCache on snapshots
481-
auto listener = QueryListener::Create(
482-
query, options, [self, query](const StatusOr<ViewSnapshot> &maybe_snapshot) {
483-
FSTQueryEvent *event = [[FSTQueryEvent alloc] init];
484-
event.query = query;
485-
if (maybe_snapshot.ok()) {
486-
[event setViewSnapshot:maybe_snapshot.ValueOrDie()];
487-
} else {
488-
event.error = MakeNSError(maybe_snapshot.status());
489-
}
490-
491-
[self.events addObject:event];
492-
});
481+
auto listener =
482+
QueryListener::Create(core::QueryOrPipeline(query), options,
483+
[self, query](const StatusOr<ViewSnapshot> &maybe_snapshot) {
484+
FSTQueryEvent *event = [[FSTQueryEvent alloc] init];
485+
event.query = query;
486+
if (maybe_snapshot.ok()) {
487+
[event setViewSnapshot:maybe_snapshot.ValueOrDie()];
488+
} else {
489+
event.error = MakeNSError(maybe_snapshot.status());
490+
}
491+
492+
[self.events addObject:event];
493+
});
493494
_queryListeners[query] = listener;
494495
TargetId targetID;
495496
_workerQueue->EnqueueBlocking([&] { targetID = _eventManager->AddQueryListener(listener); });

Firestore/Source/API/FIRQuery.mm

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#include "Firestore/core/src/core/firestore_client.h"
5252
#include "Firestore/core/src/core/listen_options.h"
5353
#include "Firestore/core/src/core/order_by.h"
54+
#include "Firestore/core/src/core/pipeline_util.h"
5455
#include "Firestore/core/src/core/query.h"
5556
#include "Firestore/core/src/model/document_key.h"
5657
#include "Firestore/core/src/model/field_path.h"
@@ -228,8 +229,8 @@ - (void)getDocumentsWithSource:(FIRFirestoreSource)publicSource
228229
auto async_listener = AsyncEventListener<ViewSnapshot>::Create(
229230
firestore->client()->user_executor(), std::move(view_listener));
230231

231-
std::shared_ptr<QueryListener> query_listener =
232-
firestore->client()->ListenToQuery(query, internalOptions, async_listener);
232+
std::shared_ptr<QueryListener> query_listener = firestore->client()->ListenToQuery(
233+
core::QueryOrPipeline(query), internalOptions, async_listener);
233234

234235
return [[FSTListenerRegistration alloc]
235236
initWithRegistration:absl::make_unique<QueryListenerRegistration>(firestore->client(),

Firestore/core/src/api/api_fwd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class Firestore;
4646
class ListenerRegistration;
4747
class Pipeline;
4848
class PipelineSnapshot;
49+
class RealtimePipeline;
4950
class Query;
5051
class QuerySnapshot;
5152
class Settings;

Firestore/core/src/api/document_reference.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@ std::unique_ptr<ListenerRegistration> DocumentReference::AddSnapshotListener(
238238

239239
core::Query query(key_.path());
240240
std::shared_ptr<QueryListener> query_listener =
241-
firestore_->client()->ListenToQuery(std::move(query), options,
242-
async_listener);
241+
firestore_->client()->ListenToQuery(
242+
core::QueryOrPipeline(std::move(query)), options, async_listener);
243243

244244
return absl::make_unique<QueryListenerRegistration>(
245245
firestore_->client(), std::move(async_listener),

Firestore/core/src/api/expressions.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ google_firestore_v1_Value Constant::to_proto() const {
5050
return *model::DeepClone(*value_).release();
5151
}
5252

53+
const google_firestore_v1_Value& Constant::value() const {
54+
return *value_;
55+
}
56+
5357
std::unique_ptr<core::EvaluableExpr> Constant::ToEvaluable() const {
5458
return std::make_unique<core::CoreConstant>(
5559
std::make_unique<Constant>(*this));

0 commit comments

Comments
 (0)