X-Git-Url: http://www.average.org/gitweb/?p=loctrkd.git;a=blobdiff_plain;f=test%2Ftest_fuzz_bs.py;fp=test%2Ftest_fuzz_bs.py;h=ca63c0fef1e47bc9777892aa755e1a3eb462af31;hp=0000000000000000000000000000000000000000;hb=718dd83f618a0ee2674450162aba85cfed447512;hpb=f55e1a18723a3b3aca34e9a4b8b878860f951e52 diff --git a/test/test_fuzz_bs.py b/test/test_fuzz_bs.py new file mode 100644 index 0000000..ca63c0f --- /dev/null +++ b/test/test_fuzz_bs.py @@ -0,0 +1,47 @@ +""" Send junk to the collector """ + +import unittest +from .common import send_and_drain, TestWithServers, Fuzz + +REPEAT: int = 1000000 + + +class FuzzMsgs(Fuzz): + def test_msgs(self) -> None: + imeis = list( + self.rnd.randint(1000000000, 9999999999) for _ in range(3) + ) + for _ in range(REPEAT): + base_size = self.rnd.randint(0, 5000) + size = base_size + ( + (self.rnd.randint(-5, 5) // 5) * self.rnd.randint(1, 20) + ) + if size < 0: + size = 0 + imei = f"{self.rnd.choice(imeis):d}".encode("ascii") + commapos = self.rnd.randint(0, 10) + if commapos > 0 and commapos < base_size: + payload = ( + self.rnd.randbytes(commapos - 1) + + b"," + + self.rnd.randbytes(base_size - commapos) + ) + else: + payload = self.rnd.randbytes(base_size) + # print(imei, base_size, size) + # "\[(\w\w)\*(\d{10})\*([0-9a-fA-F]{4})\*" + buf = ( + b"[TS*" + + imei + + b"*" + + f"{size:04x}".encode("ascii") + + b"*" + + self.rnd.randbytes(base_size) + + b"]" + ) + # print(buf[:64], "len:", len(buf)) + send_and_drain(self.sock, buf) + + +if __name__ == "__main__": + unittest.main()