| 
									
										
										
										
											2017-09-27 16:04:58 -07:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | import sure  # noqa | 
					
						
							| 
									
										
										
										
											2018-08-11 22:14:04 +08:00
										 |  |  | import six | 
					
						
							| 
									
										
										
										
											2018-01-14 14:35:53 +09:00
										 |  |  | from botocore.exceptions import ClientError | 
					
						
							| 
									
										
										
										
											2017-09-27 16:04:58 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | from moto import mock_logs, settings | 
					
						
							| 
									
										
										
										
											2018-01-14 14:35:53 +09:00
										 |  |  | from nose.tools import assert_raises | 
					
						
							| 
									
										
										
										
											2017-09-27 16:04:58 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | _logs_region = 'us-east-1' if settings.TEST_SERVER_MODE else 'us-west-2' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_logs | 
					
						
							|  |  |  | def test_log_group_create(): | 
					
						
							|  |  |  |     conn = boto3.client('logs', 'us-west-2') | 
					
						
							|  |  |  |     log_group_name = 'dummy' | 
					
						
							|  |  |  |     response = conn.create_log_group(logGroupName=log_group_name) | 
					
						
							| 
									
										
										
										
											2018-04-24 11:12:17 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     response = conn.describe_log_groups(logGroupNamePrefix=log_group_name) | 
					
						
							|  |  |  |     assert len(response['logGroups']) == 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-27 16:04:58 -07:00
										 |  |  |     response = conn.delete_log_group(logGroupName=log_group_name) | 
					
						
							| 
									
										
										
										
											2018-01-14 14:35:53 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_logs | 
					
						
							|  |  |  | def test_exceptions(): | 
					
						
							|  |  |  |     conn = boto3.client('logs', 'us-west-2') | 
					
						
							|  |  |  |     log_group_name = 'dummy' | 
					
						
							|  |  |  |     log_stream_name = 'dummp-stream' | 
					
						
							|  |  |  |     conn.create_log_group(logGroupName=log_group_name) | 
					
						
							|  |  |  |     with assert_raises(ClientError): | 
					
						
							|  |  |  |         conn.create_log_group(logGroupName=log_group_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # descrine_log_groups is not implemented yet | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.create_log_stream( | 
					
						
							|  |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamName=log_stream_name | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     with assert_raises(ClientError): | 
					
						
							|  |  |  |         conn.create_log_stream( | 
					
						
							|  |  |  |             logGroupName=log_group_name, | 
					
						
							|  |  |  |             logStreamName=log_stream_name | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     conn.put_log_events( | 
					
						
							|  |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamName=log_stream_name, | 
					
						
							|  |  |  |         logEvents=[ | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 'timestamp': 0, | 
					
						
							| 
									
										
										
										
											2018-08-11 22:14:04 +08:00
										 |  |  |                 'message': 'line' | 
					
						
							| 
									
										
										
										
											2018-01-14 14:35:53 +09:00
										 |  |  |             }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     with assert_raises(ClientError): | 
					
						
							|  |  |  |         conn.put_log_events( | 
					
						
							|  |  |  |             logGroupName=log_group_name, | 
					
						
							|  |  |  |             logStreamName="invalid-stream", | 
					
						
							|  |  |  |             logEvents=[ | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     'timestamp': 0, | 
					
						
							|  |  |  |                     'message': 'line' | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2018-03-22 00:55:03 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_logs | 
					
						
							|  |  |  | def test_put_logs(): | 
					
						
							|  |  |  |     conn = boto3.client('logs', 'us-west-2') | 
					
						
							|  |  |  |     log_group_name = 'dummy' | 
					
						
							|  |  |  |     log_stream_name = 'stream' | 
					
						
							|  |  |  |     conn.create_log_group(logGroupName=log_group_name) | 
					
						
							|  |  |  |     conn.create_log_stream( | 
					
						
							|  |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamName=log_stream_name | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     messages = [ | 
					
						
							|  |  |  |         {'timestamp': 0, 'message': 'hello'}, | 
					
						
							|  |  |  |         {'timestamp': 0, 'message': 'world'} | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2018-08-11 22:14:04 +08:00
										 |  |  |     putRes = conn.put_log_events( | 
					
						
							| 
									
										
										
										
											2018-03-22 00:55:03 +09:00
										 |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamName=log_stream_name, | 
					
						
							|  |  |  |         logEvents=messages | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     res = conn.get_log_events( | 
					
						
							|  |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamName=log_stream_name | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     events = res['events'] | 
					
						
							| 
									
										
										
										
											2018-08-11 22:14:04 +08:00
										 |  |  |     nextSequenceToken = putRes['nextSequenceToken'] | 
					
						
							|  |  |  |     assert isinstance(nextSequenceToken, six.string_types) == True | 
					
						
							|  |  |  |     assert len(nextSequenceToken) == 56 | 
					
						
							| 
									
										
										
										
											2018-04-04 17:24:41 +01:00
										 |  |  |     events.should.have.length_of(2) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_logs | 
					
						
							|  |  |  | def test_filter_logs_interleaved(): | 
					
						
							|  |  |  |     conn = boto3.client('logs', 'us-west-2') | 
					
						
							|  |  |  |     log_group_name = 'dummy' | 
					
						
							|  |  |  |     log_stream_name = 'stream' | 
					
						
							|  |  |  |     conn.create_log_group(logGroupName=log_group_name) | 
					
						
							|  |  |  |     conn.create_log_stream( | 
					
						
							|  |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamName=log_stream_name | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     messages = [ | 
					
						
							|  |  |  |         {'timestamp': 0, 'message': 'hello'}, | 
					
						
							|  |  |  |         {'timestamp': 0, 'message': 'world'} | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     conn.put_log_events( | 
					
						
							|  |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamName=log_stream_name, | 
					
						
							|  |  |  |         logEvents=messages | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     res = conn.filter_log_events( | 
					
						
							|  |  |  |         logGroupName=log_group_name, | 
					
						
							|  |  |  |         logStreamNames=[log_stream_name], | 
					
						
							|  |  |  |         interleaved=True, | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     events = res['events'] | 
					
						
							| 
									
										
										
										
											2018-10-01 16:30:23 -04:00
										 |  |  |     for original_message, resulting_event in zip(messages, events): | 
					
						
							|  |  |  |         resulting_event['eventId'].should.equal(str(resulting_event['eventId'])) | 
					
						
							|  |  |  |         resulting_event['timestamp'].should.equal(original_message['timestamp']) | 
					
						
							|  |  |  |         resulting_event['message'].should.equal(original_message['message']) | 
					
						
							|  |  |  | 
 |