Files
SQS-service/tests/invalid_probe.py
T

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))