spanner/spec/database_leader_placement_samples_spec.rb (98 lines of code) (raw):

# Copyright 2021 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. require_relative "../database_leader_placement_samples" require_relative "./spec_helper" describe "Spanner database leader placement" do def find_or_create_multi_region_instance @multi_region_instance_id = "test-multi-region-#{@seed}" @multi_region_instance ||= find_instance(@multi_region_instance_id) return @multi_region_instance if @multi_region_instance request = { parent: project_path, instance_id: @multi_region_instance_id, instance: Google::Cloud::Spanner::Admin::Instance::V1::Instance.new({ display_name: "Ruby test leader placement", config: instance_config_path("nam6"), node_count: 1 }) } job = instance_admin_client.create_instance request job.wait_until_done! raise job.error if job.error? @multi_region_instance = job.results @created_instance_ids << @multi_region_instance_id @multi_region_instance end before :each do find_or_create_multi_region_instance end example "instance_config" do capture do instance_config project_id: @project_id, instance_config_id: "nam6" end expect(captured_output).to include( "Available leader options for instance config" ) end example "list_instance_configs" do capture do list_instance_configs project_id: @project_id end expect(captured_output).to include( "Available leader options for instance config projects/#{@project_id}/instanceConfigs" ) end example "create_and_update_database_with_default_leader" do database_id = "test_db_#{SecureRandom.hex(8)}" capture do create_database_with_default_leader project_id: @project_id, instance_id: @multi_region_instance_id, database_id: database_id, default_leader: "us-central1" end expect(captured_output).to include(database_id) expect(captured_output).to include("default leader: us-central1") capture do update_database_with_default_leader project_id: @project_id, instance_id: @multi_region_instance_id, database_id: database_id, default_leader: "us-east1" end expect(captured_output).to include("Updated default leader") end example "list_databases" do database_id = "test_db_#{SecureRandom.hex(8)}" create_database_with_default_leader project_id: @project_id, instance_id: @multi_region_instance_id, database_id: database_id, default_leader: "us-central1" capture do list_databases project_id: @project_id, instance_id: @multi_region_instance_id end expect(captured_output).to include(database_id) end example "database_ddl" do database_id = "test_db_#{SecureRandom.hex(8)}" create_database_with_default_leader project_id: @project_id, instance_id: @multi_region_instance_id, database_id: database_id, default_leader: "us-central1" capture do database_ddl project_id: @project_id, instance_id: @multi_region_instance_id, database_id: database_id end expect(captured_output).to include(database_id) end example "query_information_schema_database_options" do database_id = "test_db_#{SecureRandom.hex(8)}" create_database_with_default_leader project_id: @project_id, instance_id: @multi_region_instance_id, database_id: database_id, default_leader: "us-central1" capture do query_information_schema_database_options project_id: @project_id, instance_id: @multi_region_instance_id, database_id: database_id end expect(captured_output).to include("us-central1") end end