@Test public void queryEquality() { Options o1; Options o2; Options o3; o1 = Options.fromQueryOptions(); o2 = Options.fromQueryOptions(); assertThat(o1.equals(o2)).isTrue(); o2 = Options.fromReadOptions(Options.prefetchChunks(1)); assertThat(o1.equals(o2)).isFalse(); assertThat(o2.equals(o1)).isFalse(); o3 = Options.fromReadOptions(Options.prefetchChunks(1)); assertThat(o2.equals(o3)).isTrue(); o3 = Options.fromReadOptions(Options.prefetchChunks(2)); assertThat(o2.equals(o3)).isFalse(); } }
@Override // Since Options mandates checking hasXX() before XX() is called, the equals & hashCode look more // complicated than usual. public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Options that = (Options) o; return (!hasLimit() && !that.hasLimit() || hasLimit() && that.hasLimit() && Objects.equals(limit(), that.limit())) && (!hasPrefetchChunks() && !that.hasPrefetchChunks() || hasPrefetchChunks() && that.hasPrefetchChunks() && Objects.equals(prefetchChunks(), that.prefetchChunks())) && (!hasPageSize() && !that.hasPageSize() || hasPageSize() && that.hasPageSize() && Objects.equals(pageSize(), that.pageSize())) && Objects.equals(pageToken(), that.pageToken()) && Objects.equals(filter(), that.filter()); }
@Override public Page<InstanceConfig> listInstanceConfigs(ListOption... options) { final Options listOptions = Options.fromListOptions(options); Preconditions.checkArgument( !listOptions.hasFilter(), "Filter option is not supported by listInstanceConfigs"); final int pageSize = listOptions.hasPageSize() ? listOptions.pageSize() : 0; PageFetcher<InstanceConfig, com.google.spanner.admin.instance.v1.InstanceConfig> pageFetcher = new PageFetcher<InstanceConfig, com.google.spanner.admin.instance.v1.InstanceConfig>() { @Override public Paginated<com.google.spanner.admin.instance.v1.InstanceConfig> getNextPage( String nextPageToken) { return rpc.listInstanceConfigs(pageSize, nextPageToken); } @Override public InstanceConfig fromProto( com.google.spanner.admin.instance.v1.InstanceConfig proto) { return InstanceConfig.fromProto(proto, InstanceAdminClientImpl.this); } }; if (listOptions.hasPageToken()) { pageFetcher.nextPageToken = listOptions.pageToken(); } return pageFetcher.getNextPage(); }
@Override public Page<Instance> listInstances(ListOption... options) throws SpannerException { final Options listOptions = Options.fromListOptions(options); final int pageSize = listOptions.hasPageSize() ? listOptions.pageSize() : 0; final String filter = listOptions.filter(); PageFetcher<Instance, com.google.spanner.admin.instance.v1.Instance> pageFetcher = new PageFetcher<Instance, com.google.spanner.admin.instance.v1.Instance>() { @Override public Paginated<com.google.spanner.admin.instance.v1.Instance> getNextPage( String nextPageToken) { return rpc.listInstances(pageSize, nextPageToken, filter); } @Override public Instance fromProto(com.google.spanner.admin.instance.v1.Instance proto) { return Instance.fromProto(proto, InstanceAdminClientImpl.this, dbClient); } }; if (listOptions.hasPageToken()) { pageFetcher.nextPageToken = listOptions.pageToken(); } return pageFetcher.getNextPage(); }
@Test public void listOptTest() { int pageSize = 3; String pageToken = "ptok"; String filter = "env"; Options opts = Options.fromListOptions( Options.pageSize(pageSize), Options.pageToken(pageToken), Options.filter(filter)); assertThat(opts.toString()) .isEqualTo( "pageSize: " + Integer.toString(pageSize) + " pageToken: " + pageToken + " filter: " + filter + " "); assertThat(opts.hasPageSize()).isTrue(); assertThat(opts.hasPageToken()).isTrue(); assertThat(opts.hasFilter()).isTrue(); assertThat(opts.pageSize()).isEqualTo(pageSize); assertThat(opts.pageToken()).isEqualTo(pageToken); assertThat(opts.filter()).isEqualTo(filter); assertThat(opts.hashCode()).isEqualTo(108027089); }
@Test public void allOptionsPresent() { Options options = Options.fromReadOptions(Options.limit(10), Options.prefetchChunks(1)); assertThat(options.hasLimit()).isTrue(); assertThat(options.limit()).isEqualTo(10); assertThat(options.hasPrefetchChunks()).isTrue(); assertThat(options.prefetchChunks()).isEqualTo(1); }
@Test public void allOptionsAbsent() { Options options = Options.fromReadOptions(); assertThat(options.hasLimit()).isFalse(); assertThat(options.hasPrefetchChunks()).isFalse(); assertThat(options.hasFilter()).isFalse(); assertThat(options.hasPageToken()).isFalse(); assertThat(options.toString()).isEqualTo(""); assertThat(options.equals(options)).isTrue(); assertThat(options.equals(null)).isFalse(); assertThat(options.equals(this)).isFalse(); assertThat(options.hashCode()).isEqualTo(31); }
@Test public void listEquality() { Options o1; Options o2; Options o3; o1 = Options.fromListOptions(); o2 = Options.fromListOptions(); assertThat(o1.equals(o2)).isTrue(); o2 = Options.fromListOptions(Options.pageSize(1)); assertThat(o1.equals(o2)).isFalse(); assertThat(o2.equals(o1)).isFalse(); o3 = Options.fromListOptions(Options.pageSize(1)); assertThat(o2.equals(o3)).isTrue(); o3 = Options.fromListOptions(Options.pageSize(2)); assertThat(o2.equals(o3)).isFalse(); o2 = Options.fromListOptions(Options.pageToken("t1")); assertThat(o1.equals(o2)).isFalse(); o3 = Options.fromListOptions(Options.pageToken("t1")); assertThat(o2.equals(o3)).isTrue(); o3 = Options.fromListOptions(Options.pageToken("t2")); assertThat(o2.equals(o3)).isFalse(); o2 = Options.fromListOptions(Options.filter("f1")); assertThat(o1.equals(o2)).isFalse(); o3 = Options.fromListOptions(Options.filter("f1")); assertThat(o2.equals(o3)).isTrue(); o3 = Options.fromListOptions(Options.filter("f2")); assertThat(o2.equals(o3)).isFalse(); }
@Test public void readOptTest() { int limit = 3; Options opts = Options.fromReadOptions(Options.limit(limit)); assertThat(opts.toString()).isEqualTo("limit: " + Integer.toString(limit) + " "); assertThat(opts.hashCode()).isEqualTo(964); }
@Test public void readEquality() { Options o1; Options o2; Options o3; o1 = Options.fromReadOptions(); o2 = Options.fromReadOptions(); assertThat(o1.equals(o2)).isTrue(); o2 = Options.fromReadOptions(Options.limit(1)); assertThat(o1.equals(o2)).isFalse(); assertThat(o2.equals(o1)).isFalse(); o3 = Options.fromReadOptions(Options.limit(1)); assertThat(o2.equals(o3)).isTrue(); o3 = Options.fromReadOptions(Options.limit(2)); assertThat(o2.equals(o3)).isFalse(); }
@Test public void queryOptTest() { int chunks = 3; Options opts = Options.fromQueryOptions(Options.prefetchChunks(chunks)); assertThat(opts.toString()).isEqualTo("prefetchChunks: " + Integer.toString(chunks) + " "); assertThat(opts.prefetchChunks()).isEqualTo(chunks); assertThat(opts.hashCode()).isEqualTo(964); }
/** Example to list instance configs. */ public List<InstanceConfig> listInstanceConfigs() { // [START instance_admin_client_list_configs] List<InstanceConfig> configs = Lists.newArrayList( instanceAdminClient.listInstanceConfigs(Options.pageSize(1)).iterateAll()); // [END instance_admin_client_list_configs] return configs; }
@Test public void readUsingIndexInstance() { Partition p = Partition.createReadPartition( partitionToken, partitionOptions, table, index, keys, columns, readOptions); assertThat(p.getPartitionToken()).isEqualTo(partitionToken); assertThat(p.getTable()).isEqualTo(table); assertThat(p.getIndex()).isEqualTo(index); assertThat(p.getKeys()).isEqualTo(keys); assertThat(p.getColumns()).isEqualTo(columns); assertTrue(p.getReadOptions().hasLimit()); assertThat(p.getReadOptions().limit()).isEqualTo(10); assertNull(p.getStatement()); assertNull(p.getQueryOptions()); // Test serialization. reserializeAndAssert(p); }
ReadOption... option) throws SpannerException { Options readOptions = Options.fromReadOptions(option); Preconditions.checkArgument( !readOptions.hasLimit(), "Limit option not supported by partitionRead|partitionReadUsingIndex"); final PartitionReadRequest.Builder builder =
private ResultSet executeQueryInternal( Statement statement, com.google.spanner.v1.ExecuteSqlRequest.QueryMode queryMode, QueryOption... options) { Options readOptions = Options.fromQueryOptions(options); return executeQueryInternalWithOptions( statement, queryMode, readOptions, null /*partitionToken*/); }
@Test public void negativeLimitsNotAllowed() { expectedException.expect(IllegalArgumentException.class); Options.limit(-1); }
@Test public void listInstances() { String nextToken = "token"; String filter = "env:dev"; when(rpc.listInstances(1, null, filter)) .thenReturn( new Paginated<com.google.spanner.admin.instance.v1.Instance>( ImmutableList.of(getInstanceProto()), nextToken)); when(rpc.listInstances(1, nextToken, filter)) .thenReturn( new Paginated<com.google.spanner.admin.instance.v1.Instance>( ImmutableList.of(getAnotherInstanceProto()), "")); List<Instance> instances = Lists.newArrayList( client.listInstances(Options.pageSize(1), Options.filter(filter)).iterateAll()); assertThat(instances.get(0).getId().getName()).isEqualTo(INSTANCE_NAME); assertThat(instances.get(1).getId().getName()).isEqualTo(INSTANCE_NAME2); assertThat(instances.size()).isEqualTo(2); } }
private ResultSet readInternal( String table, @Nullable String index, KeySet keys, Iterable<String> columns, ReadOption... options) { Options readOptions = Options.fromReadOptions(options); return readInternalWithOptions( table, index, keys, columns, readOptions, null /*partitionToken*/); }
@Test public void listInstances() throws Exception { Instance instance = Iterators.getOnlyElement( instanceClient .listInstances( Options.filter( "name:instances/" + env.getTestHelper().getInstanceId().getInstance())) .iterateAll() .iterator()); assertThat(instance.getId()).isEqualTo(env.getTestHelper().getInstanceId()); }
.setTable(checkNotNull(table)) .addAllColumns(columns); if (readOptions.hasLimit()) { builder.setLimit(readOptions.limit()); readOptions.hasPrefetchChunks() ? readOptions.prefetchChunks() : defaultPrefetchChunks; ResumableStreamIterator stream = new ResumableStreamIterator(MAX_BUFFERED_CHUNKS, READ, span) {