private static Spanner getSpanner(Properties properties, String host, String project) { if (spanner != null) { return spanner; } String numChannels = properties.getProperty(CloudSpannerProperties.NUM_CHANNELS); int numThreads = Integer.parseInt(properties.getProperty(Client.THREAD_COUNT_PROPERTY, "1")); SpannerOptions.Builder optionsBuilder = SpannerOptions.newBuilder() .setSessionPoolOption(SessionPoolOptions.newBuilder() .setMinSessions(numThreads) // Since we have no read-write transactions, we can set the write session fraction to 0. .setWriteSessionsFraction(0) .build()); if (host != null) { optionsBuilder.setHost(host); } if (project != null) { optionsBuilder.setProjectId(project); } if (numChannels != null) { optionsBuilder.setNumChannels(Integer.parseInt(numChannels)); } spanner = optionsBuilder.build().getService(); Runtime.getRuntime().addShutdownHook(new Thread("spannerShutdown") { @Override public void run() { spanner.close(); } }); return spanner; }
public GceTestEnvConfig() { String projectId = System.getProperty(GCE_PROJECT_ID, ""); String serverUrl = System.getProperty(GCE_SERVER_URL, ""); double errorProbability = Double.parseDouble(System.getProperty(GCE_STREAM_BROKEN_PROBABILITY, "0.0")); checkState(errorProbability <= 1.0); SpannerOptions.Builder builder = SpannerOptions.newBuilder(); if (!projectId.isEmpty()) { builder.setProjectId(projectId); } if (!serverUrl.isEmpty()) { builder.setHost(serverUrl); } options = builder .setInterceptorProvider( SpannerInterceptorProvider.createDefault() .with(new GrpcErrorInjector(errorProbability))) .build(); }
@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); }
@Before public void setUp() throws Exception { PipelineOptionsFactory.register(SpannerTestPipelineOptions.class); options = TestPipeline.testingPipelineOptions().as(SpannerTestPipelineOptions.class); project = options.as(GcpOptions.class).getProject(); spanner = SpannerOptions.newBuilder().setProjectId(project).build().getService(); databaseName = generateDatabaseName(); databaseAdminClient = spanner.getDatabaseAdminClient(); // Delete database if exists. databaseAdminClient.dropDatabase(options.getInstanceId(), databaseName); Operation<Database, CreateDatabaseMetadata> op = databaseAdminClient.createDatabase( options.getInstanceId(), databaseName, Collections.singleton( "CREATE TABLE " + options.getTable() + " (" + " Key INT64," + " Value STRING(MAX)," + ") PRIMARY KEY (Key)")); op.waitFor(); makeTestData(); }
public SpannerAccessor connectToSpanner() { SpannerOptions.Builder builder = SpannerOptions.newBuilder(); if (getProjectId() != null) { builder.setProjectId(getProjectId().get()); } if (getServiceFactory() != null) { builder.setServiceFactory(this.getServiceFactory()); } if (getHost() != null) { builder.setHost(getHost().get()); } String userAgentString = USER_AGENT_PREFIX + "/" + ReleaseInfo.getReleaseInfo().getVersion(); builder.setHeaderProvider(FixedHeaderProvider.create("user-agent", userAgentString)); SpannerOptions options = builder.build(); Spanner spanner = options.getService(); DatabaseClient databaseClient = spanner.getDatabaseClient( DatabaseId.of(options.getProjectId(), getInstanceId().get(), getDatabaseId().get())); BatchClient batchClient = spanner.getBatchClient( DatabaseId.of(options.getProjectId(), getInstanceId().get(), getDatabaseId().get())); DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); return new SpannerAccessor(spanner, databaseClient, databaseAdminClient, batchClient); } }
@Before public void setUp() throws Exception { PipelineOptionsFactory.register(SpannerTestPipelineOptions.class); options = TestPipeline.testingPipelineOptions().as(SpannerTestPipelineOptions.class); project = options.as(GcpOptions.class).getProject(); spanner = SpannerOptions.newBuilder().setProjectId(project).build().getService(); databaseName = generateDatabaseName(); databaseAdminClient = spanner.getDatabaseAdminClient(); // Delete database if exists. databaseAdminClient.dropDatabase(options.getInstanceId(), databaseName); Operation<Database, CreateDatabaseMetadata> op = databaseAdminClient.createDatabase( options.getInstanceId(), databaseName, Collections.singleton( "CREATE TABLE " + options.getTable() + " (" + " Key INT64," + " Value STRING(MAX) NOT NULL," + ") PRIMARY KEY (Key)")); op.waitFor(); }
@Bean @ConditionalOnMissingBean public SpannerOptions spannerOptions(SessionPoolOptions sessionPoolOptions) { Builder builder = SpannerOptions.newBuilder() .setProjectId(this.projectId) .setHeaderProvider(new UserAgentHeaderProvider(this.getClass())) .setCredentials(this.credentials); if (this.numRpcChannels >= 0) { builder.setNumChannels(this.numRpcChannels); } if (this.prefetchChunks >= 0) { builder.setPrefetchChunks(this.prefetchChunks); } builder.setSessionPoolOption(sessionPoolOptions); return builder.build(); }
/** * Creates a {@code RemoteSpannerHelper} bound to the given instance ID. All databases created * using this will be created in the given instance. */ public static RemoteSpannerHelper create(InstanceId instanceId) throws Throwable { SpannerOptions options = SpannerOptions.newBuilder().setProjectId(instanceId.getProject()).build(); Spanner client = options.getService(); return new RemoteSpannerHelper(options, instanceId, client); }
/** * Creates a {@code RemoteSpannerHelper} bound to the given instance ID. All databases created * using this will be created in the given instance. */ public static RemoteSpannerHelper create(InstanceId instanceId) throws Throwable { SpannerOptions options = SpannerOptions.newBuilder().setProjectId(instanceId.getProject()).build(); Spanner client = options.getService(); return new RemoteSpannerHelper(options, instanceId, client); }
@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(); }