jobs/skip_spec/samples_spec.rb (413 lines of code) (raw):

# Copyright 2018 Google, Inc # # 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 "stringio" require "rspec" require "rspec/retry" require "google/apis/jobs_v3" require "securerandom" require_relative "../V3/basic_company_sample" require_relative "../V3/basic_job_sample" require_relative "../V3/auto_complete_sample" require_relative "../V3/batch_operation_sample" require_relative "../V3/commute_search_sample" require_relative "../V3/custom_attribute_sample" require_relative "../V3/email_alert_search_sample" require_relative "../V3/featured_job_sample" require_relative "../V3/filter_search_sample" require_relative "../V3/histogram_sample" require_relative "../V3/location_search_sample" RSpec.configure do |config| # show retry status in spec process config.verbose_retry = true # show exception that triggers a retry if verbose_retry is set to true config.display_try_failure_messages = true # set retry count and retry sleep interval to 10 seconds config.default_retry_count = 5 config.default_sleep_interval = 10 end # Start verifying describe "Cloud Job Discovery Samples" do before do $stdout = StringIO.new @default_project_id = "projects/#{ENV['GOOGLE_CLOUD_PROJECT']}" end # Capture and return STDOUT output by block def capture real_stdout = $stdout $stdout = StringIO.new yield @captured_output = $stdout.string ensure $stdout = real_stdout end attr_reader :captured_output # verify basic_company_sample.rb it "basic_company_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id company_got = job_discovery_get_company company_name: company_created.name company_created.display_name = "Updated name Google" company_updated = job_discovery_update_company company_name: company_created.name, company_updated: company_created company_created.display_name = "Updated name with field mask Google" company_updated_with_field_mask = job_discovery_update_company_with_field_mask company_name: company_created.name, field_mask: "DisplayName", company_updated: company_created job_discovery_delete_company company_name: company_created.name # Verify status of job service expect(company_created).not_to be nil expect(company_got).not_to be nil expect(company_updated.display_name).to eq "Updated name Google" expect(company_updated_with_field_mask.display_name).to eq "Updated name with field mask Google" company_after_delete = job_discovery_get_company company_name: company_created.name expect(company_after_delete).to be nil end end # verify basic_job_sample.rb it "basic_job_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id job_got = job_discovery_get_job job_name: job_created.name job_created.description = "Updated description" job_updated = job_discovery_update_job job_name: job_created.name, job_to_be_updated: job_created job_created.title = "Updated title software Engineer" job_updated_with_field_mask = job_discovery_update_job_with_field_mask job_name: job_created.name, field_mask: "title", job_to_be_updated: job_created job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name # Verify status of job service expect(job_created).not_to be nil expect(job_got).not_to be nil expect(job_updated.description).to eq "Updated description" expect(job_updated_with_field_mask.title).to eq "Updated title software Engineer" job_after_delete = job_discovery_get_job job_name: job_created.name expect(job_after_delete).to be nil end end # verify auto_complete_sample.rb it "auto_complete_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_generated.title = "software enginner" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id title_auto_complete_result = job_discovery_job_title_auto_complete company_name: company_created.name, query: "sof", project_id: @default_project_id default_auto_complete_result = job_discovery_default_auto_complete company_name: company_created.name, query: "sof", project_id: @default_project_id job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name # Verify status of job service expect(title_auto_complete_result.completion_results).not_to be nil expect(default_auto_complete_result.completion_results).not_to be nil end end # verify batch_operation_sample.rb it "batch_operation_sample" do job_names = [] capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id jobs_created = job_discovery_batch_create_jobs company_name: company_created.name, project_id: @default_project_id jobs_created.each do |job| job.description = job.description + " updated" end job_updated = job_discovery_batch_update_jobs job_to_be_updated: jobs_created jobs_created.each do |job| job.title = job.title + " updated" end job_updated_with_mask = job_discovery_batch_update_jobs_with_mask job_to_be_updated: jobs_created jobs_created.each do |job| job_names.push job.name end job_discovery_batch_delete_jobs job_to_be_deleted: job_names # Verify status of job service expect(jobs_created).not_to be nil job_updated.each do |job| expect(job.description).to include("updated") end job_updated_with_mask.each do |job| expect(job.title).to include("updated") end job_names.each do |job_name| job_after_delete = job_discovery_get_job job_name: job_name expect(job_after_delete).to be nil end end end # verify commute_search_sample.rb it "commute_search_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id sleep 60 location = company_created.derived_info.headquarters_location.lat_lng commute_search_result = job_discovery_commute_search commute_method: "DRIVING", travel_duration: "1000s", start_coordinates: location, project_id: @default_project_id job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name expect(commute_search_result).not_to be nil end end # verify custom_attribute_sample.rb it "custom_attribute_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_job_with_custom_attribute company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id sleep 10 long_filter_result = try_with_backoff "long filter results" do job_discovery_filters_on_long_value_custom_attribute project_id: @default_project_id end string_filter_result = job_discovery_filters_on_string_value_custom_attribute project_id: @default_project_id multi_filters_result = job_discovery_filters_on_multi_custom_attributes project_id: @default_project_id job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name expect(long_filter_result.matching_jobs).not_to be nil expect(string_filter_result.matching_jobs).not_to be nil expect(multi_filters_result.matching_jobs).not_to be nil end end # verify email_alert_search_sample.rb it "email_alert_search_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_job_with_custom_attribute company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id sleep 10 email_alert_search_result = try_with_backoff "email alert search result" do job_discovery_email_alert_search project_id: @default_project_id, company_name: company_created.name end job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name expect(email_alert_search_result.matching_jobs).not_to be nil end end # verify featured_job_sample.rb it "featured_job_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_featured_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_generated.title = "Lab Technician" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id sleep 10 search_result = try_with_backoff "search result" do job_discovery_featured_jobs_search company_name: company_created.name, query: "Lab", project_id: @default_project_id end job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name expect(search_result.matching_jobs).not_to be nil end end # verify filter_search_sample.rb it "filter_search_sample" do headquarters_address = "1600 Amphitheatre Parkway Mountain View, CA 94043" capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: headquarters_address company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id sleep 10 keyword_search_result = try_with_backoff "keyword search result" do job_discovery_basic_keyword_search company_name: company_created.name, query: job_created.title, project_id: @default_project_id end filter_search_result = job_discovery_category_filter_search company_name: company_created.name, categories: [:SCIENCE_AND_ENGINEERING], project_id: @default_project_id employment_search_result = job_discovery_employment_types_filter_search company_name: company_created.name, employment_types: job_created.employment_types, project_id: @default_project_id date_search_result = job_discovery_date_range_filter_search company_name: company_created.name, start_time: "1980-01-15T01:30:15.01Z", end_time: "2099-01-15T01:30:15.01Z", project_id: @default_project_id code_search_result = job_discovery_language_code_filter_search company_name: company_created.name, language_codes: ["en-Us"], project_id: @default_project_id name_search_result = job_discovery_company_display_name_search company_display_names: ["Google"], project_id: @default_project_id compensation_search_result = job_discovery_compensation_search company_name: company_created.name, min_unit: 0, max_unit: 100, project_id: @default_project_id job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name expect(keyword_search_result.matching_jobs).not_to be nil expect(filter_search_result.matching_jobs).not_to be nil expect(employment_search_result.matching_jobs).not_to be nil expect(date_search_result.matching_jobs).not_to be nil expect(code_search_result.matching_jobs).not_to be nil expect(name_search_result.matching_jobs).not_to be nil expect(compensation_search_result.matching_jobs).not_to be nil end end # verify histogram_sample.rb it "histogram_sample" do capture do company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated = job_discovery_generate_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_created = job_discovery_create_job job_to_be_created: job_generated, project_id: @default_project_id sleep 10 search_result = try_with_backoff "search result" do job_discovery_histogram_search company_name: company_created.name, project_id: @default_project_id end job_discovery_delete_job job_name: job_created.name job_discovery_delete_company company_name: company_created.name expect(search_result.matching_jobs).not_to be nil end end # verify location_search_sample.rb it "location_search_sample" do begin company_generated = job_discovery_generate_company display_name: "Google", external_id: "externalId: Google #{SecureRandom.hex}", headquarters_address: "1600 Amphitheatre Parkway " + "Mountain View, CA 94043" company_created = job_discovery_create_company company_to_be_created: company_generated, project_id: @default_project_id job_generated1 = job_discovery_generate_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_generated1.addresses = ["Mountain View, CA"] job_created1 = job_discovery_create_job job_to_be_created: job_generated1, project_id: @default_project_id job_generated1 = job_discovery_generate_job company_name: company_created.name, requisition_id: "#{company_created.name} #{SecureRandom.hex}" job_generated2.addresses = ["Sunnyvale, CA"] job_created2 = job_discovery_create_job job_to_be_created: job_generated2, project_id: @default_project_id sleep 10 basic_search_result = try_with_backoff "basic search result" do job_discovery_basic_location_search company_name: company_created.name, location: "Mountain View, CA", distance: 0.5, project_id: @default_project_id end keyword_search_result = job_discovery_keyword_location_search company_name: company_created.name, location: "Mountain View, CA", distance: 0.5, keyword: "Lab", project_id: @default_project_id city_search_result = job_discovery_city_location_search company_name: company_created.name, city: "Mountain View, CA", project_id: @default_project_id multi_search_result = job_discovery_multi_location_search company_name: company_created.name, location1: "Mountain View, CA", distance1: 0.5, city2: "Sunnyvale", project_id: @default_project_id broadening_search_result = job_discovery_broadening_location_search company_name: company_created.name, city: "Sunnyvale", project_id: @default_project_id job_discovery_delete_job job_name: job_created1.name job_discovery_delete_job job_name: job_created2.name job_discovery_delete_company company_name: company_created.name expect(basic_search_result.matching_jobs).not_to be nil expect(keyword_search_result.matching_jobs).not_to be nil expect(city_search_result.matching_jobs).not_to be nil expect(multi_result.matching_jobs).not_to be nil expect(broadening_result.matching_jobs).not_to be nil rescue StandardError puts "location_search_sample not all succeeded" ensure $stdout = StringIO.new end end def try_with_backoff msg = nil, limit: 10 count = 0 loop do begin result = yield return result if count >= limit || !result.nil? count += 1 puts "Retry (#{count}): #{msg}" sleep count end end end end