diff options
author | Michael Lehenbauer <mikelehen@gmail.com> | 2018-03-05 09:49:41 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-05 09:49:41 -0800 |
commit | 34ebf10b0acc65f1924d723e82085d4104bc281d (patch) | |
tree | 98237b8eef85abdc7d464ef221a37d3bb6937be7 /Firestore/Example/Tests/SpecTests/FSTSpecTests.mm | |
parent | 1c40e7aada6b32bbc621f06fb5f380149606a58d (diff) |
Add 10 second timeout waiting for connection before client behaves as-if offline. (#872)
[Port of https://github.com/firebase/firebase-js-sdk/commit/0fa319e5e019dd0d40ab441d2ff9f8f6d4724e43]
* Refactored FSTOnlineState tracking out of FSTRemoteStore and into new
FSTOnlineStateTracker component.
* Added a 10 second timeout to transition from OnlineState.Unknown to
OnlineState.Offline rather than waiting indefinitely for the stream to
succeed or fail.
* Removed hack to run SpecTests using an FSTDispatchQueue that wrapped
dispatch_get_main_queue(). This was incompatible with [FSTDispatchQueue
runDelayedCallbacksUntil:] since it queues work and blocks waiting for
it to complete. Now spec tests create / use a proper FSTDispatchQueue.
* Added a SpecTest to verify OnlineState timeout behavior.
* Misc cleanup:
* Renamed FSTOnlineState states: Failed => Offline, Healthy => Online
* Renamed FSTTimerIds (ListenStreamConnection => ListenStreamConnectionBackoff)
* Added ability to run timers from spec tests.
Diffstat (limited to 'Firestore/Example/Tests/SpecTests/FSTSpecTests.mm')
-rw-r--r-- | Firestore/Example/Tests/SpecTests/FSTSpecTests.mm | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/Firestore/Example/Tests/SpecTests/FSTSpecTests.mm b/Firestore/Example/Tests/SpecTests/FSTSpecTests.mm index 43b2a5f..b00ea07 100644 --- a/Firestore/Example/Tests/SpecTests/FSTSpecTests.mm +++ b/Firestore/Example/Tests/SpecTests/FSTSpecTests.mm @@ -22,7 +22,6 @@ #import "Firestore/Source/Core/FSTEventManager.h" #import "Firestore/Source/Core/FSTQuery.h" #import "Firestore/Source/Core/FSTSnapshotVersion.h" -#import "Firestore/Source/Core/FSTViewSnapshot.h" #import "Firestore/Source/Local/FSTEagerGarbageCollector.h" #import "Firestore/Source/Local/FSTNoOpGarbageCollector.h" #import "Firestore/Source/Local/FSTPersistence.h" @@ -36,6 +35,7 @@ #import "Firestore/Source/Remote/FSTWatchChange.h" #import "Firestore/Source/Util/FSTAssert.h" #import "Firestore/Source/Util/FSTClasses.h" +#import "Firestore/Source/Util/FSTDispatchQueue.h" #import "Firestore/Source/Util/FSTLogger.h" #import "Firestore/Example/Tests/Remote/FSTWatchChange+Testing.h" @@ -323,6 +323,27 @@ static NSString *const kNoIOSTag = @"no-ios"; } } +- (void)doRunTimer:(NSString *)timer { + FSTTimerID timerID; + if ([timer isEqualToString:@"all"]) { + timerID = FSTTimerIDAll; + } else if ([timer isEqualToString:@"listen_stream_idle"]) { + timerID = FSTTimerIDListenStreamIdle; + } else if ([timer isEqualToString:@"listen_stream_connection"]) { + timerID = FSTTimerIDListenStreamConnectionBackoff; + } else if ([timer isEqualToString:@"write_stream_idle"]) { + timerID = FSTTimerIDWriteStreamIdle; + } else if ([timer isEqualToString:@"write_stream_connection"]) { + timerID = FSTTimerIDWriteStreamConnectionBackoff; + } else if ([timer isEqualToString:@"online_state_timeout"]) { + timerID = FSTTimerIDOnlineStateTimeout; + } else { + FSTFail(@"runTimer spec step specified unknown timer: %@", timer); + } + + [self.driver runTimer:timerID]; +} + - (void)doDisableNetwork { [self.driver disableNetwork]; } @@ -391,6 +412,8 @@ static NSString *const kNoIOSTag = @"no-ios"; [self doWriteAck:step[@"writeAck"]]; } else if (step[@"failWrite"]) { [self doFailWrite:step[@"failWrite"]]; + } else if (step[@"runTimer"]) { + [self doRunTimer:step[@"runTimer"]]; } else if (step[@"enableNetwork"]) { if ([step[@"enableNetwork"] boolValue]) { [self doEnableNetwork]; |