-
Notifications
You must be signed in to change notification settings - Fork 932
Stop saving persistence layer across spec tests #1129
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
Changes from 3 commits
611b778
84d810c
8e06033
bdb8a54
9ad2d4e
fa8bcbe
f3b5702
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -228,7 +228,7 @@ describeSpec('Listens:', [], () => { | |
// This would only happen when we use a resume token, but omitted for brevity. | ||
specTest( | ||
'Will gracefully handle watch stream reverting snapshots (with restart)', | ||
[], | ||
['no-memory-persistence'], | ||
() => { | ||
const query = Query.atPath(path('collection')); | ||
const docAv1 = doc('collection/a', 1000, { v: 'v1000' }); | ||
|
@@ -570,34 +570,38 @@ describeSpec('Listens:', [], () => { | |
); | ||
}); | ||
|
||
specTest('Omits global resume tokens for a short while', [], () => { | ||
const query = Query.atPath(path('collection')); | ||
const docA = doc('collection/a', 1000, { key: 'a' }); | ||
specTest( | ||
'Omits global resume tokens for a short while', | ||
['no-memory-persistence'], | ||
() => { | ||
const query = Query.atPath(path('collection')); | ||
const docA = doc('collection/a', 1000, { key: 'a' }); | ||
|
||
return ( | ||
spec() | ||
.withGCEnabled(false) | ||
.userListens(query) | ||
.watchAcksFull(query, 1000, docA) | ||
.expectEvents(query, { added: [docA] }) | ||
return ( | ||
spec() | ||
.withGCEnabled(false) | ||
.userListens(query) | ||
.watchAcksFull(query, 1000, docA) | ||
.expectEvents(query, { added: [docA] }) | ||
|
||
// One millisecond later, watch sends an updated resume token but the | ||
// user doesn't manage to unlisten before restart. | ||
.watchSnapshots(2000, [], 'resume-token-2000') | ||
.restart() | ||
// One millisecond later, watch sends an updated resume token but the | ||
// user doesn't manage to unlisten before restart. | ||
.watchSnapshots(2000, [], 'resume-token-2000') | ||
.restart() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we make restart check that the tag is set? Are there tests that have any business restarting without durable persistence? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could make restart check, if we add something like There are not currently tests that make sense with non-durable persistence and a restart, but that's also because we couldn't really write them before. One could now write a test for memory persistence behavior across a restart. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I left out this feature. We can add it if we need it. |
||
|
||
.userListens(query, 'resume-token-1000') | ||
.expectEvents(query, { added: [docA], fromCache: true }) | ||
.watchAcks(query) | ||
.watchCurrents(query, 'resume-token-3000') | ||
.watchSnapshots(3000) | ||
.expectEvents(query, { fromCache: false }) | ||
); | ||
}); | ||
.userListens(query, 'resume-token-1000') | ||
.expectEvents(query, { added: [docA], fromCache: true }) | ||
.watchAcks(query) | ||
.watchCurrents(query, 'resume-token-3000') | ||
.watchSnapshots(3000) | ||
.expectEvents(query, { fromCache: false }) | ||
); | ||
} | ||
); | ||
|
||
specTest( | ||
'Persists global resume tokens if the snapshot is old enough', | ||
[], | ||
['no-memory-persistence'], | ||
() => { | ||
const initialVersion = 1000; | ||
const minutesLater = 5 * 60 * 1e6 + initialVersion; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should avoid these inversely-phrased tags. They're hard to reason about because they don't state what's required, but rather what's excluded.
This one could be named something like durable-persistence, which would make it more obvious to the reader that this is the property of the persistence layer that's interesting.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We used to have a tag that was called just 'PERSISTENCE', which might imply that it is durable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with the general principle, but I did it this way to match how the rest of the tags were implemented. Do you think it's worth deviating?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
benchmark, exclusive, and multiclient follow the positive form. I think we should continue that.
no-web, no-ios, and no-android are a mistake; I think they should have been phrased the other way too, especially since we tend to add a feature on a new platform, so it's easier to phrase this in terms of which platform is going first.
That leaves no-lru, which I think we could stand to be positive, but I don't know what the positive form would be.
In any case, I think positive phrasing could be a long term goal and this would be a step in that direction.
Also, since you're going to have to edit every runner to implement this, you could just refactor all to positive.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I'll make the change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Switched the tags to be positive.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Switch the platform tags back to negative.