From 8a7a1d3d5cd3cb2c6ba2660425414af87515adf9 Mon Sep 17 00:00:00 2001 From: Fernando Briano Date: Mon, 11 Sep 2023 14:13:48 +0100 Subject: [PATCH] [API] Reimplement Tests - spatial/70_script_doc_values.yml manually This test is very flaky and I reimplemented it with refresh:true, to see if it remains stable. --- .../spatial/script_doc_values_spec.rb | 147 ++++++++++++++++++ .../spec/rest_api/skipped_tests_platinum.yml | 4 + 2 files changed, 151 insertions(+) create mode 100644 elasticsearch-api/spec/platinum/integration/spatial/script_doc_values_spec.rb diff --git a/elasticsearch-api/spec/platinum/integration/spatial/script_doc_values_spec.rb b/elasticsearch-api/spec/platinum/integration/spatial/script_doc_values_spec.rb new file mode 100644 index 0000000000..5061eb8427 --- /dev/null +++ b/elasticsearch-api/spec/platinum/integration/spatial/script_doc_values_spec.rb @@ -0,0 +1,147 @@ +# Licensed to Elasticsearch B.V. under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Elasticsearch B.V. licenses this file to you 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 '../platinum_helper' + +describe 'Spatial API' do + context 'script doc values tests' do + index = 'geospatial_test' + before(:all) do + ADMIN_CLIENT.indices.create( + index: index, + body: { + settings: { number_of_shards: 1}, + mappings: { properties: { geo_shape: { type: 'geo_shape' } } } + } + ) + ADMIN_CLIENT.index( + index: index, + id: '1', + body: { + geo_shape: 'POLYGON((24.04725 59.942,24.04825 59.94125,24.04875 59.94125,24.04875 59.94175,24.048 59.9425,24.0475 59.94275,24.0465 59.94225,24.046 59.94225,24.04575 59.9425,24.04525 59.94225,24.04725 59.942))' + }, + refresh: true + ) + ADMIN_CLIENT.indices.refresh + end + + after(:all) do + ADMIN_CLIENT.indices.delete(index: index) + end + + it 'centroid' do + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { centroid: { script: { source: "doc['geo_shape'].getCentroid()" } } } + } + ) + expect(response['hits']['hits'].first['fields']['centroid'].first['lat']).to eq 59.942043484188616 + expect(response['hits']['hits'].first['fields']['centroid'].first['lon']).to eq 24.047588920220733 + end + + it 'bounding box' do + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { bbox: { script: { source: "doc['geo_shape'].getBoundingBox()" } } } + } + ) + expect(response['hits']['hits'].first['fields']['bbox'].first['top_left']['lat']).to eq 59.942749994806945 + expect(response['hits']['hits'].first['fields']['bbox'].first['top_left']['lon']).to eq 24.045249950140715 + expect(response['hits']['hits'].first['fields']['bbox'].first['bottom_right']['lat']).to eq 59.94124996941537 + expect(response['hits']['hits'].first['fields']['bbox'].first['bottom_right']['lon']).to eq 24.048749981448054 + end + + it 'label position' do + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { label_position: { script: { source: "doc['geo_shape'].getLabelPosition()" } } } + } + ) + expect(response['hits']['hits'].first['fields']['label_position'].first['lat']).to eq 59.942043484188616 + expect(response['hits']['hits'].first['fields']['label_position'].first['lon']).to eq 24.047588920220733 + end + + it 'bounding box points' do + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { + topLeft: { script: { source: "doc['geo_shape'].getBoundingBox().topLeft()" } }, + bottomRight: { script: { source: "doc['geo_shape'].getBoundingBox().bottomRight()" } } + } + } + ) + expect(response['hits']['hits'].first['fields']['topLeft'].first['lat']).to eq 59.942749994806945 + expect(response['hits']['hits'].first['fields']['topLeft'].first['lon']).to eq 24.045249950140715 + expect(response['hits']['hits'].first['fields']['bottomRight'].first['lat']).to eq 59.94124996941537 + expect(response['hits']['hits'].first['fields']['bottomRight'].first['lon']).to eq 24.048749981448054 + end + + it 'dimensional type' do + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { type: { script: { source: "doc['geo_shape'].getDimensionalType()" } } } + } + ) + expect(response['hits']['hits'].first['fields']['type'].first).to eq 2 + end + + it 'geoshape value' do + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { type: { script: { source: "doc['geo_shape'].get(0)" } } } + } + ) + expect(response['hits']['hits'].first['fields']['type'].first).to eq '' + + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { type: { script: { source: "field('geo_shape').get(null)"} } } + } + ) + expect(response['hits']['hits'].first['fields']['type'].first).to eq '' + + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { type: { script: { source: "$('geo_shape', null)"} } } + } + ) + expect(response['hits']['hits'].first['fields']['type'].first).to eq '' + end + + it 'diagonal length' do + response = ADMIN_CLIENT.search( + rest_total_hits_as_int: true, + body: { + script_fields: { + width: { script: { source: "doc['geo_shape'].getMercatorWidth()" } }, + height: { script: { source: "doc['geo_shape'].getMercatorHeight()" } } + } + } + ) + expect(response['hits']['hits'].first['fields']['width'].first).to eq 389.62170283915475 + expect(response['hits']['hits'].first['fields']['height'].first).to eq 333.37976841442287 + end + end +end diff --git a/elasticsearch-api/spec/rest_api/skipped_tests_platinum.yml b/elasticsearch-api/spec/rest_api/skipped_tests_platinum.yml index bc79ecbcaf..4943423364 100644 --- a/elasticsearch-api/spec/rest_api/skipped_tests_platinum.yml +++ b/elasticsearch-api/spec/rest_api/skipped_tests_platinum.yml @@ -105,3 +105,7 @@ - :file: 'api_key/60_admin_user.yml' :description: 'Test query api keys' + +- + :file: 'spatial/70_script_doc_values.yml' + :description: '*'