Skip to content

Commit

Permalink
Fix PluginInfo bwc for opensearch_version field (opensearch-project#1…
Browse files Browse the repository at this point in the history
…2543)

* Fix PluginInfo bwc for opensearch_version field

Signed-off-by: Abhilasha Seth <[email protected]>

* Update how empty range list is handled

Signed-off-by: Abhilasha Seth <[email protected]>

---------

Signed-off-by: Abhilasha Seth <[email protected]>
  • Loading branch information
abseth-amzn authored Mar 12, 2024
1 parent 07e79e3 commit a702f6a
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
4 changes: 2 additions & 2 deletions server/src/main/java/org/opensearch/plugins/PluginInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ public List<SemverRange> getOpenSearchVersionRanges() {
*/
public String getOpenSearchVersionRangesString() {
if (opensearchVersionRanges == null || opensearchVersionRanges.isEmpty()) {
return "";
throw new IllegalStateException("Opensearch version ranges list cannot be empty");
}
if (opensearchVersionRanges.size() == 1) {
return opensearchVersionRanges.get(0).toString();
Expand Down Expand Up @@ -486,7 +486,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
{
builder.field("name", name);
builder.field("version", version);
builder.field("opensearch_version", opensearchVersionRanges);
builder.field("opensearch_version", getOpenSearchVersionRangesString());
builder.field("java_version", javaVersion);
builder.field("description", description);
builder.field("classname", classname);
Expand Down
28 changes: 28 additions & 0 deletions server/src/test/java/org/opensearch/plugins/PluginInfoTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@
import org.opensearch.Version;
import org.opensearch.action.admin.cluster.node.info.PluginsAndModules;
import org.opensearch.common.io.stream.BytesStreamOutput;
import org.opensearch.common.xcontent.json.JsonXContent;
import org.opensearch.core.common.io.stream.ByteBufferStreamInput;
import org.opensearch.core.xcontent.ToXContent;
import org.opensearch.core.xcontent.XContentBuilder;
import org.opensearch.semver.SemverRange;
import org.opensearch.test.OpenSearchTestCase;

Expand Down Expand Up @@ -367,6 +370,31 @@ public void testSerialize() throws Exception {
assertThat(info2.toString(), equalTo(info.toString()));
}

public void testToXContent() throws Exception {
PluginInfo info = new PluginInfo(
"fake",
"foo",
"dummy",
Version.CURRENT,
"1.8",
"dummyClass",
"folder",
Collections.emptyList(),
false
);
XContentBuilder builder = JsonXContent.contentBuilder().prettyPrint();
String prettyPrint = info.toXContent(builder, ToXContent.EMPTY_PARAMS).prettyPrint().toString();
assertTrue(prettyPrint.contains("\"name\" : \"fake\""));
assertTrue(prettyPrint.contains("\"version\" : \"dummy\""));
assertTrue(prettyPrint.contains("\"opensearch_version\" : \"" + Version.CURRENT));
assertTrue(prettyPrint.contains("\"java_version\" : \"1.8\""));
assertTrue(prettyPrint.contains("\"description\" : \"foo\""));
assertTrue(prettyPrint.contains("\"classname\" : \"dummyClass\""));
assertTrue(prettyPrint.contains("\"custom_foldername\" : \"folder\""));
assertTrue(prettyPrint.contains("\"extended_plugins\" : [ ]"));
assertTrue(prettyPrint.contains("\"has_native_controller\" : false"));
}

public void testPluginListSorted() {
List<PluginInfo> plugins = new ArrayList<>();
plugins.add(new PluginInfo("c", "foo", "dummy", Version.CURRENT, "1.8", "dummyclass", Collections.emptyList(), randomBoolean()));
Expand Down

0 comments on commit a702f6a

Please sign in to comment.