146 lines
5.3 KiB
Python
146 lines
5.3 KiB
Python
import boto3
|
|
|
|
from moto import mock_kinesis
|
|
from tests import DEFAULT_ACCOUNT_ID
|
|
from .test_kinesis import get_stream_arn
|
|
|
|
|
|
@mock_kinesis
|
|
def test_enable_enhanced_monitoring_all():
|
|
client = boto3.client("kinesis", region_name="us-east-1")
|
|
stream_name = "my_stream_summary"
|
|
client.create_stream(StreamName=stream_name, ShardCount=4)
|
|
|
|
resp = client.enable_enhanced_monitoring(
|
|
StreamName=stream_name, ShardLevelMetrics=["ALL"]
|
|
)
|
|
|
|
resp.should.have.key("StreamName").equals(stream_name)
|
|
resp.should.have.key("CurrentShardLevelMetrics").equals([])
|
|
resp.should.have.key("DesiredShardLevelMetrics").equals(["ALL"])
|
|
resp.should.have.key("StreamARN").equals(
|
|
f"arn:aws:kinesis:us-east-1:{DEFAULT_ACCOUNT_ID}:stream/{stream_name}"
|
|
)
|
|
|
|
|
|
@mock_kinesis
|
|
def test_enable_enhanced_monitoring_is_persisted():
|
|
client = boto3.client("kinesis", region_name="us-east-1")
|
|
stream_name = "my_stream_summary"
|
|
client.create_stream(StreamName=stream_name, ShardCount=4)
|
|
|
|
client.enable_enhanced_monitoring(
|
|
StreamName=stream_name, ShardLevelMetrics=["IncomingBytes", "OutgoingBytes"]
|
|
)
|
|
|
|
stream = client.describe_stream(StreamName=stream_name)["StreamDescription"]
|
|
metrics = stream["EnhancedMonitoring"][0]["ShardLevelMetrics"]
|
|
set(metrics).should.equal({"IncomingBytes", "OutgoingBytes"})
|
|
|
|
|
|
@mock_kinesis
|
|
def test_enable_enhanced_monitoring_in_steps():
|
|
client = boto3.client("kinesis", region_name="us-east-1")
|
|
stream_name = "my_stream_summary"
|
|
client.create_stream(StreamName=stream_name, ShardCount=4)
|
|
|
|
client.enable_enhanced_monitoring(
|
|
StreamName=stream_name, ShardLevelMetrics=["IncomingBytes", "OutgoingBytes"]
|
|
)
|
|
|
|
resp = client.enable_enhanced_monitoring(
|
|
StreamName=stream_name, ShardLevelMetrics=["WriteProvisionedThroughputExceeded"]
|
|
)
|
|
|
|
resp.should.have.key("CurrentShardLevelMetrics").should.have.length_of(2)
|
|
resp["CurrentShardLevelMetrics"].should.contain("IncomingBytes")
|
|
resp["CurrentShardLevelMetrics"].should.contain("OutgoingBytes")
|
|
resp.should.have.key("DesiredShardLevelMetrics").should.have.length_of(3)
|
|
resp["DesiredShardLevelMetrics"].should.contain("IncomingBytes")
|
|
resp["DesiredShardLevelMetrics"].should.contain("OutgoingBytes")
|
|
resp["DesiredShardLevelMetrics"].should.contain(
|
|
"WriteProvisionedThroughputExceeded"
|
|
)
|
|
|
|
stream = client.describe_stream(StreamName=stream_name)["StreamDescription"]
|
|
metrics = stream["EnhancedMonitoring"][0]["ShardLevelMetrics"]
|
|
metrics.should.have.length_of(3)
|
|
metrics.should.contain("IncomingBytes")
|
|
metrics.should.contain("OutgoingBytes")
|
|
metrics.should.contain("WriteProvisionedThroughputExceeded")
|
|
|
|
|
|
@mock_kinesis
|
|
def test_disable_enhanced_monitoring():
|
|
client = boto3.client("kinesis", region_name="us-east-1")
|
|
stream_name = "my_stream_summary"
|
|
client.create_stream(StreamName=stream_name, ShardCount=4)
|
|
stream_arn = get_stream_arn(client, stream_name)
|
|
|
|
client.enable_enhanced_monitoring(
|
|
StreamARN=stream_arn,
|
|
ShardLevelMetrics=[
|
|
"IncomingBytes",
|
|
"OutgoingBytes",
|
|
"WriteProvisionedThroughputExceeded",
|
|
],
|
|
)
|
|
|
|
resp = client.disable_enhanced_monitoring(
|
|
StreamName=stream_name, ShardLevelMetrics=["OutgoingBytes"]
|
|
)
|
|
|
|
resp.should.have.key("StreamName").equals(stream_name)
|
|
resp.should.have.key("StreamARN").equals(
|
|
f"arn:aws:kinesis:us-east-1:{DEFAULT_ACCOUNT_ID}:stream/{stream_name}"
|
|
)
|
|
|
|
resp.should.have.key("CurrentShardLevelMetrics").should.have.length_of(3)
|
|
resp["CurrentShardLevelMetrics"].should.contain("IncomingBytes")
|
|
resp["CurrentShardLevelMetrics"].should.contain("OutgoingBytes")
|
|
resp["CurrentShardLevelMetrics"].should.contain(
|
|
"WriteProvisionedThroughputExceeded"
|
|
)
|
|
resp.should.have.key("DesiredShardLevelMetrics").should.have.length_of(2)
|
|
resp["DesiredShardLevelMetrics"].should.contain("IncomingBytes")
|
|
resp["DesiredShardLevelMetrics"].should.contain(
|
|
"WriteProvisionedThroughputExceeded"
|
|
)
|
|
|
|
stream = client.describe_stream(StreamName=stream_name)["StreamDescription"]
|
|
metrics = stream["EnhancedMonitoring"][0]["ShardLevelMetrics"]
|
|
metrics.should.have.length_of(2)
|
|
metrics.should.contain("IncomingBytes")
|
|
metrics.should.contain("WriteProvisionedThroughputExceeded")
|
|
|
|
resp = client.disable_enhanced_monitoring(
|
|
StreamARN=stream_arn, ShardLevelMetrics=["IncomingBytes"]
|
|
)
|
|
|
|
resp.should.have.key("CurrentShardLevelMetrics").should.have.length_of(2)
|
|
resp.should.have.key("DesiredShardLevelMetrics").should.have.length_of(1)
|
|
|
|
|
|
@mock_kinesis
|
|
def test_disable_enhanced_monitoring_all():
|
|
client = boto3.client("kinesis", region_name="us-east-1")
|
|
stream_name = "my_stream_summary"
|
|
client.create_stream(StreamName=stream_name, ShardCount=4)
|
|
|
|
client.enable_enhanced_monitoring(
|
|
StreamName=stream_name,
|
|
ShardLevelMetrics=[
|
|
"IncomingBytes",
|
|
"OutgoingBytes",
|
|
"WriteProvisionedThroughputExceeded",
|
|
],
|
|
)
|
|
|
|
client.disable_enhanced_monitoring(
|
|
StreamName=stream_name, ShardLevelMetrics=["ALL"]
|
|
)
|
|
|
|
stream = client.describe_stream(StreamName=stream_name)["StreamDescription"]
|
|
metrics = stream["EnhancedMonitoring"][0]["ShardLevelMetrics"]
|
|
metrics.should.equal([])
|