From 0b2996681938a6acb56f88813c91e38480fea2a2 Mon Sep 17 00:00:00 2001 From: Olav Loite Date: Wed, 23 Oct 2019 11:57:51 +0200 Subject: [PATCH 1/2] Spanner: Add IT for inserting duplicate row --- .../google/cloud/spanner/it/ITWriteTest.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java index aff50e7cc059..67879815cd65 100644 --- a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java +++ b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java @@ -18,7 +18,7 @@ import static com.google.cloud.spanner.SpannerMatchers.isSpannerException; import static com.google.common.truth.Truth.assertThat; - +import static org.junit.Assert.fail; import com.google.cloud.ByteArray; import com.google.cloud.Date; import com.google.cloud.Timestamp; @@ -127,6 +127,38 @@ public void writeAtLeastOnce() { assertThat(row.getString(0)).isEqualTo("v1"); } + @Test + public void writeAlreadyExists() { + client.write( + Arrays.asList( + Mutation.newInsertBuilder("T") + .set("K") + .to(lastKey = "key1") + .set("StringValue") + .to("v1") + .build())); + Struct row = readLastRow("StringValue"); + assertThat(row.isNull(0)).isFalse(); + assertThat(row.getString(0)).isEqualTo("v1"); + + try { + client.write( + Arrays.asList( + Mutation.newInsertBuilder("T") + .set("K") + .to(lastKey) + .set("StringValue") + .to("v2") + .build())); + fail("missing expected ALREADY_EXISTS exception"); + } catch (SpannerException e) { + assertThat(e.getErrorCode()).isEqualTo(ErrorCode.ALREADY_EXISTS); + } + row = readLastRow("StringValue"); + assertThat(row.isNull(0)).isFalse(); + assertThat(row.getString(0)).isEqualTo("v1"); + } + @Ignore // TODO(user): Fix this - backend currently accepts empty mutation. @Test public void emptyWrite() { From f462f6849cd8e6b7eef7f52f6b18381a3e166c9b Mon Sep 17 00:00:00 2001 From: Olav Loite Date: Wed, 23 Oct 2019 13:03:59 +0200 Subject: [PATCH 2/2] run code formatter --- .../src/test/java/com/google/cloud/spanner/it/ITWriteTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java index 67879815cd65..fed755c588aa 100644 --- a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java +++ b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITWriteTest.java @@ -19,6 +19,7 @@ import static com.google.cloud.spanner.SpannerMatchers.isSpannerException; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; + import com.google.cloud.ByteArray; import com.google.cloud.Date; import com.google.cloud.Timestamp;