use of com.google.cloud.spanner.ReadOnlyTransaction in project google-cloud-java by GoogleCloudPlatform.
the class ITReadOnlyTxnTest method singleReadTimestamp.
@Test
public void singleReadTimestamp() {
History expected = history.get(2);
TimestampBound bound = TimestampBound.ofReadTimestamp(expected.timestamp);
ReadOnlyTransaction readContext = client.singleUseReadOnlyTransaction(bound);
Struct row = readRow(readContext);
assertThat(row).isNotNull();
assertThat(row.getString(0)).isEqualTo(expected.value);
assertThat(readContext.getReadTimestamp()).isEqualTo(expected.timestamp);
row = readRow(client.singleUse(bound));
assertThat(row).isNotNull();
assertThat(row.getString(0)).isEqualTo(expected.value);
}
use of com.google.cloud.spanner.ReadOnlyTransaction in project google-cloud-java by GoogleCloudPlatform.
the class ITReadOnlyTxnTest method multiStrong.
@Test
public void multiStrong() {
setUpPrivateDatabase();
History expected = history.get(history.size() - 1);
try (ReadOnlyTransaction readContext = client.readOnlyTransaction()) {
Struct row = readRow(readContext);
assertThat(row).isNotNull();
assertThat(row.getString(0)).isEqualTo(expected.value);
assertThat(readContext.getReadTimestamp()).isAtLeast(expected.timestamp);
insertAndReadAgain(readContext, readContext.getReadTimestamp(), expected.value);
}
}
use of com.google.cloud.spanner.ReadOnlyTransaction in project google-cloud-java by GoogleCloudPlatform.
the class ITReadOnlyTxnTest method singleExactStaleness.
@Test
public void singleExactStaleness() {
// TODO(user): Use a shorter deadline (when supported) and pass on the call to Cloud Spanner.
long deadlineNanoTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(1);
// The only exact staleness values that can be tested reliably are before the first item or
// later than the last item: we choose the former.
//
// Pick a staleness that is "guaranteed" not to observe the first write. Note that this
// guarantee doesn't strictly hold in the absence of enforced read deadlines, but we use a
// deadline large enough to make it practically true.
long stalenessNanos = 1 + deadlineNanoTime - history.get(0).minCommitNanoTime;
TimestampBound bound = TimestampBound.ofExactStaleness(stalenessNanos, TimeUnit.NANOSECONDS);
ReadOnlyTransaction readContext = client.singleUseReadOnlyTransaction(bound);
Struct row = readRow(readContext);
assertThat(row).isNull();
assertThat(readContext.getReadTimestamp().toSqlTimestamp()).isLessThan(history.get(0).timestamp.toSqlTimestamp());
row = readRow(client.singleUse(bound));
assertThat(row).isNull();
}
use of com.google.cloud.spanner.ReadOnlyTransaction in project google-cloud-java by GoogleCloudPlatform.
the class ITReadOnlyTxnTest method multiExactStaleness.
@Test
public void multiExactStaleness() {
setUpPrivateDatabase();
// See singleExactStaleness() for why we pick this timestamp. We expect to see no value.
long deadlineNanoTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(1);
long stalenessNanos = 1 + deadlineNanoTime - history.get(0).minCommitNanoTime;
try (ReadOnlyTransaction readContext = client.readOnlyTransaction(TimestampBound.ofExactStaleness(stalenessNanos, TimeUnit.NANOSECONDS))) {
Struct row = readRow(readContext);
assertThat(row).isNull();
assertThat(readContext.getReadTimestamp().toSqlTimestamp()).isLessThan(history.get(0).timestamp.toSqlTimestamp());
insertAndReadAgain(readContext, readContext.getReadTimestamp(), null);
}
}
use of com.google.cloud.spanner.ReadOnlyTransaction in project google-cloud-java by GoogleCloudPlatform.
the class ITReadOnlyTxnTest method singleStrong.
@Test
public void singleStrong() {
History expected = history.get(history.size() - 1);
ReadOnlyTransaction readContext = client.singleUseReadOnlyTransaction();
Struct row = readRow(readContext);
assertThat(row).isNotNull();
assertThat(row.getString(0)).isEqualTo(expected.value);
assertThat(readContext.getReadTimestamp()).isAtLeast(expected.timestamp);
row = readRow(client.singleUse());
assertThat(row).isNotNull();
assertThat(row.getString(0)).isEqualTo(expected.value);
}
Aggregations