@Override public com.google.spanner.v1.Session call() throws Exception { return gapicRpc.createSession( db.getName(), getOptions().getSessionLabels(), options); } });
@Test public void getDbclientAgainGivesSame() { Map<String, String> labels = new HashMap<>(); labels.put("env", "dev"); Mockito.when(spannerOptions.getSessionLabels()).thenReturn(labels); String dbName = "projects/p1/instances/i1/databases/d1"; DatabaseId db = DatabaseId.of(dbName); Mockito.when(spannerOptions.getTransportOptions()) .thenReturn(GrpcTransportOptions.newBuilder().build()); Mockito.when(spannerOptions.getSessionPoolOptions()) .thenReturn(SessionPoolOptions.newBuilder().build()); DatabaseClient databaseClient = impl.getDatabaseClient(db); // Get db client again DatabaseClient databaseClient1 = impl.getDatabaseClient(db); assertThat(databaseClient1).isSameAs(databaseClient); }
@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()); }
@Test public void getDbclientAfterCloseThrows() { SpannerImpl imp = new SpannerImpl(rpc, 1, spannerOptions); Map<String, String> labels = new HashMap<>(); labels.put("env", "dev"); Mockito.when(spannerOptions.getSessionLabels()).thenReturn(labels); String dbName = "projects/p1/instances/i1/databases/d1"; DatabaseId db = DatabaseId.of(dbName); Mockito.when(spannerOptions.getTransportOptions()) .thenReturn(GrpcTransportOptions.newBuilder().build()); Mockito.when(spannerOptions.getSessionPoolOptions()) .thenReturn(SessionPoolOptions.newBuilder().build()); imp.close(); try { imp.getDatabaseClient(db); fail("Expected exception"); } catch (IllegalStateException e) { assertThat(e.getMessage()).contains("Cloud Spanner client has been closed"); } }
@Test public void defaultBuilder() { // We need to set the project id since in test environment we cannot obtain a default project // id. SpannerOptions options = SpannerOptions.newBuilder().setProjectId("test-project").build(); assertThat(options.getHost()).isEqualTo("https://spanner.googleapis.com"); assertThat(options.getPrefetchChunks()).isEqualTo(4); assertThat(options.getSessionLabels()).isNull(); }
@Test public void builder() { String host = "http://localhost:8000/"; String projectId = "test-project"; Map<String, String> labels = new HashMap<>(); labels.put("env", "dev"); SpannerOptions options = SpannerOptions.newBuilder() .setHost(host) .setProjectId(projectId) .setPrefetchChunks(2) .setSessionLabels(labels) .build(); assertThat(options.getHost()).isEqualTo(host); assertThat(options.getProjectId()).isEqualTo(projectId); assertThat(options.getPrefetchChunks()).isEqualTo(2); assertThat(options.getSessionLabels()).containsExactlyEntriesIn(labels); }
@Override public com.google.spanner.v1.Session call() throws Exception { return gapicRpc.createSession( db.getName(), getOptions().getSessionLabels(), options); } });