#4242 closed enhancement (fixed)
[PATCH] Rejoin-testing tool
Reported by: | Itms | Owned by: | Itms |
---|---|---|---|
Priority: | Should Have | Milestone: | Alpha 22 |
Component: | Core engine | Keywords: | patch |
Cc: | Patch: |
Description (last modified by )
Even though -serializationtest
allows us to spot any problem that could happen on rejoin, it's really slow and does not allow us to quickly reproduce the issue.
Attached patch, based on a hack by wraitii and elexis, adds a -rejointest=N
cl option that is similar to -serializationtest
but exactly simulates a rejoin. On turn N, a secondary simulation is set up with the serialized data from the primary one, and then both run but without deserializing everything on each turn: only states are compared.
This solution is really fast and you only need the host's commands.txt and the turn number where the guest joined (easy to find in their commands.txt).
Using this along with -ooslog
makes debugging an OOS far less tedious.
Attachments (5)
Change History (13)
by , 8 years ago
Attachment: | rejointest.patch added |
---|
comment:1 by , 8 years ago
Description: | modified (diff) |
---|---|
Keywords: | review added; rfc removed |
Milestone: | Alpha 22 → Alpha 21 |
by , 8 years ago
Attachment: | reproduce_r18756.7z added |
---|
comment:2 by , 8 years ago
Milestone: | Alpha 21 → Alpha 22 |
---|
I don't want 1) to waste time (mine or anyone else's) on completing this patch before FF 2) to risk breaking the serializationtest mode just before a release (this patch still touches quite a lot of things)
As it's a thing used by devs, it's not a big deal to just apply the patch.
by , 8 years ago
Attachment: | rejointest_v2.1.patch added |
---|
Fixes compiler warning about signed / unsigned comparison.
by , 8 years ago
Attachment: | rejointest_alpha20.patch added |
---|
Same patch for alpha 20 (for debugging purposes only)
comment:3 by , 7 years ago
Keywords: | rfc added; review removed |
---|
- It were great if we could have the
Serialization test mode does not support random maps
error on turn 1, instead of simulating the first N turns and then failing.
- Also thought about giving two arguments (host- and rejoined client replay) but that's not worth the effort to implement
comment:4 by , 7 years ago
- A logmessage /
debug_printf
should be added to indicate the start of the rejointest
comment:7 by , 7 years ago
Keywords: | rfc removed |
---|
Had been looking forward for 13 months to see this feature being committed. :)
- The
int64_t
discussion ended with a "hmm" as I recall correctly after laying out that we need to consider-1
in that part if we don't want to add a boolean member. - Adding the
debug_printf
to the start of the rejointest - Not adding a
debug_printf
for "Rejointest failure", as both tests should be considered a serializationtest
The patch is based on wraitiis patch in attachment:serializationChange.patch:ticket:3292, the ticket is a duplicate of #3460.
SAFE_DELETE
wouldn't be preferable (convention perhaps?), even if it's never null?commands.txt
file and could reproduce the OOS. After applying the fix to the OOS I was testing (r18752, #4239), the rejointest passed. The rejoinmode produces the binary and textual simstate and hashes before and after the turn (exactly like the serializationtestmode). As I could exactly reproduce the problem based on the generated data, I have to assume this code to be correct from a blackbox test. Reading the code also shows me that it's very user-friendly implemented (in contrast to the prior WIPs).Can we have alpha 21 OOS-debuggable out of the box?