| 
									
										
										
										
											2022-01-26 18:41:04 -01:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from moto import mock_kinesis | 
					
						
							| 
									
										
										
										
											2023-02-01 15:16:25 -01:00
										 |  |  | from tests import DEFAULT_ACCOUNT_ID | 
					
						
							|  |  |  | from .test_kinesis import get_stream_arn | 
					
						
							| 
									
										
										
										
											2022-01-26 18:41:04 -01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @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"]) | 
					
						
							| 
									
										
										
										
											2023-02-01 15:16:25 -01:00
										 |  |  |     resp.should.have.key("StreamARN").equals( | 
					
						
							|  |  |  |         f"arn:aws:kinesis:us-east-1:{DEFAULT_ACCOUNT_ID}:stream/{stream_name}" | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2022-01-26 18:41:04 -01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @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) | 
					
						
							| 
									
										
										
										
											2023-02-01 15:16:25 -01:00
										 |  |  |     stream_arn = get_stream_arn(client, stream_name) | 
					
						
							| 
									
										
										
										
											2022-01-26 18:41:04 -01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     client.enable_enhanced_monitoring( | 
					
						
							| 
									
										
										
										
											2023-02-01 15:16:25 -01:00
										 |  |  |         StreamARN=stream_arn, | 
					
						
							| 
									
										
										
										
											2022-01-26 18:41:04 -01:00
										 |  |  |         ShardLevelMetrics=[ | 
					
						
							|  |  |  |             "IncomingBytes", | 
					
						
							|  |  |  |             "OutgoingBytes", | 
					
						
							|  |  |  |             "WriteProvisionedThroughputExceeded", | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     resp = client.disable_enhanced_monitoring( | 
					
						
							|  |  |  |         StreamName=stream_name, ShardLevelMetrics=["OutgoingBytes"] | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-01 15:16:25 -01:00
										 |  |  |     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}" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-26 18:41:04 -01:00
										 |  |  |     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") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-01 15:16:25 -01:00
										 |  |  |     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) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-26 18:41:04 -01:00
										 |  |  | 
 | 
					
						
							|  |  |  | @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([]) |