Max Brunsfeld
13aed69bc7
Add env vars to store and load test plan from JSON files
2023-01-06 17:51:25 -08:00
Max Brunsfeld
8f2634baf8
Tolerate failure to join remote projects in randomized test
2023-01-06 15:40:42 -08:00
Max Brunsfeld
149f171971
Represent all randomized test actions as operations
2023-01-06 15:32:11 -08:00
Max Brunsfeld
d64c24eba0
Make operations for all buffer manipulations
2023-01-06 15:32:11 -08:00
Max Brunsfeld
be4e8dd963
Tweak operation rates
2023-01-06 15:32:11 -08:00
Max Brunsfeld
0eb04df1b0
Set up flow for mutating clients via explicit operation values
2023-01-06 15:32:11 -08:00
Max Brunsfeld
e61887fa2b
wip
2023-01-06 15:32:11 -08:00
Max Brunsfeld
7b1687828f
Start work on allowing random collab test to be minimized
...
Represent operations as an explicit enum.
2023-01-06 15:32:11 -08:00
Antonio Scandurra and Nathan Sobo
1ecb8e7b2b
Prevent making further requests after language server shut down
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2023-01-06 13:40:32 -07:00
Antonio Scandurra and Nathan Sobo
1ac1bd1838
Share new worktrees when resharing project
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2023-01-06 12:58:19 -07:00
Antonio Scandurra and Nathan Sobo
d436aae4ae
Match guest's reported buffers on host when synchronizing after reconnect
...
If the host thinks a guest has a buffer that they don't have, the host won't
send it to them when they attempt to open it the next time. This can happen
if the guest disconnected before they received the host's response to an
initial open buffer request.
Co-Authored-By: Nathan Sobo <nathan@zed.dev >
2023-01-06 11:48:34 -07:00
Antonio Scandurra
41e381c23b
Only share worktrees when UpdateProject succeeded
2023-01-06 10:41:11 -07:00
Antonio Scandurra
2aedbfec7a
Couple worktree sharing with project metadata updates
2023-01-06 10:31:36 -07:00
Antonio Scandurra
e2c0fa6254
Ensure initial project metadata is sent when first sharing a project
2023-01-06 10:18:26 -07:00
Nathan Sobo
c2ae4edc20
Avoid holding project handle on a call that could hang
...
This fixes a leaked handle error.
2023-01-05 21:01:27 -07:00
Nathan Sobo
09064d29df
Wait for incomplete buffers when handling incoming buffer file updates
2023-01-05 13:50:25 -07:00
c28230fd21
Re-request incomplete remote buffers when syncing buffers
...
Any buffers we requested but that haven't been fully sent will cause
outstainding open requests to hang. If we re-request them, any
waiting open requests will resume when the requested buffers finish
being created.
Co-authored-by: Max Brunsfeld <max@zed.dev >
Co-authored-by: Mikayla Maki <mikayla@zed.dev >
2023-01-04 16:00:43 -07:00
Nathan Sobo
80cc0ba9dc
Update scan_id on worktree entries when there is a conflict
...
Forgetting to do this meant we were unable to sync changes with reconnecting
guests in some cases.
2023-01-04 13:59:16 -07:00
Nathan Sobo
e3b9adc8f6
Update buffer files when synchronizing buffers
...
It's possible that the host was disconnected when attempting to notify
guests of a file save, so we need to transmit this in order to correctly
update the file's mtime.
Next failing seed OPERATIONS=200 SEED=6894
2023-01-04 12:33:48 -07:00
Nathan Sobo
01d051d43d
Introduce completed_scan_id to worktree
...
We need to know the most recent scan id we have actually completed. This is to
handle the case where a guest disconnects when we're in the middle of streaming
worktree entries to them. When they reconnect, they need to report a scan_id
from before we started streaming the entries, because we have no record of when
the stream was interrupted.
Next failure:
SEED=5051 ITERATIONS=1 OPERATIONS=200 cargo test --release --package=collab random -- --nocapture
2023-01-03 18:26:57 -07:00
Nathan Sobo
e527caa26d
WIP
2023-01-03 13:30:14 -07:00
Nathan Sobo
fdb51a78b9
Record failing seed
2023-01-02 21:12:39 -07:00
Nathan Sobo
fe90759634
Track open buffers when handling sync requests
...
When a host sends a buffer to a guest for the first time, they record that
they have done so in a set tied to that guest's peer id. When the guest
reconnects and syncs buffers, they do so under a different peer id, so we
need to be sure we track which buffers we have sent them to avoid sending
them the same buffer twice, which violates the guest's assumptions.
2023-01-02 20:27:59 -07:00
Max Brunsfeld
a1a24db841
Assign fake fs entries' mtimes more consistently
2023-01-02 10:20:52 -08:00
Nathan Sobo
b512c661c9
Remove printlns, found a failure
...
Failing seed:
SEED=416 MAX_PEERS=2 ITERATIONS=5000 OPERATIONS=159 cargo +beta test --package=collab random -- --nocapture
2022-12-27 17:01:31 -07:00
Nathan Sobo
b3387b31ac
Set transaction group interval to ZERO by default in tests
...
We were seeing non-deterministic behavior in randomized tests when
generating backtraces took enough time to cause transactions to group
in some cases, but not group in others.
Tests will need to explicitly opt into grouping if they want it by
setting the interval explicitly. We have tests in the text module that
currently test the history grouping explicitly, but I'm not sure
it's needed elsewhere.
2022-12-27 16:47:28 -07:00
Max Brunsfeld
ad007a836e
WIP - Panic immediately when detecting non-determinism via a change to the execution trace
2022-12-23 17:34:13 -08:00
Antonio Scandurra
649e7d2eab
WIP: failing randomized test
...
SEED=175 MAX_PEERS=2 ITERATIONS=1 OPERATIONS=159 cargo test --package=collab random -- --nocapture
2022-12-23 15:02:06 +01:00
Antonio Scandurra
5f13eeb06e
Avoid hanging waiting for operations when buffer has none
2022-12-23 12:26:48 +01:00
Antonio Scandurra
7fc0cd4c8b
Respond with an error when client hasn't got a registered handle
2022-12-23 11:53:13 +01:00
Max Brunsfeld and Antonio Scandurra
a7b871abcd
Excluded deleted entries when initially sending worktrees to guests
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev >
2022-12-22 11:18:10 -08:00
Antonio Scandurra
5f5b420221
WIP: failing test
...
SEED=882 RUST_LOG=collab::tests::randomized_integration_tests=info MAX_PEERS=2 ITERATIONS=1 OPERATIONS=49 cargo test --package=collab random -- --nocapture
2022-12-22 18:32:21 +01:00
Antonio Scandurra
d4fd5df990
Restructure randomized test to be a bit clearer and test more stuff
2022-12-22 17:54:25 +01:00
Max Brunsfeld and Antonio Scandurra
a0c1217bbc
Handle file and diff updates to incomplete buffers
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev >
2022-12-21 15:39:57 -08:00
Max Brunsfeld and Nathan Sobo
c07f90cb54
Assert that buffers' file state matches in randomized collab test
...
Co-authored-by: Nathan Sobo <nathan@zed.dev >
2022-12-21 15:38:44 -08:00
Max Brunsfeld and Nathan Sobo
7fdb0c1234
In randomized test, open remote projects via the room
...
Co-authored-by: Nathan Sobo <nathan@zed.dev >
2022-12-21 14:13:43 -08:00
Max Brunsfeld
370c08ec41
💄 Avoid referring to all clients as guests in random integration test
2022-12-21 11:37:18 -08:00
Max Brunsfeld
3bd050e983
Move randomized integration test into its own file
2022-12-21 11:26:24 -08:00
Antonio Scandurra
55c5989abc
Synchronize buffers when either the host or a guest reconnects
2022-12-21 14:20:56 +01:00
Antonio Scandurra
91d2b79aff
Remove unused JoinProjectError
2022-12-21 13:10:07 +01:00
Antonio Scandurra
b1a12cd671
Add failing test for buffer synchronization after disconnecting
2022-12-21 11:56:15 +01:00
Antonio Scandurra
224e642828
Verify removing worktrees while host is offline
2022-12-21 11:47:01 +01:00
Antonio Scandurra
bd34a3b262
Handle proto::UpdateProjectCollaborator message in Project
2022-12-21 11:09:27 +01:00
Max Brunsfeld
6e377aa2d9
Refresh project collaborator connection id for rejoined projects
2022-12-20 18:03:33 -08:00
Max Brunsfeld
0f88f651df
💄 Reorder private Project method
2022-12-20 17:32:42 -08:00
Max Brunsfeld
57960beb41
Delete stale projects after cleanup interval, via server foreign key cascade
2022-12-20 17:27:42 -08:00
Max Brunsfeld
4a47b56a72
💄 Avoid repeated sql condition in rejoin_room
2022-12-20 17:23:52 -08:00
Max Brunsfeld
ea7214b0e4
💄 Reduce indentation in Database::rejoin_room
2022-12-20 17:16:56 -08:00
Max Brunsfeld
c7c947dca2
Remove unnecessary UnshareProject message sent to clients leaving a project
2022-12-20 16:58:44 -08:00
Max Brunsfeld
fb1f3b5c4d
Clean up projects when leaving a room
2022-12-20 16:44:57 -08:00