use of com.amazonaws.services.logs.model.LogStream in project aws-athena-query-federation by awslabs.
the class CloudwatchMetadataHandlerTest method doGetTable.
@Test
public void doGetTable() {
logger.info("doGetTable - enter");
String expectedSchema = "schema-20";
when(mockAwsLogs.describeLogStreams(any(DescribeLogStreamsRequest.class))).thenAnswer((InvocationOnMock invocationOnMock) -> {
DescribeLogStreamsRequest request = (DescribeLogStreamsRequest) invocationOnMock.getArguments()[0];
assertTrue(request.getLogGroupName().equals(expectedSchema));
DescribeLogStreamsResult result = new DescribeLogStreamsResult();
Integer nextToken;
if (request.getNextToken() == null) {
nextToken = 1;
} else if (Integer.valueOf(request.getNextToken()) < 3) {
nextToken = Integer.valueOf(request.getNextToken()) + 1;
} else {
nextToken = null;
}
List<LogStream> logStreams = new ArrayList<>();
if (request.getNextToken() == null || Integer.valueOf(request.getNextToken()) < 3) {
for (int i = 0; i < 10; i++) {
LogStream nextLogStream = new LogStream();
nextLogStream.setLogStreamName("table-" + String.valueOf(i));
logStreams.add(nextLogStream);
}
}
result.withLogStreams(logStreams);
if (nextToken != null) {
result.setNextToken(String.valueOf(nextToken));
}
return result;
});
GetTableRequest req = new GetTableRequest(identity, "queryId", "default", new TableName(expectedSchema, "table-9"));
GetTableResponse res = handler.doGetTable(allocator, req);
logger.info("doGetTable - {} {}", res.getTableName(), res.getSchema());
assertEquals(new TableName(expectedSchema, "table-9"), res.getTableName());
assertTrue(res.getSchema() != null);
verify(mockAwsLogs, times(1)).describeLogStreams(any(DescribeLogStreamsRequest.class));
logger.info("doGetTable - exit");
}
use of com.amazonaws.services.logs.model.LogStream in project cloudwatch-logback-appender by j256.
the class CloudWatchAppenderTest method testMoreAwsCalls.
@Test(timeout = 10000)
public void testMoreAwsCalls() throws InterruptedException {
CloudWatchAppender appender = new CloudWatchAppender();
AWSLogs logsClient = createMock(AWSLogs.class);
AmazonEC2 ec2Client = createMock(AmazonEC2.class);
appender.setTestAwsLogsClient(logsClient);
appender.setTestAmazonEc2Client(ec2Client);
appender.setMaxBatchSize(1);
appender.setRegion("region");
final String logGroup = "pfqoejpfqe";
appender.setLogGroup(logGroup);
final String logStream = "pffqjfqjpoqoejpfqe";
appender.setLogStream(logStream);
appender.setContext(LOGGER_CONTEXT);
PatternLayout layout = new PatternLayout();
layout.setContext(LOGGER_CONTEXT);
layout.setPattern("[%thread] %level %logger{20} - %msg%n%xThrowable");
layout.start();
appender.setLayout(layout);
final String loggerName = "name";
final Level level = Level.DEBUG;
String message = "kuykregddwqwef4wve";
LoggingEvent event = createEvent(loggerName, level, message, System.currentTimeMillis());
String threadName = Thread.currentThread().getName();
final String fullMessage = "[" + threadName + "] " + level + " " + loggerName + " - " + message + "\n";
DescribeLogGroupsResult logGroupsResult = new DescribeLogGroupsResult().withLogGroups(Arrays.asList(new LogGroup().withLogGroupName(logGroup)));
expect(logsClient.describeLogGroups(isA(DescribeLogGroupsRequest.class))).andReturn(logGroupsResult);
DescribeLogStreamsResult logStreamsResult = new DescribeLogStreamsResult().withLogStreams(Arrays.asList(new LogStream().withLogStreamName(logStream)));
expect(logsClient.describeLogStreams(isA(DescribeLogStreamsRequest.class))).andReturn(logStreamsResult);
final PutLogEventsResult putLogEventsResult = new PutLogEventsResult();
String sequence = "ewopjfewfj";
putLogEventsResult.setNextSequenceToken(sequence);
expect(logsClient.putLogEvents(isA(PutLogEventsRequest.class))).andAnswer(new IAnswer<PutLogEventsResult>() {
@Override
public PutLogEventsResult answer() {
PutLogEventsRequest request = (PutLogEventsRequest) getCurrentArguments()[0];
assertEquals(logGroup, request.getLogGroupName());
assertEquals(logStream, request.getLogStreamName());
List<InputLogEvent> events = request.getLogEvents();
assertEquals(1, events.size());
assertEquals(fullMessage, events.get(0).getMessage());
return putLogEventsResult;
}
}).times(2);
logsClient.shutdown();
// =====================================
replay(logsClient, ec2Client);
appender.start();
// for coverage
appender.start();
appender.append(event);
Thread.sleep(100);
appender.append(event);
while (appender.getEventsWrittenCount() < 2) {
Thread.sleep(100);
}
appender.stop();
verify(logsClient, ec2Client);
}
use of com.amazonaws.services.logs.model.LogStream in project cloudbreak by hortonworks.
the class CloudwatchRecordWorkerTest method testDescribeLogStreamsWhenLogStreamDoesNotExist.
@Test
public void testDescribeLogStreamsWhenLogStreamDoesNotExist() {
DescribeLogStreamsRequest describeLogStreamsRequest = new DescribeLogStreamsRequest();
describeLogStreamsRequest.setLogGroupName("TestGroup");
describeLogStreamsRequest.setLogStreamNamePrefix(underTest.initLogStream("TestStream"));
DescribeLogStreamsResult describeLogStreamsResult = new DescribeLogStreamsResult();
Set<LogStream> logStreams = new HashSet<>();
describeLogStreamsResult.setLogStreams(logStreams);
when(awsLogsClient.describeLogStreams(describeLogStreamsRequest)).thenReturn(describeLogStreamsResult);
when(awsLogsClient.describeLogStreams(describeLogStreamsRequest)).thenReturn(describeLogStreamsResult);
CreateLogStreamRequest createLogStreamRequest = new CreateLogStreamRequest();
createLogStreamRequest.setLogGroupName("TestGroup");
createLogStreamRequest.setLogStreamName(underTest.initLogStream("TestStream"));
when(awsLogsClient.createLogStream(createLogStreamRequest)).thenReturn(new CreateLogStreamResult());
underTest.describeLogStreams();
verify(awsLogsClient, times(2)).describeLogStreams(describeLogStreamsRequest);
verify(awsLogsClient, times(1)).createLogStream(createLogStreamRequest);
}
use of com.amazonaws.services.logs.model.LogStream in project cloudbreak by hortonworks.
the class CloudwatchRecordWorkerTest method testDescribeLogStreamsWhenLogStreamExists.
@Test
public void testDescribeLogStreamsWhenLogStreamExists() {
DescribeLogStreamsRequest describeLogStreamsRequest = new DescribeLogStreamsRequest();
describeLogStreamsRequest.setLogGroupName("TestGroup");
describeLogStreamsRequest.setLogStreamNamePrefix(underTest.initLogStream("TestStream"));
DescribeLogStreamsResult describeLogStreamsResult = new DescribeLogStreamsResult();
Set<LogStream> logStreams = new HashSet<>();
LogStream logStream = new LogStream();
logStreams.add(logStream);
describeLogStreamsResult.setLogStreams(logStreams);
when(awsLogsClient.describeLogStreams(describeLogStreamsRequest)).thenReturn(describeLogStreamsResult);
underTest.describeLogStreams();
verify(awsLogsClient, times(1)).describeLogStreams(describeLogStreamsRequest);
}
use of com.amazonaws.services.logs.model.LogStream in project quarkus-logging-cloudwatch by quarkiverse.
the class LoggingCloudWatchHandlerValueFactory method createLogStreamIfNeeded.
private String createLogStreamIfNeeded(AWSLogs awsLogs, LoggingCloudWatchConfig config) {
String token = null;
DescribeLogStreamsRequest describeLogStreamsRequest = new DescribeLogStreamsRequest(config.logGroup.get());
// We need to filter down, as CW returns by default only 50 streams and ours may not be in it.
describeLogStreamsRequest.withLogStreamNamePrefix(config.logStreamName.get());
List<LogStream> logStreams = awsLogs.describeLogStreams(describeLogStreamsRequest).getLogStreams();
boolean found = false;
for (LogStream ls : logStreams) {
if (ls.getLogStreamName().equals(config.logStreamName.get())) {
found = true;
token = ls.getUploadSequenceToken();
}
}
if (!found) {
awsLogs.createLogStream(new CreateLogStreamRequest(config.logGroup.get(), config.logStreamName.get()));
}
return token;
}
Aggregations