Skip to content

Commit

Permalink
Complete variations of /{index}/alias/{name} tests, add tests for HEA…
Browse files Browse the repository at this point in the history
…D, bulk, analyzers. (#519)

* Added HEAD / tests.
* Detailed where to start adding tests by using the test coverage report.
* Complete alias tests.
* Added tests for PUT /_bulk and /{index}/_bulk.
* Added tests for /_analyze and /{index}/_analyze.

Signed-off-by: dblock <[email protected]>
  • Loading branch information
dblock authored Aug 21, 2024
1 parent ceefc37 commit 772b1c8
Show file tree
Hide file tree
Showing 13 changed files with 409 additions and 103 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- Added `total_rejections_breakup` to `ShardIndexingPressureStats` ([#483](https://github.com/opensearch-project/opensearch-api-specification/pull/483))
- Added `cancelled_task_percentage` and `current_cancellation_eligible_tasks_count` to `ShardSearchBackpressureTaskCancellationStats` ([#483](https://github.com/opensearch-project/opensearch-api-specification/pull/483))
- Added detailed test coverage report ([#513](https://github.com/opensearch-project/opensearch-api-specification/pull/513))
- Added 404 responses to `/_alias/{name}` and `/{index}/_alias/{name}` ([#519](https://github.com/opensearch-project/opensearch-api-specification/pull/519))

### Changed

Expand Down
8 changes: 7 additions & 1 deletion TESTING_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ docker compose up -d
Run the tests (use `--opensearch-insecure` for a local cluster running in Docker that does not have a valid SSL certificate):
```bash
export OPENSEARCH_PASSWORD=<<your_password>>
npm run test:spec -- --opensearch-insecure
```
Expand All @@ -53,6 +54,11 @@ Verbose output:
npm run test:spec -- --opensearch-insecure --verbose
```
Want to help with some missing tests? Choose from the remaining paths in the test coverage report:
```bash
npm run test:spec -- --opensearch-insecure --coverage-report
```
### Running Spec Tests with Amazon OpenSearch
Use an Amazon OpenSearch service instance.
Expand Down Expand Up @@ -340,7 +346,7 @@ The report is then used by the [test-spec.yml](.github/workflows/test-spec.yml)
### Coverage Report
The test tool can display detailed and hierarchal test coverage with `--coverage-report`. This is useful to identify untested paths. For example, the [put_alias.yaml](tests/default/indices/aliases/put_alias.yaml) test exercises `PUT /_alias/{name}`, but not the other verbs. The report produces the following output with the missing ones.
The test tool can display detailed and hierarchal test coverage with `--coverage-report`. This is useful to identify untested paths. The report produces the following output with the missing ones.
```
/_alias (4)
Expand Down
18 changes: 18 additions & 0 deletions spec/namespaces/indices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ paths:
responses:
'200':
$ref: '#/components/responses/indices.get_alias@200'
'404':
$ref: '#/components/responses/indices.get_alias@404'
put:
operationId: indices.put_alias.0
x-operation-group: indices.put_alias
Expand Down Expand Up @@ -53,6 +55,8 @@ paths:
responses:
'200':
$ref: '#/components/responses/indices.get_alias@200'
'404':
$ref: '#/components/responses/indices.get_alias@404'
head:
operationId: indices.exists_alias.0
x-operation-group: indices.exists_alias
Expand All @@ -69,6 +73,8 @@ paths:
responses:
'200':
$ref: '#/components/responses/indices.exists_alias@200'
'404':
$ref: '#/components/responses/indices.exists_alias@404'
post:
operationId: indices.put_alias.1
x-operation-group: indices.put_alias
Expand Down Expand Up @@ -1055,6 +1061,8 @@ paths:
responses:
'200':
$ref: '#/components/responses/indices.get_alias@200'
'404':
$ref: '#/components/responses/indices.get_alias@404'
put:
operationId: indices.put_alias.5
x-operation-group: indices.put_alias
Expand Down Expand Up @@ -1090,6 +1098,8 @@ paths:
responses:
'200':
$ref: '#/components/responses/indices.get_alias@200'
'404':
$ref: '#/components/responses/indices.get_alias@404'
head:
operationId: indices.exists_alias.1
x-operation-group: indices.exists_alias
Expand All @@ -1107,6 +1117,8 @@ paths:
responses:
'200':
$ref: '#/components/responses/indices.exists_alias@200'
'404':
$ref: '#/components/responses/indices.exists_alias@404'
post:
operationId: indices.put_alias.6
x-operation-group: indices.put_alias
Expand Down Expand Up @@ -2417,6 +2429,9 @@ components:
indices.exists_alias@200:
content:
application/json: {}
indices.exists_alias@404:
content:
application/json: {}
indices.exists_index_template@200:
content:
application/json: {}
Expand Down Expand Up @@ -2455,6 +2470,9 @@ components:
type: object
additionalProperties:
$ref: '../schemas/indices.get_alias.yaml#/components/schemas/IndexAliases'
indices.get_alias@404:
content:
application/json: {}
indices.get_data_stream@200:
content:
application/json:
Expand Down
84 changes: 84 additions & 0 deletions tests/default/_core/alias.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
$schema: ../../../json_schemas/test_story.schema.yaml

description: Test /_alias variants.
epilogues:
- path: /movies/_alias/film*
method: DELETE
status: [200, 404]
- path: /movies
method: DELETE
status: [200, 404]
prologues:
- path: /{index}
method: PUT
parameters:
index: movies
chapters:
- synopsis: Create an alias (index in body).
path: /_alias/{name}
method: PUT
parameters:
name: film1
request:
payload:
index: movies
response:
status: 200
payload:
acknowledged: true
- synopsis: Create an alias (index in body).
path: /_alias/{name}
method: POST
parameters:
name: film2
request:
payload:
index: movies
response:
status: 200
payload:
acknowledged: true
- synopsis: Create an alias (index & alias in body).
path: /_alias
method: PUT
request:
payload:
index: movies
alias: film3
response:
status: 200
payload:
acknowledged: true
- synopsis: Get all aliases.
path: /_alias
method: GET
response:
status: 200
- synopsis: Get an alias by name.
path: /_alias/{name}
parameters:
name: film1
method: GET
response:
status: 200
- synopsis: Get an alias by name.
path: /_alias/{name}
parameters:
name: invalid
method: GET
response:
status: 404
- synopsis: Check that an alias exists.
path: /_alias/{name}
parameters:
name: film1
method: HEAD
response:
status: 200
- synopsis: Check that an alias exists.
path: /_alias/{name}
parameters:
name: invalid
method: HEAD
response:
status: 404
59 changes: 59 additions & 0 deletions tests/default/_core/aliases.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
$schema: ../../../json_schemas/test_story.schema.yaml

description: Test aliases endpoints.
epilogues:
- path: /games/_alias/*
method: DELETE
status: [200, 404]
- path: /games
method: DELETE
status: [200, 404]
prologues:
- path: games
method: PUT
- path: /games/_aliases/jeux
method: PUT
chapters:
- synopsis: Multiple alias operations.
path: /_aliases
method: POST
request:
payload:
actions:
- remove:
index: games
alias: jeux
- add:
index: games
alias: plays1
- add:
index: games
alias: plays2
response:
status: 200
payload:
acknowledged: true
- synopsis: Create an alias.
path: /_aliases/{name}
method: POST
parameters:
name: plays3
request:
payload:
index: games
response:
status: 200
payload:
acknowledged: true
- synopsis: Update an alias.
path: /_aliases/{name}
method: PUT
parameters:
name: plays4
request:
payload:
index: games
response:
status: 200
payload:
acknowledged: true
92 changes: 92 additions & 0 deletions tests/default/_core/analyze.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
$schema: ../../../json_schemas/test_story.schema.yaml

description: Test /_analyze.
epilogues: []
prologues: []
chapters:
- synopsis: Analyze text.
path: /_analyze
method: POST
request:
payload:
analyzer: standard
text: Moneyball, directed by Bennett Miller
response:
status: 200
payload:
tokens:
- token: moneyball
start_offset: 0
end_offset: 9
position: 0
- synopsis: Analyze text as a multi-value field.
path: /_analyze
method: GET
request:
payload:
analyzer: standard
text:
- Drive, directed by Nicolas Winding Refn
- Moneyball, directed by Bennett Miller
response:
status: 200
- synopsis: Apply a filter.
path: /_analyze
method: GET
request:
payload:
tokenizer: keyword
filter:
- uppercase
text: Moneyball
response:
status: 200
payload:
tokens:
- token: MONEYBALL
type: word
start_offset: 0
end_offset: 9
position: 0
- synopsis: Apply a character filter.
path: /_analyze
method: GET
request:
payload:
tokenizer: keyword
filter:
- lowercase
char_filter:
- html_strip
text: <b>Moneyball</b>
response:
status: 200
payload:
tokens:
- token: moneyball
type: word
start_offset: 3
end_offset: 16
position: 0
- synopsis: Combine a lowercase translation with a stop filter.
path: /_analyze
method: GET
request:
payload:
tokenizer: whitespace
filter:
- lowercase
- type: stop
stopwords:
- in
- to
text: Moneyball directed by Bennett Miller
response:
status: 200
payload:
tokens:
- token: moneyball
type: word
start_offset: 0
end_offset: 9
position: 0
17 changes: 17 additions & 0 deletions tests/default/_core/bulk.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,23 @@ chapters:
payload:
- {create: {_index: movies}}
- {director: Bennett Miller, title: Moneyball, year: 2011}
- synopsis: Delete document in an index.
path: /_bulk
method: PUT
request:
content_type: application/x-ndjson
payload:
- {delete: {_index: movies, _id: invalid}}
response:
status: 200
payload:
errors: false
items:
- delete:
_index: movies
_id: invalid
result: not_found
status: 404
- synopsis: Bulk document CRUD.
path: /_bulk
method: POST
Expand Down
5 changes: 5 additions & 0 deletions tests/default/_core/info.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ distributions:
excluded:
- amazon-serverless
chapters:
- synopsis: Head server info.
path: /
method: HEAD
response:
status: 200
- synopsis: Get server info.
path: /
method: GET
Expand Down
Loading

0 comments on commit 772b1c8

Please sign in to comment.