diff --git a/poc/py-ratio1024-log2/testdata/lorem.txt b/poc/py-ratio1024-log2/testdata/lorem.txt new file mode 100644 index 0000000..b0fdc48 --- /dev/null +++ b/poc/py-ratio1024-log2/testdata/lorem.txt @@ -0,0 +1,9 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Eu mi bibendum neque egestas congue quisque egestas. Semper eget duis at tellus at urna. Ac turpis egestas sed tempus urna et. Viverra nibh cras pulvinar mattis nunc sed blandit libero volutpat. Rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar pellentesque. Tincidunt arcu non sodales neque sodales ut etiam. Sit amet aliquam id diam. Non blandit massa enim nec dui. Leo urna molestie at elementum. Sed adipiscing diam donec adipiscing tristique. Duis at consectetur lorem donec. Fringilla phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Adipiscing commodo elit at imperdiet dui accumsan. Ultricies lacus sed turpis tincidunt id aliquet risus feugiat in. Commodo ullamcorper a lacus vestibulum sed arcu non odio euismod. Malesuada bibendum arcu vitae elementum curabitur vitae nunc sed. Morbi tempus iaculis urna id volutpat lacus laoreet non curabitur. Nec nam aliquam sem et tortor consequat id. + +Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Cursus mattis molestie a iaculis at. Proin nibh nisl condimentum id venenatis. Proin nibh nisl condimentum id venenatis a condimentum vitae. A diam maecenas sed enim ut sem viverra aliquet. Id volutpat lacus laoreet non curabitur. At urna condimentum mattis pellentesque. Eu mi bibendum neque egestas congue quisque egestas diam in. Egestas dui id ornare arcu odio. Convallis convallis tellus id interdum velit laoreet id donec. Mattis aliquam faucibus purus in. In massa tempor nec feugiat nisl pretium fusce id. Euismod in pellentesque massa placerat duis. Pellentesque diam volutpat commodo sed egestas egestas fringilla. Pharetra pharetra massa massa ultricies mi quis hendrerit dolor. + +Odio eu feugiat pretium nibh ipsum consequat nisl vel. Quis commodo odio aenean sed adipiscing diam. Ut sem nulla pharetra diam sit. Risus sed vulputate odio ut enim. Morbi tincidunt ornare massa eget egestas purus. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam. Id faucibus nisl tincidunt eget nullam non. Feugiat scelerisque varius morbi enim nunc. In tellus integer feugiat scelerisque varius. Semper feugiat nibh sed pulvinar proin gravida hendrerit lectus. + +Ultrices gravida dictum fusce ut placerat orci nulla. Sodales ut etiam sit amet nisl purus in mollis. Cras ornare arcu dui vivamus arcu felis. Sit amet massa vitae tortor. Ornare arcu odio ut sem nulla pharetra diam. Amet commodo nulla facilisi nullam vehicula ipsum. Porta non pulvinar neque laoreet suspendisse interdum consectetur libero. Dui sapien eget mi proin sed. Enim sit amet venenatis urna cursus eget nunc scelerisque viverra. Eget nunc scelerisque viverra mauris in. Mauris sit amet massa vitae tortor condimentum. Id faucibus nisl tincidunt eget nullam non nisi est sit. Et odio pellentesque diam volutpat. Dignissim convallis aenean et tortor at. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Pretium fusce id velit ut tortor pretium viverra suspendisse potenti. Quis varius quam quisque id diam vel quam. Tellus in metus vulputate eu scelerisque felis imperdiet proin fermentum. Adipiscing diam donec adipiscing tristique risus nec. + +Ullamcorper morbi tincidunt ornare massa. Lacus sed turpis tincidunt id aliquet risus feugiat in ante. Turpis massa tincidunt dui ut ornare. Sed elementum tempus egestas sed sed. Eu mi bibendum neque egestas congue quisque. Euismod in pellentesque massa placerat. Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. At tempor commodo ullamcorper a lacus. Sed viverra ipsum nunc aliquet bibendum. Volutpat commodo sed egestas egestas fringilla phasellus faucibus scelerisque. Amet consectetur adipiscing elit duis tristique sollicitudin nibh sit amet. Aliquam vestibulum morbi blandit cursus risus. Sit amet cursus sit amet dictum sit amet justo. Pellentesque elit eget gravida cum sociis natoque penatibus et magnis. Ultrices eros in cursus turpis massa tincidunt dui ut ornare. Ut pharetra sit amet aliquam id diam maecenas ultricies mi. Facilisi cras fermentum odio eu. diff --git a/poc/py-ratio1024-log2/testdata/rand_0_13.txt b/poc/py-ratio1024-log2/testdata/rand_0_13.txt new file mode 100644 index 0000000..5200779 --- /dev/null +++ b/poc/py-ratio1024-log2/testdata/rand_0_13.txt @@ -0,0 +1,630 @@ +10 +1 +11 +3 +11 +11 +4 +5 +2 +3 +8 +7 +2 +4 +7 +5 +8 +13 +0 +4 +8 +3 +0 +11 +6 +1 +11 +7 +13 +13 +8 +13 +8 +3 +7 +9 +11 +2 +8 +3 +5 +10 +7 +7 +2 +2 +8 +2 +10 +3 +7 +10 +13 +0 +5 +10 +11 +2 +2 +2 +5 +4 +5 +9 +0 +9 +4 +4 +3 +11 +6 +8 +0 +5 +10 +1 +2 +9 +0 +1 +3 +7 +8 +6 +2 +4 +0 +13 +4 +7 +13 +8 +11 +10 +13 +6 +13 +12 +10 +5 +13 +9 +2 +12 +4 +5 +5 +8 +7 +0 +6 +4 +0 +2 +9 +5 +8 +6 +13 +0 +0 +5 +2 +11 +0 +7 +2 +4 +5 +8 +5 +1 +3 +4 +6 +6 +8 +6 +8 +2 +6 +8 +7 +3 +8 +7 +0 +2 +5 +8 +9 +8 +6 +9 +5 +3 +3 +8 +7 +8 +2 +2 +4 +5 +5 +8 +7 +8 +2 +7 +11 +7 +8 +6 +7 +9 +2 +8 +2 +6 +7 +9 +2 +8 +2 +11 +2 +6 +11 +0 +10 +2 +2 +4 +9 +10 +6 +8 +7 +0 +2 +5 +8 +8 +3 +2 +2 +2 +4 +8 +3 +0 +11 +6 +1 +11 +0 +0 +11 +0 +8 +7 +4 +8 +2 +2 +13 +8 +8 +11 +2 +8 +13 +2 +6 +12 +5 +0 +0 +1 +7 +9 +0 +9 +9 +4 +8 +5 +0 +2 +1 +8 +13 +2 +0 +7 +5 +2 +11 +11 +6 +5 +5 +1 +1 +4 +8 +6 +7 +11 +8 +4 +0 +9 +7 +1 +3 +9 +0 +6 +5 +8 +13 +2 +4 +0 +4 +9 +5 +5 +0 +3 +13 +2 +2 +8 +4 +2 +6 +5 +7 +1 +13 +11 +5 +10 +6 +0 +9 +2 +10 +4 +7 +6 +12 +12 +10 +5 +13 +9 +2 +12 +9 +0 +6 +8 +12 +9 +5 +13 +8 +5 +0 +10 +5 +6 +2 +8 +0 +13 +2 +0 +10 +5 +7 +0 +7 +2 +2 +6 +13 +7 +2 +7 +13 +7 +4 +4 +8 +4 +5 +9 +4 +4 +3 +11 +9 +5 +0 +8 +7 +7 +4 +0 +1 +4 +8 +3 +11 +1 +6 +3 +7 +4 +8 +4 +9 +5 +5 +0 +11 +5 +5 +5 +8 +7 +1 +9 +5 +2 +0 +2 +0 +8 +11 +3 +0 +12 +13 +8 +6 +2 +2 +3 +11 +2 +3 +8 +13 +8 +10 +10 +13 +8 +10 +10 +11 +0 +11 +3 +11 +1 +6 +3 +2 +8 +12 +9 +5 +13 +8 +5 +2 +4 +3 +5 +8 +2 +0 +7 +2 +2 +13 +5 +3 +8 +11 +1 +6 +3 +2 +7 +6 +0 +9 +13 +9 +4 +8 +11 +4 +3 +9 +10 +0 +8 +6 +5 +0 +1 +8 +0 +0 +0 +13 +0 +3 +2 +4 +10 +8 +7 +6 +7 +4 +0 +13 +4 +7 +13 +9 +2 +6 +5 +7 +1 +0 +2 +9 +5 +8 +6 +13 +0 +0 +1 +9 +1 +5 +0 +4 +7 +2 +6 +8 +11 +2 +2 +4 +8 +3 +0 +11 +6 +1 +5 +0 +2 +1 +8 +11 +3 +11 +11 +4 +5 +2 +5 +6 +8 +7 +5 +2 +11 +0 +2 +10 +1 +8 +6 +3 +7 +5 +2 +11 +11 +6 +13 +12 +10 +11 +11 +4 +5 +13 +7 +3 +7 +3 +11 +6 +7 +6 +10 +8 +13 +3 +11 +8 +3 +11 +7 +3 +11 +11 +2 +5 +13 +13 +8 +8 +8 +12 +5 +7 +7 +9 +0 +8 +9 +1 +5 +0 +4 +7 +4 +5 +3 +11 +6 +8 +0 +10 +4 +8 +5 +7 +7 +8 +4 diff --git a/poc/py-ratio1024-log2/testdata/rand_0_13_stream.py b/poc/py-ratio1024-log2/testdata/rand_0_13_stream.py new file mode 100644 index 0000000..3b7f946 --- /dev/null +++ b/poc/py-ratio1024-log2/testdata/rand_0_13_stream.py @@ -0,0 +1,33 @@ +import time +import random +from sys import stdout +import argparse + +ap = argparse.ArgumentParser() +ap.add_argument("-b-min", type=int, help="burst minimum", default=1) +ap.add_argument("-b-max", type=int, help="burst maximum", default=20) +ap.add_argument("-d-min", type=int, help="sleep minimum ms", default=0) +ap.add_argument("-d-max", type=int, help="sleep maximum ms", default=3000) +ap.add_argument("-between", type=int, help="between maximum ms", default=1000) +args = ap.parse_args() + +random.seed(int(1000*time.time())) + +def new_burst(): + return random.randint(args.b_min, args.b_max) +def new_between(): + return random.randint(0, args.between) / 1000.0 +def new_delay(): + return random.randint(args.d_min, args.d_max) / 1000.0 + +with open("testdata/rand_0_13.txt", "r") as f: + burst = new_burst() + for line in f.readlines(): + if burst: + print(line.strip(), file=stdout) + stdout.flush() + time.sleep(new_between()) + burst -= 1 + if not burst: + time.sleep(new_delay()) + burst = new_burst() diff --git a/poc/py-ratio1024-log2/testdata/rand_0_n_stream.py b/poc/py-ratio1024-log2/testdata/rand_0_n_stream.py new file mode 100644 index 0000000..267b61e --- /dev/null +++ b/poc/py-ratio1024-log2/testdata/rand_0_n_stream.py @@ -0,0 +1,34 @@ +import time +import random +from sys import stdout +import argparse + +ap = argparse.ArgumentParser() +ap.add_argument("-b-min", type=int, help="burst minimum", default=1) +ap.add_argument("-b-max", type=int, help="burst maximum", default=20) +ap.add_argument("-d-min", type=int, help="sleep minimum ms", default=0) +ap.add_argument("-d-max", type=int, help="sleep maximum ms", default=3000) +ap.add_argument("-between", type=int, help="between maximum ms", default=1000) +ap.add_argument("-n", type=int, help="max to gen", default=14) +args = ap.parse_args() + +random.seed(int(1000*time.time())) + +def new_burst(): + return random.randint(args.b_min, args.b_max) +def new_between(): + return random.randint(0, args.between) / 1000.0 +def new_delay(): + return random.randint(args.d_min, args.d_max) / 1000.0 + +burst = new_burst() +while True: + line = random.randint(0, args.n-1) + if burst: + print(line, file=stdout) + stdout.flush() + time.sleep(new_between()) + burst -= 1 + if not burst: + time.sleep(new_delay()) + burst = new_burst() diff --git a/poc/py-ratio1024-log2/testdata/rand_0_n_weighted_stream.py b/poc/py-ratio1024-log2/testdata/rand_0_n_weighted_stream.py new file mode 100644 index 0000000..ebe63f3 --- /dev/null +++ b/poc/py-ratio1024-log2/testdata/rand_0_n_weighted_stream.py @@ -0,0 +1,49 @@ +import time +import random +from sys import stdout +import argparse + +ap = argparse.ArgumentParser() +ap.add_argument("-b-min", type=int, help="burst minimum", default=1) +ap.add_argument("-b-max", type=int, help="burst maximum", default=20) +ap.add_argument("-d-min", type=int, help="sleep minimum ms", default=0) +ap.add_argument("-d-max", type=int, help="sleep maximum ms", default=3000) +ap.add_argument("-between", type=int, help="between maximum ms", default=1000) +ap.add_argument("-n", type=int, help="max to gen", default=14) +ap.add_argument("-w", type=int, help="weight scalar", default=1) +ap.add_argument("-r-min", type=float, help="rotation interval min", default=1500) +ap.add_argument("-r-max", type=float, help="rotation interval max", default=5000) +args = ap.parse_args() + +random.seed(int(1000*time.time())) + +def new_burst(): + return random.randint(args.b_min, args.b_max) +def new_between(): + return random.randint(0, args.between) / 1000.0 +def new_delay(): + return random.randint(args.d_min, args.d_max) / 1000.0 +def new_rotation_deadline(): + return time.time() + random.randint(args.r_min, args.r_max) / 1000.0 +def new_rotation(): + return random.randint(0, args.n-1) + +pool = [] +for i in range(args.n): + pool.extend([i for _ in range(i**args.w)]) +burst = new_burst() +rotation_deadline = new_rotation_deadline() +rotation = new_rotation() +while True: + line = (pool[random.randint(0, len(pool)-1)] + rotation) % args.n + if burst: + print(line, file=stdout) + stdout.flush() + time.sleep(new_between()) + burst -= 1 + if not burst: + time.sleep(new_delay()) + burst = new_burst() + if time.time() >= rotation_deadline: + rotation = (rotation + new_rotation()) % args.n + rotation_deadline = new_rotation_deadline() diff --git a/poc/py-ratio1024-log2/testdata/words.txt b/poc/py-ratio1024-log2/testdata/words.txt new file mode 100644 index 0000000..9c0d45a --- /dev/null +++ b/poc/py-ratio1024-log2/testdata/words.txt @@ -0,0 +1,630 @@ +lorem +ipsum +dolor +sit +amet, +consectetur +adipiscing +elit, +sed +do +eiusmod +tempor +incididunt +ut +labore +et +dolore +magna +aliqua +eu +mi +bibendum +neque +egestas +congue +quisque +egestas +semper +eget +duis +at +tellus +at +urna +ac +turpis +egestas +sed +tempus +urna +et +viverra +nibh +cras +pulvinar +mattis +nunc +sed +blandit +libero +volutpat +rhoncus +aenean +vel +elit +scelerisque +mauris +pellentesque +pulvinar +pellentesque +tincidunt +arcu +non +sodales +neque +sodales +ut +etiam +sit +amet +aliquam +id +diam +non +blandit +massa +enim +nec +dui +leo +urna +molestie +at +elementum +sed +adipiscing +diam +donec +adipiscing +tristique +duis +at +consectetur +lorem +donec +fringilla +phasellus +faucibus +scelerisque +eleifend +donec +pretium +vulputate +sapien +adipiscing +commodo +elit +at +imperdiet +dui +accumsan +ultricies +lacus +sed +turpis +tincidunt +id +aliquet +risus +feugiat +in +commodo +ullamcorper +a +lacus +vestibulum +sed +arcu +non +odio +euismod +malesuada +bibendum +arcu +vitae +elementum +curabitur +vitae +nunc +sed +morbi +tempus +iaculis +urna +id +volutpat +lacus +laoreet +non +curabitur +nec +nam +aliquam +sem +et +tortor +consequat +id +iaculis +at +erat +pellentesque +adipiscing +commodo +elit +at +imperdiet +cursus +mattis +molestie +a +iaculis +at +proin +nibh +nisl +condimentum +id +venenatis +proin +nibh +nisl +condimentum +id +venenatis +a +condimentum +vitae +a +diam +maecenas +sed +enim +ut +sem +viverra +aliquet +id +volutpat +lacus +laoreet +non +curabitur +at +urna +condimentum +mattis +pellentesque +eu +mi +bibendum +neque +egestas +congue +quisque +egestas +diam +in +egestas +dui +id +ornare +arcu +odio +convallis +convallis +tellus +id +interdum +velit +laoreet +id +donec +mattis +aliquam +faucibus +purus +in +in +massa +tempor +nec +feugiat +nisl +pretium +fusce +id +euismod +in +pellentesque +massa +placerat +duis +pellentesque +diam +volutpat +commodo +sed +egestas +egestas +fringilla +pharetra +pharetra +massa +massa +ultricies +mi +quis +hendrerit +dolor +odio +eu +feugiat +pretium +nibh +ipsum +consequat +nisl +vel +quis +commodo +odio +aenean +sed +adipiscing +diam +ut +sem +nulla +pharetra +diam +sit +risus +sed +vulputate +odio +ut +enim +morbi +tincidunt +ornare +massa +eget +egestas +purus +viverra +accumsan +in +nisl +nisi +scelerisque +eu +ultrices +vitae +auctor +faucibus +scelerisque +eleifend +donec +pretium +vulputate +sapien +nec +sagittis +aliquam +id +faucibus +nisl +tincidunt +eget +nullam +non +feugiat +scelerisque +varius +morbi +enim +nunc +in +tellus +integer +feugiat +scelerisque +varius +semper +feugiat +nibh +sed +pulvinar +proin +gravida +hendrerit +lectus +ultrices +gravida +dictum +fusce +ut +placerat +orci +nulla +sodales +ut +etiam +sit +amet +nisl +purus +in +mollis +cras +ornare +arcu +dui +vivamus +arcu +felis +sit +amet +massa +vitae +tortor +ornare +arcu +odio +ut +sem +nulla +pharetra +diam +amet +commodo +nulla +facilisi +nullam +vehicula +ipsum +porta +non +pulvinar +neque +laoreet +suspendisse +interdum +consectetur +libero +dui +sapien +eget +mi +proin +sed +enim +sit +amet +venenatis +urna +cursus +eget +nunc +scelerisque +viverra +eget +nunc +scelerisque +viverra +mauris +in +mauris +sit +amet +massa +vitae +tortor +condimentum +id +faucibus +nisl +tincidunt +eget +nullam +non +nisi +est +sit +et +odio +pellentesque +diam +volutpat +dignissim +convallis +aenean +et +tortor +at +amet +massa +vitae +tortor +condimentum +lacinia +quis +vel +eros +donec +pretium +fusce +id +velit +ut +tortor +pretium +viverra +suspendisse +potenti +quis +varius +quam +quisque +id +diam +vel +quam +tellus +in +metus +vulputate +eu +scelerisque +felis +imperdiet +proin +fermentum +adipiscing +diam +donec +adipiscing +tristique +risus +nec +ullamcorper +morbi +tincidunt +ornare +massa +lacus +sed +turpis +tincidunt +id +aliquet +risus +feugiat +in +ante +turpis +massa +tincidunt +dui +ut +ornare +sed +elementum +tempus +egestas +sed +sed +eu +mi +bibendum +neque +egestas +congue +quisque +euismod +in +pellentesque +massa +placerat +dolor +sit +amet +consectetur +adipiscing +elit +pellentesque +habitant +morbi +at +tempor +commodo +ullamcorper +a +lacus +sed +viverra +ipsum +nunc +aliquet +bibendum +volutpat +commodo +sed +egestas +egestas +fringilla +phasellus +faucibus +scelerisque +amet +consectetur +adipiscing +elit +duis +tristique +sollicitudin +nibh +sit +amet +aliquam +vestibulum +morbi +blandit +cursus +risus +sit +amet +cursus +sit +amet +dictum +sit +amet +justo +pellentesque +elit +eget +gravida +cum +sociis +natoque +penatibus +et +magnis +ultrices +eros +in +cursus +turpis +massa +tincidunt +dui +ut +ornare +ut +pharetra +sit +amet +aliquam +id +diam +maecenas +ultricies +mi +facilisi +cras +fermentum +odio +eu diff --git a/poc/py-rps/testdata/lorem.txt b/poc/py-rps/testdata/lorem.txt new file mode 100644 index 0000000..b0fdc48 --- /dev/null +++ b/poc/py-rps/testdata/lorem.txt @@ -0,0 +1,9 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Eu mi bibendum neque egestas congue quisque egestas. Semper eget duis at tellus at urna. Ac turpis egestas sed tempus urna et. Viverra nibh cras pulvinar mattis nunc sed blandit libero volutpat. Rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar pellentesque. Tincidunt arcu non sodales neque sodales ut etiam. Sit amet aliquam id diam. Non blandit massa enim nec dui. Leo urna molestie at elementum. Sed adipiscing diam donec adipiscing tristique. Duis at consectetur lorem donec. Fringilla phasellus faucibus scelerisque eleifend donec pretium vulputate sapien. Adipiscing commodo elit at imperdiet dui accumsan. Ultricies lacus sed turpis tincidunt id aliquet risus feugiat in. Commodo ullamcorper a lacus vestibulum sed arcu non odio euismod. Malesuada bibendum arcu vitae elementum curabitur vitae nunc sed. Morbi tempus iaculis urna id volutpat lacus laoreet non curabitur. Nec nam aliquam sem et tortor consequat id. + +Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Cursus mattis molestie a iaculis at. Proin nibh nisl condimentum id venenatis. Proin nibh nisl condimentum id venenatis a condimentum vitae. A diam maecenas sed enim ut sem viverra aliquet. Id volutpat lacus laoreet non curabitur. At urna condimentum mattis pellentesque. Eu mi bibendum neque egestas congue quisque egestas diam in. Egestas dui id ornare arcu odio. Convallis convallis tellus id interdum velit laoreet id donec. Mattis aliquam faucibus purus in. In massa tempor nec feugiat nisl pretium fusce id. Euismod in pellentesque massa placerat duis. Pellentesque diam volutpat commodo sed egestas egestas fringilla. Pharetra pharetra massa massa ultricies mi quis hendrerit dolor. + +Odio eu feugiat pretium nibh ipsum consequat nisl vel. Quis commodo odio aenean sed adipiscing diam. Ut sem nulla pharetra diam sit. Risus sed vulputate odio ut enim. Morbi tincidunt ornare massa eget egestas purus. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam. Id faucibus nisl tincidunt eget nullam non. Feugiat scelerisque varius morbi enim nunc. In tellus integer feugiat scelerisque varius. Semper feugiat nibh sed pulvinar proin gravida hendrerit lectus. + +Ultrices gravida dictum fusce ut placerat orci nulla. Sodales ut etiam sit amet nisl purus in mollis. Cras ornare arcu dui vivamus arcu felis. Sit amet massa vitae tortor. Ornare arcu odio ut sem nulla pharetra diam. Amet commodo nulla facilisi nullam vehicula ipsum. Porta non pulvinar neque laoreet suspendisse interdum consectetur libero. Dui sapien eget mi proin sed. Enim sit amet venenatis urna cursus eget nunc scelerisque viverra. Eget nunc scelerisque viverra mauris in. Mauris sit amet massa vitae tortor condimentum. Id faucibus nisl tincidunt eget nullam non nisi est sit. Et odio pellentesque diam volutpat. Dignissim convallis aenean et tortor at. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Pretium fusce id velit ut tortor pretium viverra suspendisse potenti. Quis varius quam quisque id diam vel quam. Tellus in metus vulputate eu scelerisque felis imperdiet proin fermentum. Adipiscing diam donec adipiscing tristique risus nec. + +Ullamcorper morbi tincidunt ornare massa. Lacus sed turpis tincidunt id aliquet risus feugiat in ante. Turpis massa tincidunt dui ut ornare. Sed elementum tempus egestas sed sed. Eu mi bibendum neque egestas congue quisque. Euismod in pellentesque massa placerat. Dolor sit amet consectetur adipiscing elit pellentesque habitant morbi. At tempor commodo ullamcorper a lacus. Sed viverra ipsum nunc aliquet bibendum. Volutpat commodo sed egestas egestas fringilla phasellus faucibus scelerisque. Amet consectetur adipiscing elit duis tristique sollicitudin nibh sit amet. Aliquam vestibulum morbi blandit cursus risus. Sit amet cursus sit amet dictum sit amet justo. Pellentesque elit eget gravida cum sociis natoque penatibus et magnis. Ultrices eros in cursus turpis massa tincidunt dui ut ornare. Ut pharetra sit amet aliquam id diam maecenas ultricies mi. Facilisi cras fermentum odio eu. diff --git a/poc/py-rps/testdata/rand_0_13.txt b/poc/py-rps/testdata/rand_0_13.txt new file mode 100644 index 0000000..5200779 --- /dev/null +++ b/poc/py-rps/testdata/rand_0_13.txt @@ -0,0 +1,630 @@ +10 +1 +11 +3 +11 +11 +4 +5 +2 +3 +8 +7 +2 +4 +7 +5 +8 +13 +0 +4 +8 +3 +0 +11 +6 +1 +11 +7 +13 +13 +8 +13 +8 +3 +7 +9 +11 +2 +8 +3 +5 +10 +7 +7 +2 +2 +8 +2 +10 +3 +7 +10 +13 +0 +5 +10 +11 +2 +2 +2 +5 +4 +5 +9 +0 +9 +4 +4 +3 +11 +6 +8 +0 +5 +10 +1 +2 +9 +0 +1 +3 +7 +8 +6 +2 +4 +0 +13 +4 +7 +13 +8 +11 +10 +13 +6 +13 +12 +10 +5 +13 +9 +2 +12 +4 +5 +5 +8 +7 +0 +6 +4 +0 +2 +9 +5 +8 +6 +13 +0 +0 +5 +2 +11 +0 +7 +2 +4 +5 +8 +5 +1 +3 +4 +6 +6 +8 +6 +8 +2 +6 +8 +7 +3 +8 +7 +0 +2 +5 +8 +9 +8 +6 +9 +5 +3 +3 +8 +7 +8 +2 +2 +4 +5 +5 +8 +7 +8 +2 +7 +11 +7 +8 +6 +7 +9 +2 +8 +2 +6 +7 +9 +2 +8 +2 +11 +2 +6 +11 +0 +10 +2 +2 +4 +9 +10 +6 +8 +7 +0 +2 +5 +8 +8 +3 +2 +2 +2 +4 +8 +3 +0 +11 +6 +1 +11 +0 +0 +11 +0 +8 +7 +4 +8 +2 +2 +13 +8 +8 +11 +2 +8 +13 +2 +6 +12 +5 +0 +0 +1 +7 +9 +0 +9 +9 +4 +8 +5 +0 +2 +1 +8 +13 +2 +0 +7 +5 +2 +11 +11 +6 +5 +5 +1 +1 +4 +8 +6 +7 +11 +8 +4 +0 +9 +7 +1 +3 +9 +0 +6 +5 +8 +13 +2 +4 +0 +4 +9 +5 +5 +0 +3 +13 +2 +2 +8 +4 +2 +6 +5 +7 +1 +13 +11 +5 +10 +6 +0 +9 +2 +10 +4 +7 +6 +12 +12 +10 +5 +13 +9 +2 +12 +9 +0 +6 +8 +12 +9 +5 +13 +8 +5 +0 +10 +5 +6 +2 +8 +0 +13 +2 +0 +10 +5 +7 +0 +7 +2 +2 +6 +13 +7 +2 +7 +13 +7 +4 +4 +8 +4 +5 +9 +4 +4 +3 +11 +9 +5 +0 +8 +7 +7 +4 +0 +1 +4 +8 +3 +11 +1 +6 +3 +7 +4 +8 +4 +9 +5 +5 +0 +11 +5 +5 +5 +8 +7 +1 +9 +5 +2 +0 +2 +0 +8 +11 +3 +0 +12 +13 +8 +6 +2 +2 +3 +11 +2 +3 +8 +13 +8 +10 +10 +13 +8 +10 +10 +11 +0 +11 +3 +11 +1 +6 +3 +2 +8 +12 +9 +5 +13 +8 +5 +2 +4 +3 +5 +8 +2 +0 +7 +2 +2 +13 +5 +3 +8 +11 +1 +6 +3 +2 +7 +6 +0 +9 +13 +9 +4 +8 +11 +4 +3 +9 +10 +0 +8 +6 +5 +0 +1 +8 +0 +0 +0 +13 +0 +3 +2 +4 +10 +8 +7 +6 +7 +4 +0 +13 +4 +7 +13 +9 +2 +6 +5 +7 +1 +0 +2 +9 +5 +8 +6 +13 +0 +0 +1 +9 +1 +5 +0 +4 +7 +2 +6 +8 +11 +2 +2 +4 +8 +3 +0 +11 +6 +1 +5 +0 +2 +1 +8 +11 +3 +11 +11 +4 +5 +2 +5 +6 +8 +7 +5 +2 +11 +0 +2 +10 +1 +8 +6 +3 +7 +5 +2 +11 +11 +6 +13 +12 +10 +11 +11 +4 +5 +13 +7 +3 +7 +3 +11 +6 +7 +6 +10 +8 +13 +3 +11 +8 +3 +11 +7 +3 +11 +11 +2 +5 +13 +13 +8 +8 +8 +12 +5 +7 +7 +9 +0 +8 +9 +1 +5 +0 +4 +7 +4 +5 +3 +11 +6 +8 +0 +10 +4 +8 +5 +7 +7 +8 +4 diff --git a/poc/py-rps/testdata/rand_0_13_stream.py b/poc/py-rps/testdata/rand_0_13_stream.py new file mode 100644 index 0000000..3b7f946 --- /dev/null +++ b/poc/py-rps/testdata/rand_0_13_stream.py @@ -0,0 +1,33 @@ +import time +import random +from sys import stdout +import argparse + +ap = argparse.ArgumentParser() +ap.add_argument("-b-min", type=int, help="burst minimum", default=1) +ap.add_argument("-b-max", type=int, help="burst maximum", default=20) +ap.add_argument("-d-min", type=int, help="sleep minimum ms", default=0) +ap.add_argument("-d-max", type=int, help="sleep maximum ms", default=3000) +ap.add_argument("-between", type=int, help="between maximum ms", default=1000) +args = ap.parse_args() + +random.seed(int(1000*time.time())) + +def new_burst(): + return random.randint(args.b_min, args.b_max) +def new_between(): + return random.randint(0, args.between) / 1000.0 +def new_delay(): + return random.randint(args.d_min, args.d_max) / 1000.0 + +with open("testdata/rand_0_13.txt", "r") as f: + burst = new_burst() + for line in f.readlines(): + if burst: + print(line.strip(), file=stdout) + stdout.flush() + time.sleep(new_between()) + burst -= 1 + if not burst: + time.sleep(new_delay()) + burst = new_burst() diff --git a/poc/py-rps/testdata/rand_0_n_stream.py b/poc/py-rps/testdata/rand_0_n_stream.py new file mode 100644 index 0000000..267b61e --- /dev/null +++ b/poc/py-rps/testdata/rand_0_n_stream.py @@ -0,0 +1,34 @@ +import time +import random +from sys import stdout +import argparse + +ap = argparse.ArgumentParser() +ap.add_argument("-b-min", type=int, help="burst minimum", default=1) +ap.add_argument("-b-max", type=int, help="burst maximum", default=20) +ap.add_argument("-d-min", type=int, help="sleep minimum ms", default=0) +ap.add_argument("-d-max", type=int, help="sleep maximum ms", default=3000) +ap.add_argument("-between", type=int, help="between maximum ms", default=1000) +ap.add_argument("-n", type=int, help="max to gen", default=14) +args = ap.parse_args() + +random.seed(int(1000*time.time())) + +def new_burst(): + return random.randint(args.b_min, args.b_max) +def new_between(): + return random.randint(0, args.between) / 1000.0 +def new_delay(): + return random.randint(args.d_min, args.d_max) / 1000.0 + +burst = new_burst() +while True: + line = random.randint(0, args.n-1) + if burst: + print(line, file=stdout) + stdout.flush() + time.sleep(new_between()) + burst -= 1 + if not burst: + time.sleep(new_delay()) + burst = new_burst() diff --git a/poc/py-rps/testdata/words.txt b/poc/py-rps/testdata/words.txt new file mode 100644 index 0000000..9c0d45a --- /dev/null +++ b/poc/py-rps/testdata/words.txt @@ -0,0 +1,630 @@ +lorem +ipsum +dolor +sit +amet, +consectetur +adipiscing +elit, +sed +do +eiusmod +tempor +incididunt +ut +labore +et +dolore +magna +aliqua +eu +mi +bibendum +neque +egestas +congue +quisque +egestas +semper +eget +duis +at +tellus +at +urna +ac +turpis +egestas +sed +tempus +urna +et +viverra +nibh +cras +pulvinar +mattis +nunc +sed +blandit +libero +volutpat +rhoncus +aenean +vel +elit +scelerisque +mauris +pellentesque +pulvinar +pellentesque +tincidunt +arcu +non +sodales +neque +sodales +ut +etiam +sit +amet +aliquam +id +diam +non +blandit +massa +enim +nec +dui +leo +urna +molestie +at +elementum +sed +adipiscing +diam +donec +adipiscing +tristique +duis +at +consectetur +lorem +donec +fringilla +phasellus +faucibus +scelerisque +eleifend +donec +pretium +vulputate +sapien +adipiscing +commodo +elit +at +imperdiet +dui +accumsan +ultricies +lacus +sed +turpis +tincidunt +id +aliquet +risus +feugiat +in +commodo +ullamcorper +a +lacus +vestibulum +sed +arcu +non +odio +euismod +malesuada +bibendum +arcu +vitae +elementum +curabitur +vitae +nunc +sed +morbi +tempus +iaculis +urna +id +volutpat +lacus +laoreet +non +curabitur +nec +nam +aliquam +sem +et +tortor +consequat +id +iaculis +at +erat +pellentesque +adipiscing +commodo +elit +at +imperdiet +cursus +mattis +molestie +a +iaculis +at +proin +nibh +nisl +condimentum +id +venenatis +proin +nibh +nisl +condimentum +id +venenatis +a +condimentum +vitae +a +diam +maecenas +sed +enim +ut +sem +viverra +aliquet +id +volutpat +lacus +laoreet +non +curabitur +at +urna +condimentum +mattis +pellentesque +eu +mi +bibendum +neque +egestas +congue +quisque +egestas +diam +in +egestas +dui +id +ornare +arcu +odio +convallis +convallis +tellus +id +interdum +velit +laoreet +id +donec +mattis +aliquam +faucibus +purus +in +in +massa +tempor +nec +feugiat +nisl +pretium +fusce +id +euismod +in +pellentesque +massa +placerat +duis +pellentesque +diam +volutpat +commodo +sed +egestas +egestas +fringilla +pharetra +pharetra +massa +massa +ultricies +mi +quis +hendrerit +dolor +odio +eu +feugiat +pretium +nibh +ipsum +consequat +nisl +vel +quis +commodo +odio +aenean +sed +adipiscing +diam +ut +sem +nulla +pharetra +diam +sit +risus +sed +vulputate +odio +ut +enim +morbi +tincidunt +ornare +massa +eget +egestas +purus +viverra +accumsan +in +nisl +nisi +scelerisque +eu +ultrices +vitae +auctor +faucibus +scelerisque +eleifend +donec +pretium +vulputate +sapien +nec +sagittis +aliquam +id +faucibus +nisl +tincidunt +eget +nullam +non +feugiat +scelerisque +varius +morbi +enim +nunc +in +tellus +integer +feugiat +scelerisque +varius +semper +feugiat +nibh +sed +pulvinar +proin +gravida +hendrerit +lectus +ultrices +gravida +dictum +fusce +ut +placerat +orci +nulla +sodales +ut +etiam +sit +amet +nisl +purus +in +mollis +cras +ornare +arcu +dui +vivamus +arcu +felis +sit +amet +massa +vitae +tortor +ornare +arcu +odio +ut +sem +nulla +pharetra +diam +amet +commodo +nulla +facilisi +nullam +vehicula +ipsum +porta +non +pulvinar +neque +laoreet +suspendisse +interdum +consectetur +libero +dui +sapien +eget +mi +proin +sed +enim +sit +amet +venenatis +urna +cursus +eget +nunc +scelerisque +viverra +eget +nunc +scelerisque +viverra +mauris +in +mauris +sit +amet +massa +vitae +tortor +condimentum +id +faucibus +nisl +tincidunt +eget +nullam +non +nisi +est +sit +et +odio +pellentesque +diam +volutpat +dignissim +convallis +aenean +et +tortor +at +amet +massa +vitae +tortor +condimentum +lacinia +quis +vel +eros +donec +pretium +fusce +id +velit +ut +tortor +pretium +viverra +suspendisse +potenti +quis +varius +quam +quisque +id +diam +vel +quam +tellus +in +metus +vulputate +eu +scelerisque +felis +imperdiet +proin +fermentum +adipiscing +diam +donec +adipiscing +tristique +risus +nec +ullamcorper +morbi +tincidunt +ornare +massa +lacus +sed +turpis +tincidunt +id +aliquet +risus +feugiat +in +ante +turpis +massa +tincidunt +dui +ut +ornare +sed +elementum +tempus +egestas +sed +sed +eu +mi +bibendum +neque +egestas +congue +quisque +euismod +in +pellentesque +massa +placerat +dolor +sit +amet +consectetur +adipiscing +elit +pellentesque +habitant +morbi +at +tempor +commodo +ullamcorper +a +lacus +sed +viverra +ipsum +nunc +aliquet +bibendum +volutpat +commodo +sed +egestas +egestas +fringilla +phasellus +faucibus +scelerisque +amet +consectetur +adipiscing +elit +duis +tristique +sollicitudin +nibh +sit +amet +aliquam +vestibulum +morbi +blandit +cursus +risus +sit +amet +cursus +sit +amet +dictum +sit +amet +justo +pellentesque +elit +eget +gravida +cum +sociis +natoque +penatibus +et +magnis +ultrices +eros +in +cursus +turpis +massa +tincidunt +dui +ut +ornare +ut +pharetra +sit +amet +aliquam +id +diam +maecenas +ultricies +mi +facilisi +cras +fermentum +odio +eu