71 lines
2.9 KiB
Python
71 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
"""Временный замер: точная копия invalid_cases из load_test.py + подсчёт кодов.
|
|
Цель: выяснить фактическое распределение кодов в самом тесте."""
|
|
import boto3
|
|
import collections
|
|
import random
|
|
|
|
from botocore.config import Config
|
|
from botocore.exceptions import ClientError
|
|
|
|
ENDPOINT = "https://sqs.containerk8s.dev.nubes.ru"
|
|
|
|
sqs = boto3.client(
|
|
"sqs",
|
|
endpoint_url=ENDPOINT,
|
|
region_name="us-east-1",
|
|
config=Config(connect_timeout=10, read_timeout=25, retries={"max_attempts": 2}),
|
|
)
|
|
|
|
res = collections.Counter()
|
|
|
|
|
|
def invalid_cases():
|
|
cases = []
|
|
cases.append(lambda: sqs.send_message(QueueUrl=ENDPOINT + "/no-such-queue", MessageBody="x"))
|
|
cases.append(lambda: sqs.receive_message(QueueUrl=ENDPOINT + "/no-such-queue"))
|
|
cases.append(lambda: sqs.delete_queue(QueueUrl=ENDPOINT + "/no-such-queue"))
|
|
cases.append(lambda: sqs.get_queue_url(QueueName="no-such-queue-load-test"))
|
|
cases.append(lambda: sqs.delete_message(QueueUrl=ENDPOINT + "/no-such-queue", ReceiptHandle="broken"))
|
|
q = sqs.create_queue(QueueName="invalid-%d" % random.randint(0, 10**9))["QueueUrl"]
|
|
try:
|
|
cases.append(lambda: sqs.set_queue_attributes(QueueUrl=q, Attributes={"VisibilityTimeout": "43201"}))
|
|
cases.append(lambda: sqs.set_queue_attributes(QueueUrl=q, Attributes={"VisibilityTimeout": "not-a-number"}))
|
|
cases.append(lambda: sqs.set_queue_attributes(QueueUrl=q, Attributes={"BadAttribute": "1"}))
|
|
|
|
def purge_twice():
|
|
sqs.purge_queue(QueueUrl=q)
|
|
sqs.purge_queue(QueueUrl=q)
|
|
|
|
cases.append(purge_twice)
|
|
cases.append(lambda: sqs.send_message_batch(QueueUrl=q, Entries=[{"Id": str(i), "MessageBody": "x"} for i in range(11)]))
|
|
cases.append(lambda: sqs.send_message_batch(QueueUrl=q, Entries=[{"Id": "dup", "MessageBody": "a"}, {"Id": "dup", "MessageBody": "b"}]))
|
|
cases.append(lambda: sqs.send_message_batch(QueueUrl=q, Entries=[]))
|
|
cases.append(lambda: sqs.send_message(QueueUrl=q, MessageBody=""))
|
|
cases.append(lambda: sqs.send_message(QueueUrl=q, MessageBody="x" * (300 * 1024)))
|
|
fq = sqs.create_queue(QueueName="invalid-%d.fifo" % random.randint(0, 10**9), Attributes={"FifoQueue": "true"})["QueueUrl"]
|
|
try:
|
|
cases.append(lambda: sqs.send_message(QueueUrl=fq, MessageBody="x", MessageDeduplicationId="d"))
|
|
finally:
|
|
sqs.delete_queue(QueueUrl=fq)
|
|
finally:
|
|
sqs.delete_queue(QueueUrl=q)
|
|
|
|
for c in cases:
|
|
try:
|
|
c()
|
|
res["PASS-не отклонено"] += 1
|
|
except ClientError as e:
|
|
res[e.response.get("Error", {}).get("Code", "Unknown")] += 1
|
|
except Exception as e:
|
|
res[type(e).__name__] += 1
|
|
|
|
|
|
N = 100
|
|
for _ in range(N):
|
|
invalid_cases()
|
|
|
|
print("cycles=%d" % N)
|
|
for k, v in sorted(res.items(), key=lambda x: -x[1]):
|
|
print("%s: %d" % (k, v))
|