Skip to content

Commit

Permalink
[FLINK-30098] Migrate DynamoDb unit tests to JUnit5
Browse files Browse the repository at this point in the history
  • Loading branch information
hlteoh37 committed Nov 20, 2022
1 parent dc09993 commit 50b4bdf
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,19 +57,15 @@ public String build(WriteRequest request) {

if (keyAttribute == null) {
throw new InvalidRequestException(
"Request "
+ request.toString()
+ " does not contain partition key "
+ keyName
+ ".");
"Request " + request + " does not contain partition key " + keyName + ".");
}

String keyValue = getKeyValue(keyAttribute);

if (StringUtils.isBlank(keyValue)) {
throw new InvalidRequestException(
"Partition key or sort key attributes require non-empty values. Request "
+ request.toString()
+ request
+ " contains empty key "
+ keyName
+ ".");
Expand Down Expand Up @@ -109,19 +105,17 @@ private static Map<String, AttributeValue> getRequestItems(WriteRequest request)
return request.putRequest().item();
} else {
throw new InvalidRequestException(
"PutItemRequest " + request.toString() + " does not contain request items");
"PutItemRequest " + request + " does not contain request items.");
}
} else if (request.deleteRequest() != null) {
if (request.deleteRequest().hasKey()) {
return request.deleteRequest().key();
} else {
throw new InvalidRequestException(
"DeleteItemRequest "
+ request.toString()
+ " does not contain request key");
"DeleteItemRequest " + request + " does not contain request key.");
}
} else {
throw new InvalidRequestException("Empty write request" + request.toString());
throw new InvalidRequestException("Empty write request" + request);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableMap;

import org.junit.Test;
import org.junit.jupiter.api.Test;
import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@
import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableList;
import org.apache.flink.shaded.guava30.com.google.common.collect.ImmutableMap;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.DeleteRequest;
import software.amazon.awssdk.services.dynamodb.model.PutRequest;
import software.amazon.awssdk.services.dynamodb.model.WriteRequest;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;

/** Unit tests for {@link PrimaryKeyBuilder}. */
public class PrimaryKeyBuilderTest {

Expand Down Expand Up @@ -87,14 +88,13 @@ public void testPrimaryKeyDelimited() {

PrimaryKeyBuilder keyBuilder =
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME, SORT_KEY_NAME));
Assertions.assertThat(keyBuilder.build(putRequestOne))
.isNotEqualTo(keyBuilder.build(putRequestTwo));
assertThat(keyBuilder.build(putRequestOne)).isNotEqualTo(keyBuilder.build(putRequestTwo));
}

@Test
public void testPartitionKeysOfTwoDifferentRequestsEqual() {
PrimaryKeyBuilder keyBuilder = new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME));
Assertions.assertThat(keyBuilder.build(createPutItemRequest(createItemValues())))
assertThat(keyBuilder.build(createPutItemRequest(createItemValues())))
.isEqualTo(keyBuilder.build(createDeleteItemRequest(createItemValues())));
}

Expand All @@ -103,35 +103,65 @@ public void testCompositeKeysOfTwoDifferentRequestsEqual() {
PrimaryKeyBuilder keyBuilder =
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME, SORT_KEY_NAME));

Assertions.assertThat(keyBuilder.build(createPutItemRequest(createItemValues())))
assertThat(keyBuilder.build(createPutItemRequest(createItemValues())))
.isEqualTo(keyBuilder.build(createDeleteItemRequest(createItemValues())));
}

@Test(expected = InvalidRequestException.class)
public void testExceptOnEmptyRequest() {
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(createPutItemRequest(new HashMap<>()));
@Test
public void testExceptOnEmptyPutRequest() {
assertThatExceptionOfType(InvalidRequestException.class)
.isThrownBy(
() ->
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(
WriteRequest.builder()
.putRequest(PutRequest.builder().build())
.build()))
.withMessageContaining("does not contain request items.");
}

@Test
public void testExceptOnEmptyDeleteRequest() {
assertThatExceptionOfType(InvalidRequestException.class)
.isThrownBy(
() ->
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(
WriteRequest.builder()
.deleteRequest(
DeleteRequest.builder().build())
.build()))
.withMessageContaining("does not contain request key.");
}

@Test(expected = InvalidRequestException.class)
@Test
public void testExceptWhenNoPartitionKey() {
ImmutableMap<String, AttributeValue> itemValues =
ImmutableMap.of("some_item", AttributeValue.builder().bool(false).build());

new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(createPutItemRequest(itemValues));
assertThatExceptionOfType(InvalidRequestException.class)
.isThrownBy(
() ->
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(createPutItemRequest(itemValues)))
.withMessageContaining("does not contain partition key part_key_name.");
}

@Test(expected = InvalidRequestException.class)
@Test
public void testExceptWhenEmptyKey() {
ImmutableMap<String, AttributeValue> itemValues =
ImmutableMap.of(PARTITION_KEY_NAME, AttributeValue.builder().s("").build());

new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(createPutItemRequest(itemValues));
assertThatExceptionOfType(InvalidRequestException.class)
.isThrownBy(
() ->
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(createPutItemRequest(itemValues)))
.withMessageContaining(
"Partition key or sort key attributes require non-empty values.");
}

@Test(expected = InvalidRequestException.class)
@Test
public void testExceptWhenNoPartitionKeyCompositeKey() {
ImmutableMap<String, AttributeValue> itemValues =
ImmutableMap.of(
Expand All @@ -140,11 +170,15 @@ public void testExceptWhenNoPartitionKeyCompositeKey() {
"some_item",
AttributeValue.builder().bool(false).build());

new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(createPutItemRequest(itemValues));
assertThatExceptionOfType(InvalidRequestException.class)
.isThrownBy(
() ->
new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME))
.build(createPutItemRequest(itemValues)))
.withMessageContaining("does not contain partition key part_key_name.");
}

@Test(expected = InvalidRequestException.class)
@Test
public void testExceptWhenNoSortKey() {
ImmutableMap<String, AttributeValue> itemValues =
ImmutableMap.of(
Expand All @@ -153,7 +187,12 @@ public void testExceptWhenNoSortKey() {
"some_item",
AttributeValue.builder().bool(false).build());

new PrimaryKeyBuilder(ImmutableList.of(PARTITION_KEY_NAME, SORT_KEY_NAME))
.build(createPutItemRequest(itemValues));
assertThatExceptionOfType(InvalidRequestException.class)
.isThrownBy(
() ->
new PrimaryKeyBuilder(
ImmutableList.of(PARTITION_KEY_NAME, SORT_KEY_NAME))
.build(createPutItemRequest(itemValues)))
.withMessageContaining("does not contain partition key sort_key_name.");
}
}

0 comments on commit 50b4bdf

Please sign in to comment.