void prepareTestData()

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);
  }