elastic-enterprise-search 0.3.0 → 7.13.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ci/.gitignore +1 -0
- data/.ci/Dockerfile +12 -0
- data/.ci/certs/README.md +50 -0
- data/.ci/certs/ca.crt +20 -0
- data/.ci/certs/ca.key +27 -0
- data/.ci/certs/testnode.crt +21 -0
- data/.ci/certs/testnode.key +27 -0
- data/.ci/certs/testnode_no_san.crt +19 -0
- data/.ci/certs/testnode_no_san.key +27 -0
- data/.ci/functions/cleanup.sh +67 -0
- data/.ci/functions/imports.sh +59 -0
- data/.ci/functions/wait-for-container.sh +36 -0
- data/.ci/jobs/defaults.yml +69 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+7.10.0.beta.1.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+master.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+pull-request.yml +19 -0
- data/.ci/run-elasticsearch.sh +127 -0
- data/.ci/run-enterprise-search.sh +71 -0
- data/.ci/run-local.sh +14 -0
- data/.ci/run-repository.sh +49 -0
- data/.ci/run-tests +27 -0
- data/.ci/test-matrix.yml +14 -0
- data/.github/workflows/rubocop.yml +15 -0
- data/.github/workflows/testing.yml +40 -0
- data/.gitignore +4 -0
- data/.rubocop.yml +52 -0
- data/CONTRIBUTING.md +43 -0
- data/Gemfile +23 -1
- data/{LICENSE.txt → LICENSE} +33 -32
- data/README.md +27 -147
- data/Rakefile +48 -1
- data/docs/guide/app-search-api.asciidoc +186 -0
- data/docs/guide/connecting.asciidoc +171 -0
- data/docs/guide/development.asciidoc +42 -0
- data/docs/guide/enterprise-search-api.asciidoc +46 -0
- data/docs/guide/index.asciidoc +19 -0
- data/docs/guide/installation.asciidoc +18 -0
- data/docs/guide/overview.asciidoc +59 -0
- data/docs/guide/release_notes/710.asciidoc +4 -0
- data/docs/guide/release_notes/711.asciidoc +27 -0
- data/docs/guide/release_notes/712.asciidoc +16 -0
- data/docs/guide/release_notes/index.asciidoc +14 -0
- data/docs/guide/workplace-search-api.asciidoc +138 -0
- data/elastic-enterprise-search.gemspec +49 -12
- data/lib/elastic-enterprise-search.rb +20 -1
- data/lib/elastic/.rubocop.yml +6 -0
- data/lib/elastic/app-search/api/add_meta_engine_source.rb +51 -0
- data/lib/elastic/app-search/api/api_logs.rb +62 -0
- data/lib/elastic/app-search/api/count_analytics.rb +52 -0
- data/lib/elastic/app-search/api/create_curation.rb +54 -0
- data/lib/elastic/app-search/api/create_engine.rb +53 -0
- data/lib/elastic/app-search/api/create_synonym_set.rb +51 -0
- data/lib/elastic/app-search/api/curation.rb +53 -0
- data/lib/elastic/app-search/api/delete_curation.rb +53 -0
- data/lib/elastic/app-search/api/delete_documents.rb +51 -0
- data/lib/elastic/app-search/api/delete_engine.rb +50 -0
- data/lib/elastic/app-search/api/delete_meta_engine_source.rb +51 -0
- data/lib/elastic/app-search/api/delete_synonym_set.rb +53 -0
- data/lib/elastic/app-search/api/documents.rb +51 -0
- data/lib/elastic/app-search/api/engine.rb +50 -0
- data/lib/elastic/app-search/api/index_documents.rb +51 -0
- data/lib/elastic/app-search/api/list_curations.rb +52 -0
- data/lib/elastic/app-search/api/list_documents.rb +52 -0
- data/lib/elastic/app-search/api/list_engines.rb +49 -0
- data/lib/elastic/app-search/api/list_synonym_sets.rb +52 -0
- data/lib/elastic/app-search/api/log_clickthrough.rb +57 -0
- data/lib/elastic/app-search/api/multi_search.rb +51 -0
- data/lib/elastic/app-search/api/put_curation.rb +57 -0
- data/lib/elastic/app-search/api/put_documents.rb +51 -0
- data/lib/elastic/app-search/api/put_schema.rb +51 -0
- data/lib/elastic/app-search/api/put_search_settings.rb +51 -0
- data/lib/elastic/app-search/api/put_synonym_set.rb +54 -0
- data/lib/elastic/app-search/api/query_suggestion.rb +54 -0
- data/lib/elastic/app-search/api/reset_search_settings.rb +50 -0
- data/lib/elastic/app-search/api/schema.rb +50 -0
- data/lib/elastic/app-search/api/search.rb +50 -0
- data/lib/elastic/app-search/api/search_settings.rb +50 -0
- data/lib/elastic/app-search/api/synonym_set.rb +53 -0
- data/lib/elastic/app-search/api/top_clicks_analytics.rb +54 -0
- data/lib/elastic/app-search/api/top_queries_analytics.rb +53 -0
- data/lib/elastic/app-search/app_search.rb +82 -0
- data/lib/elastic/enterprise-search/api/health.rb +43 -0
- data/lib/elastic/enterprise-search/api/put_read_only.rb +46 -0
- data/lib/elastic/enterprise-search/api/read_only.rb +43 -0
- data/lib/elastic/enterprise-search/api/stats.rb +45 -0
- data/lib/elastic/enterprise-search/api/version.rb +43 -0
- data/lib/elastic/enterprise-search/client.rb +81 -15
- data/lib/elastic/enterprise-search/configuration.rb +32 -16
- data/lib/elastic/enterprise-search/exceptions.rb +19 -0
- data/lib/elastic/enterprise-search/request.rb +62 -80
- data/lib/elastic/enterprise-search/utils.rb +28 -1
- data/lib/elastic/enterprise-search/version.rb +20 -1
- data/lib/elastic/enterprise_search.rb +49 -0
- data/lib/elastic/workplace-search/api/add_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/content_source.rb +49 -0
- data/lib/elastic/workplace-search/api/create_analytics_event.rb +59 -0
- data/lib/elastic/workplace-search/api/create_content_source.rb +52 -0
- data/lib/elastic/workplace-search/api/create_external_identity.rb +53 -0
- data/lib/elastic/workplace-search/api/delete_all_documents.rb +49 -0
- data/lib/elastic/workplace-search/api/delete_content_source.rb +49 -0
- data/lib/elastic/workplace-search/api/delete_documents.rb +51 -0
- data/lib/elastic/workplace-search/api/delete_external_identity.rb +53 -0
- data/lib/elastic/workplace-search/api/document.rb +53 -0
- data/lib/elastic/workplace-search/api/external_identity.rb +53 -0
- data/lib/elastic/workplace-search/api/index_documents.rb +52 -0
- data/lib/elastic/workplace-search/api/list_content_sources.rb +48 -0
- data/lib/elastic/workplace-search/api/list_external_identities.rb +51 -0
- data/lib/elastic/workplace-search/api/list_permissions.rb +51 -0
- data/lib/elastic/workplace-search/api/put_content_source.rb +55 -0
- data/lib/elastic/workplace-search/api/put_external_identity.rb +56 -0
- data/lib/elastic/workplace-search/api/put_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/remove_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/search.rb +60 -0
- data/lib/elastic/workplace-search/api/user_permissions.rb +53 -0
- data/lib/elastic/workplace-search/workplace_search.rb +89 -0
- data/spec/app-search/api_count_analytics_spec.rb +34 -0
- data/spec/app-search/api_curations_spec.rb +97 -0
- data/spec/app-search/api_documents_spec.rb +102 -0
- data/spec/app-search/api_engines_spec.rb +67 -0
- data/spec/app-search/api_log_clickthrough_spec.rb +34 -0
- data/spec/app-search/api_logs_spec.rb +36 -0
- data/spec/app-search/api_meta_engines_spec.rb +72 -0
- data/spec/app-search/api_query_suggestion_spec.rb +39 -0
- data/spec/app-search/api_schema_spec.rb +48 -0
- data/spec/app-search/api_search_and_multi_search_spec.rb +48 -0
- data/spec/app-search/api_search_settings_spec.rb +76 -0
- data/spec/app-search/api_spec_helper.rb +14 -0
- data/spec/app-search/api_synonyms_spec.rb +79 -0
- data/spec/app-search/api_top_clicks_analytics_spec.rb +44 -0
- data/spec/app-search/api_top_queries_analytics_spec.rb +34 -0
- data/spec/app-search/client_spec.rb +88 -0
- data/spec/app-search/date_spec.rb +69 -0
- data/spec/enterprise-search/client_spec.rb +107 -0
- data/spec/enterprise-search/request_spec.rb +136 -0
- data/spec/enterprise-search/utils_spec.rb +46 -0
- data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +109 -0
- data/spec/fixtures/vcr/app_search/api_documents.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_index_documents.yml +57 -0
- data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +54 -0
- data/spec/fixtures/vcr/app_search/api_logs.yml +70 -0
- data/spec/fixtures/vcr/app_search/api_put_schema.yml +109 -0
- data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +59 -0
- data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_schema.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +55 -0
- data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/count_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/create_and_update_document.yml +107 -0
- data/spec/fixtures/vcr/app_search/create_curation.yml +113 -0
- data/spec/fixtures/vcr/app_search/create_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/create_meta_engine.yml +56 -0
- data/spec/fixtures/vcr/app_search/create_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_curation.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/get_curation.yml +56 -0
- data/spec/fixtures/vcr/app_search/get_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +107 -0
- data/spec/fixtures/vcr/app_search/list_curations.yml +56 -0
- data/spec/fixtures/vcr/app_search/list_documents.yml +57 -0
- data/spec/fixtures/vcr/app_search/list_engines.yml +55 -0
- data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +56 -0
- data/spec/fixtures/vcr/app_search/multi_query_search.yml +63 -0
- data/spec/fixtures/vcr/app_search/put_curation.yml +113 -0
- data/spec/fixtures/vcr/app_search/put_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/search.yml +57 -0
- data/spec/fixtures/vcr/app_search/single_query_search.yml +60 -0
- data/spec/fixtures/vcr/app_search/synonym_set.yml +56 -0
- data/spec/fixtures/vcr/workplace_search/create_analytics_event.yml +55 -0
- data/spec/fixtures/vcr/workplace_search/oauth_request_token.yml +57 -0
- data/spec/fixtures/vcr/workplace_search/search_request.yml +60 -0
- data/spec/integration/enterprise_search_api_spec.rb +100 -0
- data/spec/integration/workplace_search_spec.rb +253 -0
- data/spec/spec_helper.rb +27 -14
- data/spec/webmock_requires.rb +4 -0
- data/spec/workplace-search/client_spec.rb +77 -0
- data/spec/workplace-search/create_analytics_event_spec.rb +59 -0
- data/spec/workplace-search/search_spec.rb +53 -0
- metadata +266 -45
- data/.circleci/config.yml +0 -68
- data/.travis.yml +0 -15
- data/NOTICE.txt +0 -3
- data/lib/elastic/enterprise-search.rb +0 -7
- data/lib/elastic/enterprise-search/client/content_source_documents.rb +0 -46
- data/lib/elastic/enterprise-search/client/permissions.rb +0 -30
- data/logo-enterprise-search.png +0 -0
- data/spec/client/content_source_documents_spec.rb +0 -55
- data/spec/client/permissions_spec.rb +0 -75
- data/spec/configuration_spec.rb +0 -19
- data/spec/fixtures/vcr/add_user_permissions.yml +0 -55
- data/spec/fixtures/vcr/async_create_or_update_document_success.yml +0 -51
- data/spec/fixtures/vcr/destroy_documents_success.yml +0 -51
- data/spec/fixtures/vcr/get_user_permissions.yml +0 -55
- data/spec/fixtures/vcr/list_all_permissions.yml +0 -55
- data/spec/fixtures/vcr/list_all_permissions_with_paging.yml +0 -55
- data/spec/fixtures/vcr/remove_user_permissions.yml +0 -55
- data/spec/fixtures/vcr/update_user_permissions.yml +0 -55
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: elastic+enterprise-search-ruby+7.10.0.beta.1
|
4
|
+
display-name: 'elastic / enterprise-search-ruby # 7.10.0.beta.1'
|
5
|
+
description: Testing the enterprise-search-ruby 7.10.0.beta.1 branch.
|
6
|
+
junit_results: "*-junit.xml"
|
7
|
+
parameters:
|
8
|
+
- string:
|
9
|
+
name: branch_specifier
|
10
|
+
default: refs/heads/7.10.0.beta.1
|
11
|
+
description: the Git branch specifier to build (<branchName>, <tagName>,
|
12
|
+
<commitId>, etc.)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: elastic+enterprise-search-ruby+master
|
4
|
+
display-name: 'elastic / enterprise-search-ruby # master'
|
5
|
+
description: Testing the enterprise-search-ruby master branch.
|
6
|
+
junit_results: "*-junit.xml"
|
7
|
+
parameters:
|
8
|
+
- string:
|
9
|
+
name: branch_specifier
|
10
|
+
default: refs/heads/master
|
11
|
+
description: the Git branch specifier to build (<branchName>, <tagName>,
|
12
|
+
<commitId>, etc.)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: elastic+enterprise-search-ruby+pull-request
|
4
|
+
display-name: 'elastic / enterprise-search-ruby # pull-request'
|
5
|
+
description: Testing of enterprise-search-ruby pull requests.
|
6
|
+
junit_results: "*-junit.xml"
|
7
|
+
scm:
|
8
|
+
- git:
|
9
|
+
branches:
|
10
|
+
- ${ghprbActualCommit}
|
11
|
+
refspec: +refs/pull/*:refs/remotes/origin/pr/*
|
12
|
+
triggers:
|
13
|
+
- github-pull-request:
|
14
|
+
org-list:
|
15
|
+
- elastic
|
16
|
+
allow-whitelist-orgs-as-admins: true
|
17
|
+
github-hooks: true
|
18
|
+
status-context: clients-ci
|
19
|
+
cancel-builds-on-update: true
|
@@ -0,0 +1,127 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Launch one or more Elasticsearch nodes via the Docker image,
|
4
|
+
# to form a cluster suitable for running the REST API tests.
|
5
|
+
#
|
6
|
+
# Export the STACK_VERSION variable, eg. '8.0.0-SNAPSHOT'.
|
7
|
+
# Export the TEST_SUITE variable, eg. 'free' or 'platinum' defaults to 'free'.
|
8
|
+
# Export the NUMBER_OF_NODES variable to start more than 1 node
|
9
|
+
|
10
|
+
# Version 1.2.0
|
11
|
+
# - Initial version of the run-elasticsearch.sh script
|
12
|
+
# - Deleting the volume should not dependent on the container still running
|
13
|
+
# - Fixed `ES_JAVA_OPTS` config
|
14
|
+
# - Moved to STACK_VERSION and TEST_VERSION
|
15
|
+
# - Refactored into functions and imports
|
16
|
+
# - Support NUMBER_OF_NODES
|
17
|
+
# - Added 5 retries on docker pull for fixing transient network errors
|
18
|
+
|
19
|
+
script_path=$(dirname $(realpath -s $0))
|
20
|
+
source $script_path/functions/imports.sh
|
21
|
+
set -euo pipefail
|
22
|
+
|
23
|
+
echo -e "\033[34;1mINFO:\033[0m Take down node if called twice with the same arguments (DETACH=true) or on seperate terminals \033[0m"
|
24
|
+
cleanup_node $es_node_name
|
25
|
+
|
26
|
+
master_node_name=${es_node_name}
|
27
|
+
cluster_name=${moniker}${suffix}
|
28
|
+
|
29
|
+
declare -a volumes
|
30
|
+
environment=($(cat <<-END
|
31
|
+
--env node.name=$es_node_name
|
32
|
+
--env cluster.name=$cluster_name
|
33
|
+
--env cluster.initial_master_nodes=$master_node_name
|
34
|
+
--env discovery.seed_hosts=$master_node_name
|
35
|
+
--env cluster.routing.allocation.disk.threshold_enabled=false
|
36
|
+
--env bootstrap.memory_lock=true
|
37
|
+
--env node.attr.testattr=test
|
38
|
+
--env path.repo=/tmp
|
39
|
+
--env repositories.url.allowed_urls=http://snapshot.test*
|
40
|
+
END
|
41
|
+
))
|
42
|
+
if [[ "$TEST_SUITE" == "platinum" ]]; then
|
43
|
+
environment+=($(cat <<-END
|
44
|
+
--env ELASTIC_PASSWORD=$elastic_password
|
45
|
+
--env xpack.license.self_generated.type=trial
|
46
|
+
--env xpack.security.enabled=true
|
47
|
+
--env xpack.security.http.ssl.enabled=true
|
48
|
+
--env xpack.security.http.ssl.verification_mode=certificate
|
49
|
+
--env xpack.security.http.ssl.key=certs/testnode.key
|
50
|
+
--env xpack.security.http.ssl.certificate=certs/testnode.crt
|
51
|
+
--env xpack.security.http.ssl.certificate_authorities=certs/ca.crt
|
52
|
+
--env xpack.security.transport.ssl.enabled=true
|
53
|
+
--env xpack.security.transport.ssl.key=certs/testnode.key
|
54
|
+
--env xpack.security.transport.ssl.certificate=certs/testnode.crt
|
55
|
+
--env xpack.security.transport.ssl.certificate_authorities=certs/ca.crt
|
56
|
+
END
|
57
|
+
))
|
58
|
+
volumes+=($(cat <<-END
|
59
|
+
--volume $ssl_cert:/usr/share/elasticsearch/config/certs/testnode.crt
|
60
|
+
--volume $ssl_key:/usr/share/elasticsearch/config/certs/testnode.key
|
61
|
+
--volume $ssl_ca:/usr/share/elasticsearch/config/certs/ca.crt
|
62
|
+
END
|
63
|
+
))
|
64
|
+
fi
|
65
|
+
|
66
|
+
cert_validation_flags=""
|
67
|
+
if [[ "$TEST_SUITE" == "platinum" ]]; then
|
68
|
+
cert_validation_flags="--insecure --cacert /usr/share/elasticsearch/config/certs/ca.crt --resolve ${es_node_name}:443:127.0.0.1"
|
69
|
+
fi
|
70
|
+
|
71
|
+
# Pull the container, retry on failures up to 5 times with
|
72
|
+
# short delays between each attempt. Fixes most transient network errors.
|
73
|
+
docker_pull_attempts=0
|
74
|
+
until [ "$docker_pull_attempts" -ge 5 ]
|
75
|
+
do
|
76
|
+
docker pull docker.elastic.co/elasticsearch/"$elasticsearch_container" && break
|
77
|
+
docker_pull_attempts=$((docker_pull_attempts+1))
|
78
|
+
echo "Failed to pull image, retrying in 10 seconds (retry $docker_pull_attempts/5)..."
|
79
|
+
sleep 10
|
80
|
+
done
|
81
|
+
|
82
|
+
NUMBER_OF_NODES=${NUMBER_OF_NODES-1}
|
83
|
+
http_port=9200
|
84
|
+
for (( i=0; i<$NUMBER_OF_NODES; i++, http_port++ )); do
|
85
|
+
node_name=${es_node_name}$i
|
86
|
+
node_url=${external_elasticsearch_url/9200/${http_port}}$i
|
87
|
+
if [[ "$i" == "0" ]]; then node_name=$es_node_name; fi
|
88
|
+
environment+=($(cat <<-END
|
89
|
+
--env node.name=$node_name
|
90
|
+
END
|
91
|
+
))
|
92
|
+
echo "$i: $http_port $node_url "
|
93
|
+
volume_name=${node_name}-${suffix}-data
|
94
|
+
volumes+=($(cat <<-END
|
95
|
+
--volume $volume_name:/usr/share/elasticsearch/data${i}
|
96
|
+
END
|
97
|
+
))
|
98
|
+
|
99
|
+
# make sure we detach for all but the last node if DETACH=false (default) so all nodes are started
|
100
|
+
local_detach="true"
|
101
|
+
if [[ "$i" == "$((NUMBER_OF_NODES-1))" ]]; then local_detach=$DETACH; fi
|
102
|
+
echo -e "\033[34;1mINFO:\033[0m Starting container $node_name \033[0m"
|
103
|
+
set -x
|
104
|
+
docker run \
|
105
|
+
--name "$node_name" \
|
106
|
+
--network "$network_name" \
|
107
|
+
--env "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
|
108
|
+
"${environment[@]}" \
|
109
|
+
"${volumes[@]}" \
|
110
|
+
--publish "$http_port":9200 \
|
111
|
+
--ulimit nofile=65536:65536 \
|
112
|
+
--ulimit memlock=-1:-1 \
|
113
|
+
--detach="$local_detach" \
|
114
|
+
--health-cmd="curl $cert_validation_flags --fail $elasticsearch_url/_cluster/health || exit 1" \
|
115
|
+
--health-interval=2s \
|
116
|
+
--health-retries=20 \
|
117
|
+
--health-timeout=2s \
|
118
|
+
--rm \
|
119
|
+
docker.elastic.co/elasticsearch/"$elasticsearch_container";
|
120
|
+
|
121
|
+
set +x
|
122
|
+
if wait_for_container "$es_node_name" "$network_name"; then
|
123
|
+
echo -e "\033[32;1mSUCCESS:\033[0m Running on: $node_url\033[0m"
|
124
|
+
fi
|
125
|
+
|
126
|
+
done
|
127
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Launch one App Search node via the Docker image,
|
4
|
+
# to form a cluster suitable for running the REST API tests.
|
5
|
+
#
|
6
|
+
# Export the STACK_VERSION variable, eg. '8.0.0-SNAPSHOT'.
|
7
|
+
|
8
|
+
# Version 1.1.0
|
9
|
+
# - Initial version of the run-app-search.sh script
|
10
|
+
# - Refactored .ci version
|
11
|
+
|
12
|
+
script_path=$(dirname $(realpath -s $0))
|
13
|
+
source $script_path/functions/imports.sh
|
14
|
+
set -euo pipefail
|
15
|
+
|
16
|
+
CONTAINER_NAME=${CONTAINER_NAME-enterprise-search}
|
17
|
+
APP_SEARCH_SECRET_SESSION_KEY=${APP_SEARCH_SECRET_SESSION_KEY-int_test_secret}
|
18
|
+
|
19
|
+
echo -e "\033[34;1mINFO:\033[0m Take down node if called twice with the same arguments (DETACH=true) or on seperate terminals \033[0m"
|
20
|
+
cleanup_node $CONTAINER_NAME
|
21
|
+
|
22
|
+
http_port=3002
|
23
|
+
url=http://127.0.0.1:${http_port}
|
24
|
+
|
25
|
+
# Pull the container, retry on failures up to 5 times with
|
26
|
+
# short delays between each attempt. Fixes most transient network errors.
|
27
|
+
docker_pull_attempts=0
|
28
|
+
until [ "$docker_pull_attempts" -ge 5 ]
|
29
|
+
do
|
30
|
+
docker pull docker.elastic.co/enterprise-search/enterprise-search:"$STACK_VERSION" && break
|
31
|
+
docker_pull_attempts=$((docker_pull_attempts+1))
|
32
|
+
echo "Failed to pull image, retrying in 10 seconds (retry $docker_pull_attempts/5)..."
|
33
|
+
sleep 10
|
34
|
+
done
|
35
|
+
|
36
|
+
echo -e "\033[34;1mINFO:\033[0m Starting container $CONTAINER_NAME \033[0m"
|
37
|
+
set -x
|
38
|
+
docker run \
|
39
|
+
--name "$CONTAINER_NAME" \
|
40
|
+
--network "$network_name" \
|
41
|
+
--env "elasticsearch.host=$elasticsearch_url" \
|
42
|
+
--env "elasticsearch.username=elastic" \
|
43
|
+
--env "elasticsearch.password=$elastic_password" \
|
44
|
+
--env "ENT_SEARCH_DEFAULT_PASSWORD=$elastic_password" \
|
45
|
+
--env "secret_management.encryption_keys=[$APP_SEARCH_SECRET_SESSION_KEY]" \
|
46
|
+
--env "enterprise_search.listen_port=$http_port" \
|
47
|
+
--env "log_level=info" \
|
48
|
+
--env "hide_version_info=false" \
|
49
|
+
--env "worker.threads=2" \
|
50
|
+
--env "allow_es_settings_modification=true" \
|
51
|
+
--env "JAVA_OPTS=-Xms1g -Xmx2g" \
|
52
|
+
--env "elasticsearch.ssl.enabled=true" \
|
53
|
+
--env "elasticsearch.ssl.verify=true" \
|
54
|
+
--env "elasticsearch.ssl.certificate=/usr/share/app-search/config/certs/testnode.crt" \
|
55
|
+
--env "elasticsearch.ssl.certificate_authority=/usr/share/app-search/config/certs/ca.crt" \
|
56
|
+
--env "elasticsearch.ssl.key=/usr/share/app-search/config/certs/testnode.key" \
|
57
|
+
--volume $ssl_cert:/usr/share/app-search/config/certs/testnode.crt \
|
58
|
+
--volume $ssl_key:/usr/share/app-search/config/certs/testnode.key \
|
59
|
+
--volume $ssl_ca:/usr/share/app-search/config/certs/ca.crt \
|
60
|
+
--publish "$http_port":3002 \
|
61
|
+
--detach="$DETACH" \
|
62
|
+
--health-cmd="curl --insecure --fail ${url} || exit 1" \
|
63
|
+
--health-interval=30s \
|
64
|
+
--health-retries=50 \
|
65
|
+
--health-timeout=10s \
|
66
|
+
--rm \
|
67
|
+
docker.elastic.co/enterprise-search/enterprise-search:"$STACK_VERSION";
|
68
|
+
|
69
|
+
if wait_for_container "$CONTAINER_NAME" "$network_name"; then
|
70
|
+
echo -e "\033[32;1mSUCCESS:\033[0m Running on: ${url}\033[0m"
|
71
|
+
fi
|
data/.ci/run-local.sh
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
export TEST_SUITE=platinum
|
4
|
+
export CONTAINER_NAME=enterprise-search
|
5
|
+
|
6
|
+
script_path=$(dirname $(realpath -s $0))
|
7
|
+
source $script_path/functions/imports.sh
|
8
|
+
set -euo pipefail
|
9
|
+
|
10
|
+
echo -e "\033[1m>>>>> Start [$STACK_VERSION container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
|
11
|
+
DETACH=true bash .ci/run-elasticsearch.sh
|
12
|
+
|
13
|
+
echo -e "\033[1m>>>>> Running run-enterprise-search.sh >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
|
14
|
+
bash .ci/run-enterprise-search.sh
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Called by entry point `run-test` use this script to add your repository specific test commands
|
4
|
+
#
|
5
|
+
# Once called Elasticsearch is up and running
|
6
|
+
#
|
7
|
+
# Its recommended to call `imports.sh` as defined here so that you get access to all variables defined there
|
8
|
+
#
|
9
|
+
# Any parameters that test-matrix.yml defines should be declared here with appropiate defaults
|
10
|
+
|
11
|
+
script_path=$(dirname $(realpath -s $0))
|
12
|
+
source $script_path/functions/imports.sh
|
13
|
+
set -euo pipefail
|
14
|
+
|
15
|
+
echo -e "\033[34;1mINFO:\033[0m VERSION: ${STACK_VERSION}\033[0m"
|
16
|
+
echo -e "\033[34;1mINFO:\033[0m TEST_SUITE: ${TEST_SUITE}\033[0m"
|
17
|
+
echo -e "\033[34;1mINFO:\033[0m RUBY_VERSION: ${RUBY_VERSION}\033[0m"
|
18
|
+
echo -e "\033[34;1mINFO:\033[0m RUNSCRIPTS: ${RUNSCRIPTS}\033[0m"
|
19
|
+
echo -e "\033[34;1mINFO:\033[0m URL: ${elasticsearch_url}\033[0m"
|
20
|
+
|
21
|
+
echo -e "\033[34;1mINFO:\033[0m pinging Elasticsearch ..\033[0m"
|
22
|
+
curl --insecure --fail $external_elasticsearch_url/_cluster/health?pretty
|
23
|
+
|
24
|
+
if [[ "$RUNSCRIPTS" = *"enterprise-search"* ]]; then
|
25
|
+
enterprise_search_url="http://localhost:3002"
|
26
|
+
echo -e "\033[34;1mINFO:\033[0m pinging Enterprise Search ..\033[0m"
|
27
|
+
curl -I --fail $enterprise_search_url
|
28
|
+
fi
|
29
|
+
|
30
|
+
echo -e "\033[32;1mSUCCESS:\033[0m successfully started the ${STACK_VERSION} stack.\033[0m"
|
31
|
+
|
32
|
+
echo -e "\033[32;1mBUILD: \033[31mRuby \e[0m container.\033[0m"
|
33
|
+
|
34
|
+
docker build \
|
35
|
+
--file .ci/Dockerfile \
|
36
|
+
--tag elastic/enterprise-search-ruby \
|
37
|
+
--build-arg RUBY_VERSION=${RUBY_VERSION} \
|
38
|
+
.
|
39
|
+
|
40
|
+
echo -e "\033[32;1mRUN: \033[31mRuby \e[0m container.\033[0m"
|
41
|
+
|
42
|
+
docker run \
|
43
|
+
--network ${network_name} \
|
44
|
+
--name enterprise-search-ruby \
|
45
|
+
--env "ELASTIC_ENTERPRISE_HOST=http://${CONTAINER_NAME}:3002" \
|
46
|
+
--rm \
|
47
|
+
--volume `pwd`:/code/enterprise-search-ruby \
|
48
|
+
elastic/enterprise-search-ruby \
|
49
|
+
rake spec:integration
|
data/.ci/run-tests
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Version 1.1
|
4
|
+
# - Moved to .ci folder and seperated out `run-repository.sh`
|
5
|
+
# - Add `$RUNSCRIPTS` env var for running Elasticsearch dependent products
|
6
|
+
export TEST_SUITE=platinum
|
7
|
+
export CONTAINER_NAME=enterprise-search
|
8
|
+
export RUNSCRIPTS=enterprise-search
|
9
|
+
|
10
|
+
script_path=$(dirname $(realpath -s $0))
|
11
|
+
source $script_path/functions/imports.sh
|
12
|
+
set -euo pipefail
|
13
|
+
|
14
|
+
echo -e "\033[1m>>>>> Start [$STACK_VERSION container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
|
15
|
+
DETACH=true bash .ci/run-elasticsearch.sh
|
16
|
+
|
17
|
+
if [[ -n "$RUNSCRIPTS" ]]; then
|
18
|
+
for RUNSCRIPT in ${RUNSCRIPTS//,/ } ; do
|
19
|
+
echo -e "\033[1m>>>>> Running run-$RUNSCRIPT.sh >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
|
20
|
+
CONTAINER_NAME=${RUNSCRIPT} \
|
21
|
+
DETACH=true \
|
22
|
+
bash .ci/run-${RUNSCRIPT}.sh
|
23
|
+
done
|
24
|
+
fi
|
25
|
+
|
26
|
+
echo -e "\033[1m>>>>> Repository specific tests >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
|
27
|
+
bash .ci/run-repository.sh
|
data/.ci/test-matrix.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
name: rubocop
|
2
|
+
on: [push, pull_request]
|
3
|
+
|
4
|
+
jobs:
|
5
|
+
rubocop:
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
steps:
|
8
|
+
- uses: actions/checkout@v2
|
9
|
+
- uses: ruby/setup-ruby@v1
|
10
|
+
with:
|
11
|
+
ruby-version: 2.7
|
12
|
+
- name: Run Rubocop
|
13
|
+
run: |
|
14
|
+
bundle install
|
15
|
+
bundle exec rubocop
|
@@ -0,0 +1,40 @@
|
|
1
|
+
name: master
|
2
|
+
on: [push, pull_request]
|
3
|
+
|
4
|
+
jobs:
|
5
|
+
test-ruby:
|
6
|
+
env:
|
7
|
+
ENDPOINT: http://localhost:8080
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby: [ 2.5, 2.6, 2.7, 3.0 ]
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v2
|
15
|
+
- uses: ruby/setup-ruby@v1
|
16
|
+
with:
|
17
|
+
ruby-version: ${{ matrix.ruby }}
|
18
|
+
- name: Build and test with Rake
|
19
|
+
run: |
|
20
|
+
ruby -v
|
21
|
+
bundle install
|
22
|
+
bundle exec rake spec:client
|
23
|
+
test-jruby:
|
24
|
+
env:
|
25
|
+
ENDPOINT: http://localhost:3002/api/ws/v1
|
26
|
+
strategy:
|
27
|
+
fail-fast: false
|
28
|
+
matrix:
|
29
|
+
ruby: [ jruby-9.2 ]
|
30
|
+
runs-on: ubuntu-latest
|
31
|
+
steps:
|
32
|
+
- uses: actions/checkout@v2
|
33
|
+
- uses: ruby/setup-ruby@v1
|
34
|
+
with:
|
35
|
+
ruby-version: ${{ matrix.ruby }}
|
36
|
+
- name: Build and test with Rake
|
37
|
+
run: |
|
38
|
+
ruby -v
|
39
|
+
bundle install
|
40
|
+
bundle exec rake spec:client
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.5
|
3
|
+
Layout/EndAlignment:
|
4
|
+
AutoCorrect: true
|
5
|
+
Style/StringLiterals:
|
6
|
+
EnforcedStyle: single_quotes
|
7
|
+
Layout/LineLength:
|
8
|
+
Max: 120
|
9
|
+
Style/SymbolArray:
|
10
|
+
EnforcedStyle: brackets
|
11
|
+
Style/WordArray:
|
12
|
+
EnforcedStyle: brackets
|
13
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
14
|
+
Enabled: true
|
15
|
+
Layout/SpaceAroundMethodCallOperator:
|
16
|
+
Enabled: true
|
17
|
+
Lint/DeprecatedOpenSSLConstant:
|
18
|
+
Enabled: true
|
19
|
+
Lint/MixedRegexpCaptureTypes:
|
20
|
+
Enabled: true
|
21
|
+
Lint/RaiseException:
|
22
|
+
Enabled: true
|
23
|
+
Lint/StructNewOverride:
|
24
|
+
Enabled: true
|
25
|
+
Naming/FileName:
|
26
|
+
Enabled: false
|
27
|
+
Style/ExponentialNotation:
|
28
|
+
Enabled: true
|
29
|
+
Style/HashEachMethods:
|
30
|
+
Enabled: true
|
31
|
+
Style/HashTransformKeys:
|
32
|
+
Enabled: true
|
33
|
+
Style/HashTransformValues:
|
34
|
+
Enabled: true
|
35
|
+
Style/RedundantFetchBlock:
|
36
|
+
Enabled: true
|
37
|
+
Style/RedundantRegexpCharacterClass:
|
38
|
+
Enabled: true
|
39
|
+
Style/RedundantRegexpEscape:
|
40
|
+
Enabled: true
|
41
|
+
Style/SlicingWithRange:
|
42
|
+
Enabled: true
|
43
|
+
Metrics/BlockLength:
|
44
|
+
Exclude:
|
45
|
+
- 'spec/**/*'
|
46
|
+
Metrics/MethodLength:
|
47
|
+
Max: 15
|
48
|
+
Metrics/AbcSize:
|
49
|
+
Max: 20
|
50
|
+
Style/RegexpLiteral:
|
51
|
+
EnforcedStyle: mixed
|
52
|
+
AllowInnerSlashes: true
|