@Override public Session createSession( String databaseName, @Nullable Map<String, String> labels, @Nullable Map<Option, ?> options) throws SpannerException { CreateSessionRequest.Builder requestBuilder = CreateSessionRequest.newBuilder().setDatabase(databaseName); if (labels != null && !labels.isEmpty()) { Session.Builder session = Session.newBuilder().putAllLabels(labels); requestBuilder.setSession(session); } CreateSessionRequest request = requestBuilder.build(); GrpcCallContext context = newCallContext(options, databaseName); return get(spannerStub.createSessionCallable().futureCall(request, context)); }
@Test public void createAndCloseSession() { Map<String, String> labels = new HashMap<>(); labels.put("env", "dev"); Mockito.when(spannerOptions.getSessionLabels()).thenReturn(labels); String dbName = "projects/p1/instances/i1/databases/d1"; String sessionName = dbName + "/sessions/s1"; DatabaseId db = DatabaseId.of(dbName); com.google.spanner.v1.Session sessionProto = com.google.spanner.v1.Session.newBuilder() .setName(sessionName) .putAllLabels(labels) .build(); Mockito.when(rpc.createSession(Mockito.eq(dbName), Mockito.eq(labels), options.capture())) .thenReturn(sessionProto); Session session = impl.createSession(db); assertThat(session.getName()).isEqualTo(sessionName); session.close(); // The same channelHint is passed for deleteSession (contained in "options"). Mockito.verify(rpc).deleteSession(sessionName, options.getValue()); }
@Override public Session createSession( String databaseName, @Nullable Map<String, String> labels, @Nullable Map<Option, ?> options) throws SpannerException { CreateSessionRequest.Builder requestBuilder = CreateSessionRequest.newBuilder().setDatabase(databaseName); if (labels != null && !labels.isEmpty()) { Session.Builder session = Session.newBuilder().putAllLabels(labels); requestBuilder.setSession(session); } CreateSessionRequest request = requestBuilder.build(); GrpcCallContext context = newCallContext(options, databaseName); return get(spannerStub.createSessionCallable().futureCall(request, context)); }