* Add test pooling and global test setup
* WIP test pooling changes
* Make asynchronous tests the default again
* Finish fixing tests, make test threads background threads
* Un-pool tests with custom cvars
* Fix not changing FailureLogLevel cvar on instance return
* Fix error when overriding already overriden cvar
* Don't pool some physics integration tests
* Unpool engine tests, the technology just isn't there yet
* Remove explicit Pool = false from physics tests
* Change default pooling setting to false
* Didn't need this anyway
* Remove ConfigurationManager.ResetOverrides
* Bring back enum cvar override parsing
* Make integrationInstances name clearer > notPooledInstaces
Make clients ready and servers ready internal
* Add logging test instances
* Give more info on ran tests
* Show total clients and servers in test output
* Wipe LayerMap on SpriteComponent.AfterDeserialize
* Fix server not properly kicking clients
* Rider shut
* Make all test metrics report totals
* Format tests ran better
* Replace Console.WriteLine with TestContext.Out.WriteLine
* Fix two server test pooling info prints using total clients instead of total servers
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
* Removed the Interfaces folder.
* All objects inside the GameObjects subfolders are now in the GameObjects namespace.
* Added a Resharper DotSettings file to mark the GameObjects subfolders as not providing namespaces.
* Simplified Robust.client.Graphics namespace.
* Automated remove redundant using statements.
Lidgren NetTime.Now is now synchronized to IGameTiming.RealTime.
NetChannel is now a nested class of NetManager.
Add IGameTiming.ServerTime, INetChannel.RemoteTimeOffset, INetChannel.RemoteTime
* Some stuff for auth
* Holy crap auth works
* Enable encryption even if no auth token is provided.
It's still possible that the public key was retrieved over HTTPS via the status API, in which case it will be secure.
* Fix integration test compile.
* Secure CVar API.
* Literally rewrite the auth protocol to be minecraft's.
* Better exception tolerance in server handshake.
* Auth works from launcher.
* Fix some usages of UserID instead of UserName
* Fix auth.server CVar
* Kick existing connection if same account connects twice.
* Username assignment, guest session distinguishing.
* Necessary work to make bans work.
* Expose LoginType to OnConnecting.
* Fixing tests and warnings.
Net message functions are now cached when the message is registered or the string table updates (client side). This removes the cache call from DispatchNetMessage.
Receiving net messages that we don't have reception callbacks for, or that are blocked with the new NetMessageAccept enum, will instantly cause the net manager to drop the offending connection to avoid malicious use.
This means trying to send string tables to the server will just result in an instant kick without even hitting ReadFromBuffer().
This allows us to move some if() checks to asserts.
NetSerializer does not handle these well and sends the entire backing array instead of a more compact representation. This can then cause it to start sending lists of length 1 with a *capacity* of 4096 resulting in 250 KiB/s down to send updates for a single entity. As it just did on the public server...
Clients would treat any message coming in as being from the server they're connected to, instead of ignoring them if they're not correct.
This made the client crash inside integration tests because messages came in while disconnected.
This fixes that.