Skip to content

High level REST client XContent tests are misleading #39745

Closed
@jasontedor

Description

@jasontedor

Many high-level REST client XContent tests where we use a dedicated client class (e.g., org.elasticsearch.client.core.AcknowledgeResponse) are misleading and not actually testing what occurs in production.

For example, let us consider the case of org.elasticsearch.core.AcknowledgedResponse for which XContent is tested via org.elasticsearch.client.core.AcknowledgedResponseTests. However, this test does not actually test what occurs in production.

What occurs in production is that a concrete instance of org.elasticsearch.action.support.master.AcknowledgedResponse is serialized to XContent on the REST layer, and then client side is deserialized from XContent by the HLRC. We need confidence that this translation is working.

The test that we have today based on AbstractXContentTestCase#xContentTester does not actually test this. Instead, it creates a concrete instance of org.elasticsearch.client.core.AcknowledgedResponse, converts this to XContent via non-production test code, and then checks that that XContent can be converted back to an instance of org.elasticsearch.client.core.AcknowledgedResponse. This does not give us confidence that the translation between a serialized XContent of org.elasticsearch.action.support.master.AcknowledgedResponse is properly deserialized to an instance of org.elasticsearch.client.core.AcknowledgedResponse in the HLRC. That's the production code path that we want to test.

We probably want a dedicated framework like AbstractXContentTestCase#xContentTester for this. See #39713 comment for the discussion that triggered this issue, and a test that is based on production code rather than non-production code.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions