mirror of
https://github.com/capnproto/pycapnp.git
synced 2025-03-04 00:14:45 +01:00

- Fixing flake8 configuration to agree with black - Adding black validation check to github actions
74 lines
2 KiB
Python
Executable file
74 lines
2 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
from common import rand_int, rand_double, rand_bool, WORDS, from_bytes_helper
|
|
from random import choice
|
|
from string import ascii_letters
|
|
|
|
try:
|
|
# Python 2
|
|
from itertools import izip
|
|
except ImportError:
|
|
izip = zip
|
|
import catrank_pb2
|
|
|
|
|
|
class Benchmark:
|
|
def __init__(self, compression):
|
|
self.Request = catrank_pb2.SearchResultList
|
|
self.Response = catrank_pb2.SearchResultList
|
|
self.from_bytes_request = from_bytes_helper(catrank_pb2.SearchResultList)
|
|
self.from_bytes_response = from_bytes_helper(catrank_pb2.SearchResultList)
|
|
self.to_bytes = lambda x: x.SerializeToString()
|
|
|
|
def setup(self, request):
|
|
goodCount = 0
|
|
count = rand_int(1000)
|
|
|
|
for i in range(count):
|
|
result = request.result.add()
|
|
result.score = 1000 - i
|
|
url_size = rand_int(100)
|
|
result.url = "http://example.com/" + "".join(
|
|
[choice(ascii_letters) for _ in range(url_size)]
|
|
)
|
|
|
|
isCat = rand_bool()
|
|
isDog = rand_bool()
|
|
if isCat and not isDog:
|
|
goodCount += 1
|
|
|
|
snippet = [choice(WORDS) for i in range(rand_int(20))]
|
|
|
|
if isCat:
|
|
snippet.append(" cat ")
|
|
if isDog:
|
|
snippet.append(" dog ")
|
|
|
|
snippet += [choice(WORDS) for i in range(rand_int(20))]
|
|
|
|
result.snippet = "".join(snippet)
|
|
|
|
return goodCount
|
|
|
|
def handle(self, request, response):
|
|
for req in request.result:
|
|
resp = response.result.add()
|
|
score = req.score
|
|
|
|
if " cat " in req.snippet:
|
|
score *= 10000
|
|
if " dog " in req.snippet:
|
|
score /= 10000
|
|
|
|
resp.score = score
|
|
resp.url = req.url
|
|
resp.snippet = req.snippet
|
|
|
|
def check(self, response, expected):
|
|
goodCount = 0
|
|
|
|
for result in response.result:
|
|
if result.score > 1001:
|
|
goodCount += 1
|
|
|
|
return goodCount == expected
|