Skip to content

Instantly share code, notes, and snippets.

@jyshnkr
Created April 17, 2023 18:57
Show Gist options
  • Save jyshnkr/75eaf416fff52f78c959e0d4b73d3e5f to your computer and use it in GitHub Desktop.
Save jyshnkr/75eaf416fff52f78c959e0d4b73d3e5f to your computer and use it in GitHub Desktop.
Tests
{
private String uploadUrl;
private String tenantId;
private String region;
private String arn;
private String scenarioDatasetArn;
private GraphiteActivityManagementClient client;
@BeforeAll
public void setup() {
this.client = ActivityManagementClientBuilder.getClient();
this.tenantId = EnvironmentParams.integFixtureAccountId();
this.region = EnvironmentParams.region();
}
@Test
@Order(100)
public void testCreateFileUploadUrl() {
final CreateFileUploadUrlResponse response = client.createFileUploadUrl(CreateFileUploadUrlRequest.builder()
.accountId(tenantId)
.build());
Assertions.assertNotNull(response.fileUploadUrl());
this.uploadUrl = response.fileUploadUrl();
// Upload the file programmatically
FileUploader.uploadFileToPresignedUrl(uploadUrl, "test.csv");
}
@Test
@Order(200)
public void testCreateActivityDataset() throws InterruptedException {
final CreateActivityDatasetResponse response = client.createActivityDataset(CreateActivityDatasetRequest
.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.description("CuteDescription")
.fileUploadUrl(uploadUrl)
.displayName("CuteDisplayName")
.schema(CreateActivityFixture.buildDataSetSchema())
.filterCriteria(CreateActivityFixture.buildFilterCriteriaList())
.build());
final ActivityDataset dataset = response.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals("CuteDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertEquals("CuteDescription", dataset.description());
Assertions.assertEquals(CreateActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
Assertions.assertTrue(dataset.activityDatasetArn()
.startsWith(String.format("arn:aws:graphite:%s:%s:activity-dataset/", region, tenantId)));
this.arn = dataset.activityDatasetArn();
TimeUnit.SECONDS.sleep(2);
}
@Test
@Order(210)
public void testCreateActivityDatasetWithClientTokenReturnsSameActivityDataset() {
final CreateActivityDatasetRequest request = CreateActivityDatasetRequest.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.description("CuteDescription")
.fileUploadUrl(uploadUrl)
.displayName("CuteDisplayName")
.schema(CreateActivityFixture.buildDataSetSchema())
.filterCriteria(CreateActivityFixture.buildFilterCriteriaList())
.build();
final CreateActivityDatasetResponse response = client.createActivityDataset(request);
final CreateActivityDatasetResponse secondResponse = client.createActivityDataset(request);
Assertions.assertEquals(response.activityDataset(), secondResponse.activityDataset());
}
@Test
@Order(220)
public void testCreateActivityDatasetWithClientTokenDifferentRequestThrowsConflictException() {
final CreateActivityDatasetRequest request = CreateActivityDatasetRequest.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.description("CuteDescription")
.fileUploadUrl(uploadUrl)
.displayName("CuteDisplayName")
.schema(CreateActivityFixture.buildDataSetSchema())
.filterCriteria(CreateActivityFixture.buildFilterCriteriaList())
.build();
final CreateActivityDatasetRequest secondRequest = request.toBuilder()
.description("DifferentDescription")
.build();
final String activityDatasetArn = client.createActivityDataset(request).activityDataset().activityDatasetArn();
ConflictException exception = Assertions.assertThrowsExactly(ConflictException.class, () -> {
final CreateActivityDatasetResponse response = client.createActivityDataset(secondRequest);
if (!activityDatasetArn.equals(response.activityDataset().activityDatasetArn())) {
client.deleteActivityDataset(DeleteActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(response.activityDataset().activityDatasetArn())
.build());
}
Assertions.fail("Create incorrectly succeeded: " + response.activityDataset().activityDatasetArn());
});
Assertions.assertEquals("clientToken re-used with different parameters",
exception.awsErrorDetails().errorMessage());
Assertions.assertEquals("ActivityDataset", exception.resourceType());
Assertions.assertNull(exception.resourceId());
}
@Test
@Order(300)
public void testGetActivityDatasetBeforeImport() {
final GetActivityDatasetResponse response = client.getActivityDataset(GetActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
final ActivityDataset dataset = response.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(arn, dataset.activityDatasetArn());
Assertions.assertEquals("CuteDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertEquals("CuteDescription", dataset.description());
Assertions.assertEquals(CreateActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(400)
public void testStartActivityDatasetImport() {
client.startActivityDatasetImport(StartActivityDatasetImportRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
Poller.pollUntilADImportSucceeds(client, tenantId, arn);
}
@Test
@Order(500)
public void testListActivityDatasetRecords() {
Optional<String> nextToken = Optional.empty();
ImmutableList.Builder<Map<String, String>> resultBuilder = ImmutableList.builder();
int requestCount = 0;
int maxRequests = 5; // Just a safe bound to exit, in case we go into infinite loop because of a bug
do {
ListActivityDatasetRecordsRequest.Builder request = ListActivityDatasetRecordsRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.maxResults(5);
nextToken.ifPresent(request::nextToken);
ListActivityDatasetRecordsResponse response = client.listActivityDatasetRecords(request.build());
resultBuilder.addAll(response.activityDatasetRecords());
nextToken = Optional.ofNullable(response.nextToken());
requestCount++;
} while (nextToken.isPresent() && requestCount < maxRequests);
List<Map<String, String>> results = resultBuilder.build();
Assertions.assertEquals(2, results.size()); // 2 rows
Map<String, String> expected1 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Houston")
.put("fieldNumber1", "1969.0")
.put("fieldNumber2", "2.1")
.put("fieldDate1", "2021-05-14T00:00:00.000Z")
.put("fieldDate2", "2022-04-18T10:11:08.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Map<String, String> expected2 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Who's that pokemon?")
.put("fieldNumber1", "2023.0")
.put("fieldNumber2", "25.0")
.put("fieldDate1", "1996-02-27T00:00:00.000Z")
.put("fieldDate2", "1996-02-27T00:00:00.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Assertions.assertEquals(ImmutableSet.of(expected1, expected2), ImmutableSet.builder().addAll(results).build());
}
@Test
@Order(550)
public void testUpdateActivityDataset() {
final UpdateActivityDatasetResponse updateResponse = client.updateActivityDataset(
UpdateActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.description("UpdatedDescription")
.displayName("UpdatedDisplayName")
.build());
final ActivityDataset dataset = updateResponse.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(arn, dataset.activityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertEquals("UpdatedDescription", dataset.description());
Assertions.assertEquals(CreateActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(600)
public void testGetActivityDatasetAfterImport() throws IOException {
final GetActivityDatasetResponse response = client.getActivityDataset(GetActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
final ActivityDataset dataset = response.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(arn, dataset.activityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertEquals("UpdatedDescription", dataset.description());
Assertions.assertEquals(CreateActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
Assertions.assertNotNull(dataset.errorReportDownloadUrl());
final ImmutableList<Map<String, String>> errorReportMapList =
CSVDownloader.download(dataset.errorReportDownloadUrl());
final ImmutableList<ImmutableMap<String, String>> expectedErrorReportMapList = ImmutableList.of(
ImmutableMap.<String, String>builder()
.put("fieldDate2", "2022/04/18 10:11:08 AM")
.put("fieldDate5", "2021/02/14 11:32:08 pm")
.put("fieldNumber2", "3.1409")
.put("fieldDate4", "2021/11/18 07:13:08 am")
.put("fieldDate1", "2020-10-10")
.put("fieldNumber1", "91s")
.put("fieldDate3", "2022/04/18 08:11:08 PM")
.put("fieldText1", "Mayday")
.put("fieldDate6", "2023-01-28 13:05:29.101")
.put("fieldDate7", "2022-05-28T13:05:29.101+10:15")
.put("fieldDate8", "2022-12-28T08:11:29+10:15")
.put("fieldDate9", "2019-09-12T13:11:07Z")
.build(),
ImmutableMap.<String, String>builder()
.put("fieldDate2", "2022/04/18 10:11:08 AM")
.put("fieldDate5", "2021/02/14 11:32:08 pm")
.put("fieldNumber2", "1681")
.put("fieldDate4", "2021/11/18 07:13:08 am")
.put("fieldDate1", "2020-10-11")
.put("fieldNumber1", "\"\"")
.put("fieldDate3", "2022/04/18 08:11:08 PM")
.put("fieldText1", "Water water")
.put("fieldDate6", "2023-01-28 13:05:29.101")
.put("fieldDate7", "2022-05-28T13:05:29.101+10:15")
.put("fieldDate8", "2022-12-28T08:11:29+10:15")
.put("fieldDate9", "2019-09-12T13:11:07Z")
.build(),
ImmutableMap.<String, String>builder()
.put("fieldDate2", "2022/04/18 10:11:08 AM")
.put("fieldDate5", "2021/02/14 11:32:08 pm")
.put("fieldNumber2", "188")
.put("fieldDate4", "2021/11/18 07:13:08 am")
.put("fieldDate1", "20201011")
.put("fieldNumber1", "12")
.put("fieldDate3", "2022/04/18 08:11:08 PM")
.put("fieldText1", "It's a feature")
.put("fieldDate6", "2023-01-28 13:05:29.101")
.put("fieldDate7", "2022-05-28T13:05:29.101+10:15")
.put("fieldDate8", "2022-12-28T08:11:29+10:15")
.put("fieldDate9", "2019-09-12T13:11:07Z")
.build(),
ImmutableMap.<String, String>builder()
.put("fieldDate2", "\"\"")
.put("fieldDate5", "2021/02/14 11:32:08 pm")
.put("fieldNumber2", "25")
.put("fieldDate4", "2021/11/18 07:13:08 am")
.put("fieldDate1", "1996-02-27")
.put("fieldNumber1", "2023")
.put("fieldDate3", "2022/04/18 08:11:08 PM")
.put("fieldText1", "Gotta catch em all")
.put("fieldDate6", "2023-01-28 13:05:29.101")
.put("fieldDate7", "2022-05-28T13:05:29.101+10:15")
.put("fieldDate8", "2022-12-28T08:11:29+10:15")
.put("fieldDate9", "2019-09-12T13:11:07Z")
.build());
Assertions.assertEquals(expectedErrorReportMapList, errorReportMapList);
}
@Test
@Order(700)
public void testCreateScenarioDatasetFromActivityDataset() throws InterruptedException {
final CreateScenarioActivityDatasetResponse response = client.createScenarioActivityDataset(
CreateScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.description("SuperCuteDescription")
.displayName("SuperCuteDisplayName")
.schema(CreateScenarioActivityFixture.buildDataSetSchema())
.filterCriteria(CreateScenarioActivityFixture.buildFilterCriteriaList())
.dataSource(ScenarioActivityDataSource.builder()
.activityDatasetSource(ActivityDatasetSource.builder()
.activityDatasetArn(arn)
.build())
.build())
.build());
final ScenarioActivityDataset dataset = response.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals("SuperCuteDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertEquals("SuperCuteDescription", dataset.description());
Assertions.assertEquals(CreateScenarioActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
Assertions.assertTrue(dataset.scenarioActivityDatasetArn()
.startsWith(String.format("arn:aws:graphite:%s:%s:scenario-activity-dataset/", region, tenantId)));
this.scenarioDatasetArn = dataset.scenarioActivityDatasetArn();
TimeUnit.SECONDS.sleep(2);
}
@Test
@Order(800)
public void testGetScenarioActivityDatasetBeforeImport() {
final GetScenarioActivityDatasetResponse response = client.getScenarioActivityDataset(
GetScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
final ScenarioActivityDataset dataset = response.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(scenarioDatasetArn, dataset.scenarioActivityDatasetArn());
Assertions.assertEquals("SuperCuteDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertEquals("SuperCuteDescription", dataset.description());
Assertions.assertEquals(CreateScenarioActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(900)
public void testStartScenarioActivityDatasetImport() {
client.startScenarioActivityDatasetImport(StartScenarioActivityDatasetImportRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
Poller.pollUntilSADImportSucceeds(client, tenantId, scenarioDatasetArn);
}
@Test
@Order(1000)
public void testListScenarioActivityDatasetRecords() {
Optional<String> nextToken = Optional.empty();
ImmutableList.Builder<Map<String, String>> resultBuilder = ImmutableList.builder();
int requestCount = 0;
int maxRequests = 5; // Just a safe bound to exit, in case we go into infinite loop because of a bug
do {
ListScenarioActivityDatasetRecordsRequest.Builder request =
ListScenarioActivityDatasetRecordsRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.maxResults(5);
nextToken.ifPresent(request::nextToken);
ListScenarioActivityDatasetRecordsResponse response =
client.listScenarioActivityDatasetRecords(request.build());
resultBuilder.addAll(response.scenarioActivityDatasetRecords());
nextToken = Optional.ofNullable(response.nextToken());
requestCount++;
} while (nextToken.isPresent() && requestCount < maxRequests);
List<Map<String, String>> results = resultBuilder.build();
Assertions.assertEquals(2, results.size()); // 2 row
Map<String, String> expected1 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Houston")
.put("fieldNumber1", "1969.0")
.put("fieldNumber2", "2.1")
.put("fieldDate1", "2021-05-14T00:00:00.000Z")
.put("fieldDate2", "2022-04-18T10:11:08.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Map<String, String> expected2 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Who's that pokemon?")
.put("fieldNumber1", "2023.0")
.put("fieldNumber2", "25.0")
.put("fieldDate1", "1996-02-27T00:00:00.000Z")
.put("fieldDate2", "1996-02-27T00:00:00.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Assertions.assertEquals(ImmutableSet.of(expected1, expected2), ImmutableSet.builder().addAll(results).build());
}
@Test
@Order(1050)
public void testUpdateScenarioActivityDataset() {
final UpdateScenarioActivityDatasetResponse updateResponse = client.updateScenarioActivityDataset(
UpdateScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.description("UpdatedDescription")
.displayName("UpdatedDisplayName")
.build());
final ScenarioActivityDataset dataset = updateResponse.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(scenarioDatasetArn, dataset.scenarioActivityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertEquals("UpdatedDescription", dataset.description());
Assertions.assertEquals(CreateScenarioActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(1100)
public void testGetScenarioActivityDatasetAfterImport() {
final GetScenarioActivityDatasetResponse response = client.getScenarioActivityDataset(
GetScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
final ScenarioActivityDataset dataset = response.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(scenarioDatasetArn, dataset.scenarioActivityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertEquals("UpdatedDescription", dataset.description());
Assertions.assertEquals(CreateScenarioActivityFixture.buildFilterCriteriaList(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(1200)
public void testDeleteScenarioActivityDataset() {
final DeleteScenarioActivityDatasetResponse response = client.deleteScenarioActivityDataset(
DeleteScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
Assertions.assertEquals(200, response.sdkHttpResponse().statusCode());
Poller.pollUntilSADDeleteSucceeds(client, tenantId, scenarioDatasetArn);
}
@Test
@Order(1300)
public void testDeleteActivityDataset() {
final DeleteActivityDatasetResponse response = client.deleteActivityDataset(
DeleteActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
Assertions.assertEquals(200, response.sdkHttpResponse().statusCode());
Poller.pollUntilADDeleteSucceeds(client, tenantId, arn);
}
@Test
@Order(1400)
public void testCreateActivityDatasetWithoutOptionalFields() throws InterruptedException {
final CreateActivityDatasetResponse response = client.createActivityDataset(CreateActivityDatasetRequest
.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.fileUploadUrl(uploadUrl)
.displayName("CuteDisplayName")
.schema(CreateActivityFixture.buildDataSetSchema())
.build());
final ActivityDataset dataset = response.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals("CuteDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
Assertions.assertTrue(dataset.activityDatasetArn()
.startsWith(String.format("arn:aws:graphite:%s:%s:activity-dataset/", region, tenantId)));
this.arn = dataset.activityDatasetArn();
TimeUnit.SECONDS.sleep(2);
}
@Test
@Order(1410)
public void testCreateActivityDatasetWithoutOptionalFieldsWithClientTokenSameRequestReturnsSameActivityDataset() {
final CreateActivityDatasetRequest request = CreateActivityDatasetRequest.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.fileUploadUrl(uploadUrl)
.displayName("CuteDisplayName")
.schema(CreateActivityFixture.buildDataSetSchema())
.build();
final CreateActivityDatasetResponse response = client.createActivityDataset(request);
final CreateActivityDatasetResponse secondResponse = client.createActivityDataset(request);
Assertions.assertEquals(response.activityDataset(), secondResponse.activityDataset());
}
@Test
@Order(1420)
public void testCreateActivityDatasetWithoutOptionalFieldsWithClientTokenDifferentRequestThrowsConflictException() {
final CreateActivityDatasetRequest request = CreateActivityDatasetRequest.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.fileUploadUrl(uploadUrl)
.displayName("CuteDisplayName")
.schema(CreateActivityFixture.buildDataSetSchema())
.build();
final CreateActivityDatasetRequest secondRequest = request.toBuilder()
.displayName("NotSoCuteDisplayName")
.build();
final String activityDatasetArn = client.createActivityDataset(request).activityDataset().activityDatasetArn();
ConflictException exception = Assertions.assertThrowsExactly(ConflictException.class, () -> {
final CreateActivityDatasetResponse response = client.createActivityDataset(secondRequest);
if (!activityDatasetArn.equals(response.activityDataset().activityDatasetArn())) {
client.deleteActivityDataset(DeleteActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(response.activityDataset().activityDatasetArn())
.build());
}
Assertions.fail("Create incorrectly succeeded: " + response.activityDataset().activityDatasetArn());
});
Assertions.assertEquals("clientToken re-used with different parameters",
exception.awsErrorDetails().errorMessage());
Assertions.assertEquals("ActivityDataset", exception.resourceType());
Assertions.assertNull(exception.resourceId());
}
@Test
@Order(1430)
public void testGetActivityDatasetWithoutOptionalFieldsBeforeImport() {
final GetActivityDatasetResponse response = client.getActivityDataset(GetActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
final ActivityDataset dataset = response.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(arn, dataset.activityDatasetArn());
Assertions.assertEquals("CuteDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(1440)
public void testStartActivityDatasetImportWithoutOptionalFields() {
client.startActivityDatasetImport(StartActivityDatasetImportRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
Poller.pollUntilADImportSucceeds(client, tenantId, arn);
}
@Test
@Order(1450)
public void testListActivityDatasetRecordsWithoutOptionalFields() {
Optional<String> nextToken = Optional.empty();
ImmutableList.Builder<Map<String, String>> resultBuilder = ImmutableList.builder();
int requestCount = 0;
int maxRequests = 5; // Just a safe bound to exit, in case we go into infinite loop because of a bug
do {
ListActivityDatasetRecordsRequest.Builder request = ListActivityDatasetRecordsRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.maxResults(5);
nextToken.ifPresent(request::nextToken);
ListActivityDatasetRecordsResponse response = client.listActivityDatasetRecords(request.build());
resultBuilder.addAll(response.activityDatasetRecords());
nextToken = Optional.ofNullable(response.nextToken());
requestCount++;
} while (nextToken.isPresent() && requestCount < maxRequests);
List<Map<String, String>> results = resultBuilder.build();
Assertions.assertEquals(2, results.size()); // 2 rows
Map<String, String> expected1 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Houston")
.put("fieldNumber1", "1969.0")
.put("fieldNumber2", "2.1")
.put("fieldDate1", "2021-05-14T00:00:00.000Z")
.put("fieldDate2", "2022-04-18T10:11:08.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Map<String, String> expected2 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Who's that pokemon?")
.put("fieldNumber1", "2023.0")
.put("fieldNumber2", "25.0")
.put("fieldDate1", "1996-02-27T00:00:00.000Z")
.put("fieldDate2", "1996-02-27T00:00:00.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Assertions.assertEquals(ImmutableSet.of(expected1, expected2), ImmutableSet.builder().addAll(results).build());
}
@Test
@Order(1460)
public void testUpdateActivityDatasetWithoutOptionalFields() {
final UpdateActivityDatasetResponse updateResponse = client.updateActivityDataset(
UpdateActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.displayName("UpdatedDisplayName")
.build());
final ActivityDataset dataset = updateResponse.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(arn, dataset.activityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(1470)
public void testGetActivityDatasetAfterImportWithoutOptionalFields() throws IOException {
final GetActivityDatasetResponse response = client.getActivityDataset(GetActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
final ActivityDataset dataset = response.activityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(arn, dataset.activityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateActivityFixture.buildDataSource(), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
Assertions.assertNotNull(dataset.errorReportDownloadUrl());
final ImmutableList<Map<String, String>> errorReportMapList =
CSVDownloader.download(dataset.errorReportDownloadUrl());
final ImmutableList<ImmutableMap<String, String>> expectedErrorReportMapList = ImmutableList.of(
ImmutableMap.<String, String>builder()
.put("fieldDate8", "2022-12-28T08:11:29+10:15")
.put("fieldDate2", "2022/04/18 10:11:08 AM")
.put("fieldDate5", "2021/02/14 11:32:08 pm")
.put("fieldNumber2", "3.1409")
.put("fieldDate4", "2021/11/18 07:13:08 am")
.put("fieldDate7", "2022-05-28T13:05:29.101+10:15")
.put("fieldDate1", "2020-10-10")
.put("fieldNumber1", "91s")
.put("fieldDate9", "2019-09-12T13:11:07Z")
.put("fieldDate3", "2022/04/18 08:11:08 PM")
.put("fieldDate6", "2023-01-28 13:05:29.101")
.put("fieldText1", "Mayday")
.build(),
ImmutableMap.<String, String>builder()
.put("fieldDate8", "2022-12-28T08:11:29+10:15")
.put("fieldDate2", "2022/04/18 10:11:08 AM")
.put("fieldDate5", "2021/02/14 11:32:08 pm")
.put("fieldNumber2", "188")
.put("fieldDate4", "2021/11/18 07:13:08 am")
.put("fieldDate7", "2022-05-28T13:05:29.101+10:15")
.put("fieldDate1", "20201011")
.put("fieldNumber1", "12")
.put("fieldDate9", "2019-09-12T13:11:07Z")
.put("fieldDate3", "2022/04/18 08:11:08 PM")
.put("fieldDate6", "2023-01-28 13:05:29.101")
.put("fieldText1", "It's a feature")
.build());
Assertions.assertEquals(expectedErrorReportMapList, errorReportMapList);
}
@Test
@Order(1480)
public void testCreateScenarioDatasetFromActivityDatasetWithoutOptionalFields() throws InterruptedException {
final CreateScenarioActivityDatasetResponse response = client.createScenarioActivityDataset(
CreateScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.clientToken(UUID.randomUUID().toString())
.displayName("SuperCuteDisplayName")
.schema(CreateScenarioActivityFixture.buildDataSetSchema())
.dataSource(ScenarioActivityDataSource.builder()
.activityDatasetSource(ActivityDatasetSource.builder()
.activityDatasetArn(arn)
.build())
.build())
.build());
final ScenarioActivityDataset dataset = response.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals("SuperCuteDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
Assertions.assertTrue(dataset.scenarioActivityDatasetArn()
.startsWith(String.format("arn:aws:graphite:%s:%s:scenario-activity-dataset/", region, tenantId)));
this.scenarioDatasetArn = dataset.scenarioActivityDatasetArn();
TimeUnit.SECONDS.sleep(2);
}
@Test
@Order(1490)
public void testGetScenarioActivityDatasetBeforeImportWithoutOptionalFields() {
final GetScenarioActivityDatasetResponse response = client.getScenarioActivityDataset(
GetScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
final ScenarioActivityDataset dataset = response.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(scenarioDatasetArn, dataset.scenarioActivityDatasetArn());
Assertions.assertEquals("SuperCuteDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.NOT_STARTED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(1510)
public void testStartScenarioActivityDatasetImportWithoutOptionalFields() {
client.startScenarioActivityDatasetImport(StartScenarioActivityDatasetImportRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
Poller.pollUntilSADImportSucceeds(client, tenantId, scenarioDatasetArn);
}
@Test
@Order(1520)
public void testListScenarioActivityDatasetRecordsWithoutOptionalFields() {
Optional<String> nextToken = Optional.empty();
ImmutableList.Builder<Map<String, String>> resultBuilder = ImmutableList.builder();
int requestCount = 0;
int maxRequests = 5; // Just a safe bound to exit, in case we go into infinite loop because of a bug
do {
ListScenarioActivityDatasetRecordsRequest.Builder request =
ListScenarioActivityDatasetRecordsRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.maxResults(5);
nextToken.ifPresent(request::nextToken);
ListScenarioActivityDatasetRecordsResponse response =
client.listScenarioActivityDatasetRecords(request.build());
resultBuilder.addAll(response.scenarioActivityDatasetRecords());
nextToken = Optional.ofNullable(response.nextToken());
requestCount++;
} while (nextToken.isPresent() && requestCount < maxRequests);
List<Map<String, String>> results = resultBuilder.build();
Assertions.assertEquals(2, results.size()); // 2 row
Map<String, String> expected1 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Houston")
.put("fieldNumber1", "1969.0")
.put("fieldNumber2", "2.1")
.put("fieldDate1", "2021-05-14T00:00:00.000Z")
.put("fieldDate2", "2022-04-18T10:11:08.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Map<String, String> expected2 = ImmutableMap.<String, String>builder()
.put("fieldText1", "Who's that pokemon?")
.put("fieldNumber1", "2023.0")
.put("fieldNumber2", "25.0")
.put("fieldDate1", "1996-02-27T00:00:00.000Z")
.put("fieldDate2", "1996-02-27T00:00:00.000Z")
.put("fieldDate3", "2022-04-18T20:11:08.000Z")
.put("fieldDate4", "2021-11-18T07:13:08.000Z")
.put("fieldDate5", "2021-02-14T23:32:08.000Z")
.put("fieldDate6", "2023-01-28T13:05:29.101Z")
.put("fieldDate7", "2022-05-28T02:50:29.101Z")
.put("fieldDate8", "2022-12-27T21:56:29.000Z")
.put("fieldDate9", "2019-09-12T13:11:07.000Z")
.build();
Assertions.assertEquals(ImmutableSet.of(expected1, expected2), ImmutableSet.builder().addAll(results).build());
}
@Test
@Order(1530)
public void testUpdateScenarioActivityDatasetWithoutOptionalFields() {
final UpdateScenarioActivityDatasetResponse updateResponse = client.updateScenarioActivityDataset(
UpdateScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.displayName("UpdatedDisplayName")
.build());
final ScenarioActivityDataset dataset = updateResponse.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(scenarioDatasetArn, dataset.scenarioActivityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(1540)
public void testGetScenarioActivityDatasetAfterImportWithoutOptionalFields() {
final GetScenarioActivityDatasetResponse response = client.getScenarioActivityDataset(
GetScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
final ScenarioActivityDataset dataset = response.scenarioActivityDataset();
Assertions.assertNotNull(dataset);
Assertions.assertEquals(scenarioDatasetArn, dataset.scenarioActivityDatasetArn());
Assertions.assertEquals("UpdatedDisplayName", dataset.displayName());
Assertions.assertEquals(ScenarioActivityDatasetStatus.CREATED, dataset.status());
Assertions.assertEquals(ImportStatus.SUCCEEDED, dataset.dataImportStatus().status());
Assertions.assertEquals(CreateScenarioActivityFixture.buildDataSetSchema(), dataset.schema());
Assertions.assertEquals(CreateScenarioActivityFixture.buildActivityDatasetSource(arn), dataset.dataSource());
Assertions.assertNull(dataset.description());
Assertions.assertEquals(ImmutableList.of(), dataset.filterCriteria());
Assertions.assertNull(dataset.errorReportDownloadUrl());
Assertions.assertNotNull(dataset.createdAt());
Assertions.assertNotNull(dataset.updatedAt());
}
@Test
@Order(1550)
public void testDeleteScenarioActivityDatasetWithoutOptionalFields() {
final DeleteScenarioActivityDatasetResponse response = client.deleteScenarioActivityDataset(
DeleteScenarioActivityDatasetRequest.builder()
.accountId(tenantId)
.scenarioActivityDatasetArn(scenarioDatasetArn)
.build());
Assertions.assertEquals(200, response.sdkHttpResponse().statusCode());
Poller.pollUntilSADDeleteSucceeds(client, tenantId, scenarioDatasetArn);
}
@Test
@Order(1560)
public void testDeleteActivityDatasetWithoutOptionalFields() {
final DeleteActivityDatasetResponse response = client.deleteActivityDataset(
DeleteActivityDatasetRequest.builder()
.accountId(tenantId)
.activityDatasetArn(arn)
.build());
Assertions.assertEquals(200, response.sdkHttpResponse().statusCode());
Poller.pollUntilADDeleteSucceeds(client, tenantId, arn);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment