in grpc-gcp-benchmarks/src/benchmarkTest/java/SpannerTestCases.java [133:204]
void prepareTestData() throws InterruptedException {
ManagedChannel channel = getChannel();
SpannerBlockingStub stub = getBlockingStub(channel);
// Because of max data size, we need to separate into different rows.
int columnBytes = Integer.min(payload, MAX_SIZE_PER_COLUMN);
int rows = (payload - 1) / columnBytes + 1;
char[] charArray = new char[columnBytes];
Arrays.fill(charArray, 'z');
String colContent = new String(charArray);
Session session =
stub.createSession(CreateSessionRequest.newBuilder().setDatabase(database).build());
long start = System.currentTimeMillis();
// Clean the data in the table.
BeginTransactionRequest request =
BeginTransactionRequest.newBuilder()
.setSession(session.getName())
.setOptions(
TransactionOptions.newBuilder()
.setReadWrite(TransactionOptions.ReadWrite.getDefaultInstance())
.build())
.build();
Transaction txn = stub.beginTransaction(request);
stub.commit(
CommitRequest.newBuilder()
.addMutations(
Mutation.newBuilder()
.setDelete(
Mutation.Delete.newBuilder()
.setTable(LARGE_TABLE)
.setKeySet(KeySet.newBuilder().setAll(true).build())
.build())
.build())
.setSession(session.getName())
.setTransactionId(txn.getId())
.build());
System.out.println(
String.format(
"\nDeleted the previous large_table in %d ms.", System.currentTimeMillis() - start));
// Add the payload data.
start = System.currentTimeMillis();
for (int i = 0; i < rows; i++) {
txn = stub.beginTransaction(request);
stub.commit(
CommitRequest.newBuilder()
.addMutations(
Mutation.newBuilder()
.setInsertOrUpdate(
Mutation.Write.newBuilder()
.addColumns("id")
.addColumns("data")
.addValues(
ListValue.newBuilder()
.addValues(Value.newBuilder().setStringValue("payload" + i))
.addValues(Value.newBuilder().setStringValue(colContent))
.build())
.setTable(LARGE_TABLE)
.build())
.build())
.setSession(session.getName())
.setTransactionId(txn.getId())
.build());
}
System.out.println(
String.format(
"Successfully added ColumnBytes: %d, Rows: %d to large_table in %d ms.",
columnBytes, rows, System.currentTimeMillis() - start));
stub.deleteSession(DeleteSessionRequest.newBuilder().setName(session.getName()).build());
channel.shutdown().awaitTermination(5, TimeUnit.SECONDS);
}