Skip to content

Commit a63d3c4

Browse files
authored
Enforce formatting
1 parent 455bdf3 commit a63d3c4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+2302
-1843
lines changed

.github/workflows/check.yml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Check
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
branches:
8+
- "*"
9+
jobs:
10+
format:
11+
runs-on: ubuntu-latest
12+
name: Format
13+
steps:
14+
- name: Check out repository
15+
uses: actions/checkout@v3
16+
17+
- name: Set up Python
18+
uses: actions/setup-python@v4
19+
with:
20+
python-version: "3.8"
21+
22+
- name: Install dependencies
23+
run: |
24+
python -m pip install --upgrade pip
25+
pip install pipenv
26+
pipenv install --dev
27+
28+
- name: Run format check
29+
run: |
30+
pipenv run yapf --diff --recursive .

.github/workflows/test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
3434
- name: Run tests
3535
run: |
36-
pipenv run flake8 --ignore=W391 ./nats/js/
36+
pipenv run flake8 --ignore="W391, W503, W504" ./nats/js/
3737
pipenv run pytest -x -vv -s --continue-on-collection-errors
3838
env:
3939
PATH: $HOME/nats-server:$PATH

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ ci: deps
3737
# pipenv run yapf --recursive --diff $(SOURCE_CODE)
3838
# pipenv run yapf --recursive --diff tests
3939
# pipenv run mypy
40-
pipenv run flake8 --ignore=W391 ./nats/js/
40+
pipenv run flake8 --ignore="W391, W503, W504" ./nats/js/
4141
pipenv run pytest -x -vv -s --continue-on-collection-errors
4242

4343
watch:

benchmark/inbox_perf.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,23 @@
22

33
from nats.nuid import NUID
44

5-
INBOX_PREFIX = bytearray(b'_INBOX.')
5+
INBOX_PREFIX = bytearray(b"_INBOX.")
6+
67

78
def gen_inboxes_nuid(n):
89
nuid = NUID()
910
for i in range(0, n):
1011
inbox = INBOX_PREFIX[:]
1112
inbox.extend(nuid.next())
12-
inbox.extend(b'.')
13+
inbox.extend(b".")
1314
inbox.extend(nuid.next())
1415

15-
if __name__ == '__main__':
16+
17+
if __name__ == "__main__":
1618
benchs = [
1719
"gen_inboxes_nuid(100000)",
1820
"gen_inboxes_nuid(1000000)",
19-
]
21+
]
2022
for bench in benchs:
2123
print(f"=== {bench}")
2224
prof.run(bench)

benchmark/latency_perf.py

+61-50
Original file line numberDiff line numberDiff line change
@@ -10,66 +10,77 @@
1010
HASH_MODULO = 250
1111

1212
try:
13-
import uvloop
14-
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
13+
import uvloop
14+
15+
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
1516
except:
16-
pass
17+
pass
18+
1719

1820
def show_usage():
19-
message = """
21+
message = """
2022
Usage: latency_perf [options]
2123
2224
options:
2325
-n ITERATIONS Iterations to spec (default: 1000)
2426
-S SUBJECT Send subject (default: (test)
2527
"""
26-
print(message)
28+
print(message)
29+
2730

2831
def show_usage_and_die():
29-
show_usage()
30-
sys.exit(1)
32+
show_usage()
33+
sys.exit(1)
34+
3135

3236
async def main():
33-
parser = argparse.ArgumentParser()
34-
parser.add_argument('-n', '--iterations', default=DEFAULT_ITERATIONS, type=int)
35-
parser.add_argument('-S', '--subject', default='test')
36-
parser.add_argument('--servers', default=[], action='append')
37-
args = parser.parse_args()
38-
39-
servers = args.servers
40-
if len(args.servers) < 1:
41-
servers = ["nats://127.0.0.1:4222"]
42-
43-
try:
44-
nc = await nats.connect(servers)
45-
except Exception as e:
46-
sys.stderr.write(f"ERROR: {e}")
47-
show_usage_and_die()
48-
49-
async def handler(msg):
50-
await nc.publish(msg.reply, b'')
51-
await nc.subscribe(args.subject, cb=handler)
52-
53-
# Start the benchmark
54-
start = time.monotonic()
55-
to_send = args.iterations
56-
57-
print("Sending {} request/responses on [{}]".format(
58-
args.iterations, args.subject))
59-
while to_send > 0:
60-
to_send -= 1
61-
if to_send == 0:
62-
break
63-
64-
await nc.request(args.subject, b'')
65-
if (to_send % HASH_MODULO) == 0:
66-
sys.stdout.write("#")
67-
sys.stdout.flush()
68-
69-
duration = time.monotonic() - start
70-
ms = "%.3f" % ((duration/args.iterations) * 1000)
71-
print(f"\nTest completed : {ms} ms avg request/response latency")
72-
await nc.close()
73-
74-
if __name__ == '__main__':
75-
asyncio.run(main())
37+
parser = argparse.ArgumentParser()
38+
parser.add_argument(
39+
"-n", "--iterations", default=DEFAULT_ITERATIONS, type=int
40+
)
41+
parser.add_argument("-S", "--subject", default="test")
42+
parser.add_argument("--servers", default=[], action="append")
43+
args = parser.parse_args()
44+
45+
servers = args.servers
46+
if len(args.servers) < 1:
47+
servers = ["nats://127.0.0.1:4222"]
48+
49+
try:
50+
nc = await nats.connect(servers)
51+
except Exception as e:
52+
sys.stderr.write(f"ERROR: {e}")
53+
show_usage_and_die()
54+
55+
async def handler(msg):
56+
await nc.publish(msg.reply, b"")
57+
58+
await nc.subscribe(args.subject, cb=handler)
59+
60+
# Start the benchmark
61+
start = time.monotonic()
62+
to_send = args.iterations
63+
64+
print(
65+
"Sending {} request/responses on [{}]".format(
66+
args.iterations, args.subject
67+
)
68+
)
69+
while to_send > 0:
70+
to_send -= 1
71+
if to_send == 0:
72+
break
73+
74+
await nc.request(args.subject, b"")
75+
if (to_send % HASH_MODULO) == 0:
76+
sys.stdout.write("#")
77+
sys.stdout.flush()
78+
79+
duration = time.monotonic() - start
80+
ms = "%.3f" % ((duration / args.iterations) * 1000)
81+
print(f"\nTest completed : {ms} ms avg request/response latency")
82+
await nc.close()
83+
84+
85+
if __name__ == "__main__":
86+
asyncio.run(main())

benchmark/parser_perf.py

+20-17
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ def __init__(self):
1111
self._pongs = []
1212
self._pings_outstanding = 0
1313
self._pongs_received = 0
14-
self._server_info = {"max_payload": 1048576, "auth_required": False }
14+
self._server_info = {"max_payload": 1048576, "auth_required": False}
1515
self.stats = {
16-
'in_msgs': 0,
17-
'out_msgs': 0,
18-
'in_bytes': 0,
19-
'out_bytes': 0,
20-
'reconnects': 0,
21-
'errors_received': 0
22-
}
16+
"in_msgs": 0,
17+
"out_msgs": 0,
18+
"in_bytes": 0,
19+
"out_bytes": 0,
20+
"reconnects": 0,
21+
"errors_received": 0,
22+
}
2323

2424
async def _send_command(self, cmd):
2525
pass
@@ -31,31 +31,34 @@ async def _process_ping(self):
3131
pass
3232

3333
async def _process_msg(self, sid, subject, reply, data):
34-
self.stats['in_msgs'] += 1
35-
self.stats['in_bytes'] += len(data)
34+
self.stats["in_msgs"] += 1
35+
self.stats["in_bytes"] += len(data)
3636

3737
async def _process_err(self, err=None):
3838
pass
3939

40+
4041
def generate_msg(subject, nbytes, reply=""):
4142
msg = []
4243
protocol_line = "MSG {subject} 1 {reply} {nbytes}\r\n".format(
43-
subject=subject, reply=reply, nbytes=nbytes).encode()
44+
subject=subject, reply=reply, nbytes=nbytes
45+
).encode()
4446
msg.append(protocol_line)
45-
msg.append(b'A' * nbytes)
46-
msg.append(b'r\n')
47-
return b''.join(msg)
47+
msg.append(b"A" * nbytes)
48+
msg.append(b"r\n")
49+
return b"".join(msg)
50+
4851

4952
def parse_msgs(max_msgs=1, nbytes=1):
50-
buf = b''.join([generate_msg("foo", nbytes) for i in range(0, max_msgs)])
53+
buf = b"".join([generate_msg("foo", nbytes) for i in range(0, max_msgs)])
5154
print("--- buffer size: {}".format(len(buf)))
5255
loop = asyncio.get_event_loop()
5356
ps = Parser(DummyNatsClient())
5457
loop.run_until_complete(ps.parse(buf))
5558
print("--- stats: ", ps.nc.stats)
5659

57-
if __name__ == '__main__':
5860

61+
if __name__ == "__main__":
5962
benchs = [
6063
"parse_msgs(max_msgs=10000, nbytes=1)",
6164
"parse_msgs(max_msgs=100000, nbytes=1)",
@@ -71,7 +74,7 @@ def parse_msgs(max_msgs=1, nbytes=1):
7174
"parse_msgs(max_msgs=100000, nbytes=8192)",
7275
"parse_msgs(max_msgs=10000, nbytes=16384)",
7376
"parse_msgs(max_msgs=100000, nbytes=16384)",
74-
]
77+
]
7578

7679
for bench in benchs:
7780
print(f"=== {bench}")

benchmark/pub_perf.py

+28-18
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,19 @@
77
import nats
88

99
try:
10-
import uvloop
11-
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
10+
import uvloop
11+
12+
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
1213
except:
13-
pass
14+
pass
1415

1516
DEFAULT_FLUSH_TIMEOUT = 30
1617
DEFAULT_NUM_MSGS = 100000
1718
DEFAULT_MSG_SIZE = 16
1819
DEFAULT_BATCH_SIZE = 100
1920
HASH_MODULO = 1000
2021

22+
2123
def show_usage():
2224
message = """
2325
Usage: pub_perf [options]
@@ -30,32 +32,34 @@ def show_usage():
3032
"""
3133
print(message)
3234

35+
3336
def show_usage_and_die():
3437
show_usage()
3538
sys.exit(1)
3639

40+
3741
async def main():
3842
parser = argparse.ArgumentParser()
39-
parser.add_argument('-n', '--count', default=DEFAULT_NUM_MSGS, type=int)
40-
parser.add_argument('-s', '--size', default=DEFAULT_MSG_SIZE, type=int)
41-
parser.add_argument('-S', '--subject', default='test')
42-
parser.add_argument('-b', '--batch', default=DEFAULT_BATCH_SIZE, type=int)
43-
parser.add_argument('--servers', default=[], action='append')
43+
parser.add_argument("-n", "--count", default=DEFAULT_NUM_MSGS, type=int)
44+
parser.add_argument("-s", "--size", default=DEFAULT_MSG_SIZE, type=int)
45+
parser.add_argument("-S", "--subject", default="test")
46+
parser.add_argument("-b", "--batch", default=DEFAULT_BATCH_SIZE, type=int)
47+
parser.add_argument("--servers", default=[], action="append")
4448
args = parser.parse_args()
4549

4650
data = []
4751
for i in range(0, args.size):
4852
s = "%01x" % randint(0, 15)
4953
data.append(s.encode())
50-
payload = b''.join(data)
54+
payload = b"".join(data)
5155

5256
servers = args.servers
5357
if len(args.servers) < 1:
5458
servers = ["nats://127.0.0.1:4222"]
5559

5660
# Make sure we're connected to a server first..
5761
try:
58-
nc = await nats.connect(servers, pending_size=1024*1024)
62+
nc = await nats.connect(servers, pending_size=1024 * 1024)
5963
except Exception as e:
6064
sys.stderr.write(f"ERROR: {e}")
6165
show_usage_and_die()
@@ -64,8 +68,11 @@ async def main():
6468
start = time.time()
6569
to_send = args.count
6670

67-
print("Sending {} messages of size {} bytes on [{}]".format(
68-
args.count, args.size, args.subject))
71+
print(
72+
"Sending {} messages of size {} bytes on [{}]".format(
73+
args.count, args.size, args.subject
74+
)
75+
)
6976
while to_send > 0:
7077
for i in range(0, args.batch):
7178
to_send -= 1
@@ -86,11 +93,14 @@ async def main():
8693
print(f"Server flush timeout after {DEFAULT_FLUSH_TIMEOUT}")
8794

8895
elapsed = time.time() - start
89-
mbytes = "%.1f" % (((args.size * args.count)/elapsed) / (1024*1024))
90-
print("\nTest completed : {} msgs/sec ({}) MB/sec".format(
91-
args.count/elapsed,
92-
mbytes))
96+
mbytes = "%.1f" % (((args.size * args.count) / elapsed) / (1024 * 1024))
97+
print(
98+
"\nTest completed : {} msgs/sec ({}) MB/sec".format(
99+
args.count / elapsed, mbytes
100+
)
101+
)
93102
await nc.close()
94103

95-
if __name__ == '__main__':
96-
asyncio.run(main())
104+
105+
if __name__ == "__main__":
106+
asyncio.run(main())

0 commit comments

Comments
 (0)