Files
predictiple ee803d0fcb Add unique emulated identities to pool clients (#5007)
While the pool client is designed for _server_ load testing, it has
shown itself to be useful for testing/learning/development scenarios too
(for example, testing hunt behaviours).

This PR preserves the load-testing aspects but adds some features that
make the pool client more human-friendly and therefore more useful for
lab and learning environments.

Each pool client now presents a unique hostname and FQDN (e.g.
"quantum-phoenix.example.com") to the server instead of the real host's
hostname suffixed with the client id. The FQDN reuses the domain of the
host running the pool client so the emulated clients appear to belong to
the same network. Hostnames are adjective-noun combinations (e.g.
"quantum-phoenix") - a numeric suffix is only appended when the number
of clients is almost ten thousand. Name collisions are possible if
running pool clients simultaneously on multiple hosts connected to the
same server, but the server is designed to expect name collisions in the
real world, so it's not an issue.

Identities are generated upfront for all clients and applied to the
`BasicInformation` and `DetailedInfo` sources of the
`Generic.Client.Info` interrogation, as well as the periodic client info
messages.

Writebacks now default to in-memory only (`memory:// scheme`) so no
writeback files are written to disk and each client's identity is
ephemeral. This makes it easy to spin up clients -> run some tests ->
stop the clients -> delete the data -> repeat, without needing to go
clean up hundreds of writeback files each time. This also makes it easy
to create massive amounts of hunt data in batches (create hunt -> add
10,000 clients -> hunt collections run -> stop clients -> add 10,000 new
clients -> hunt collections run -> stop clients -> repeat) for
server-side query performance testing.

The writeback location is now configured for all platforms - previously
Darwin was left unset and fell back to the config file's path, causing
all clients on macOS to share a single writeback file. The root config
loader no longer requires a writeback file, but it is still available if
you need persistent pool client identities.

Screenshots:

<img width="1600" height="800" alt="pool_client"
src="https://github.com/user-attachments/assets/53d14917-4252-4924-857c-acee5c6708eb"
/>

<img width="1200" height="637" alt="pool_client2"
src="https://github.com/user-attachments/assets/c42300ec-4869-465b-b4d6-2141dcbca6bd"
/>
2026-09-10 18:14:05 +10:00
..
2025-07-27 17:16:22 +10:00
2025-11-01 01:58:11 +10:00
2025-09-16 14:11:14 +10:00
2025-07-27 17:16:22 +10:00