#!/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))