• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

polserver / polserver / 36121560630
82%

Build:
DEFAULT BRANCH: master
Ran 25 Sep 2026 10:19AM UTC
Jobs 1
Files 856
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

25 Sep 2026 10:00AM UTC coverage: 81.977% (+0.06%) from 81.919%
36121560630

push

github

web-flow
Make the test client's packet codec and wakeups cheap (#981)

* Read and write packets without recopying them per field

rpb() resliced the receive buffer for every field, so decoding cost the
square of the packet length. It now reads at the readCount cursor, and
the scalar readers use prebuilt struct.Structs.

encode() grew a bytes object per field, and eulen() rebuilt the packet
around its length. The chunks are now joined once, and the length slot
is patched by index. fixStr() is a slice and a pad.

Decoding every packet class over pseudo-random buffers gives the same
result as the old codec.

* Wake the test client's loops on a signal instead of polling them

A round trip between a test script and its client crossed four pollers
and cost about 60ms. The harness, the brain and the client loop now
block on a socket or an event the producer sets, and TCP_NODELAY is on
for all three sockets. A round trip costs about 5ms.

- The client loop handles every packet that is ready per turn. The out
  of range sweep runs only when something may have left range.
- Huffman decoding is a memoized byte-at-a-time table that resumes
  across partial reads. It is about 6.4 times faster, and round-trips
  payloads up to 8KB through an encoder built from the same tree.
- The uncompressed path frames packets by length instead of assuming
  one packet per recv().
- Both sockets use sendall(). recv() keeps its blocking flag. A clean
  EOF on the control socket ends the client instead of spinning.
- The client logs at WARNING by default, and
  POLCORE_TESTCLIENT_LOGLEVEL raises it. The shard already dumps the
  client messages when a test fails.

* Fix eight defects in the test client

- CorpseEquipmentPacket appended to a class-level list, so each 0x89
  corpse also got the equipment of every corpse decoded before it.
- The @clientthread guard compared the wrong name and never checked
  anything.
- An unsolicited 0x21 or 0x22 tripped a bare assert. It now raises an
  err... (continued)

60290 of 73545 relevant lines covered (81.98%)

1579948.33 hits per line

Coverage Regressions

Lines Coverage ∆ File
4
88.69
-0.9% pol-core/pol/module/npcmod.cpp
2
63.41
0.0% pol-core/pol/mobile/ufacing.cpp
Jobs
ID Job ID Ran Files Coverage
1 36121560630.1 25 Sep 2026 10:19AM UTC 856
81.98
GitHub Action Run
Source Files on build 36121560630
  • Tree
  • List 856
  • Changed 10
  • Source Changed 0
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • dbc08076 on github
  • Prev Build on master (#35912421022)
  • Next Build on master (#36186523474)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc