This is an automated email from the ASF dual-hosted git repository.
apkhmv pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new d8fb1f4d0b IGNITE-23101 CLI should show HOCON representation of the
config (#4309)
d8fb1f4d0b is described below
commit d8fb1f4d0b6a631c4cd47394cdb16705724f5af9
Author: Vadim Pakhnushev <[email protected]>
AuthorDate: Fri Aug 30 16:45:35 2024 +0300
IGNITE-23101 CLI should show HOCON representation of the config (#4309)
---
.../commands/configuration/ItConfigCommandTest.java | 20 +++++++++++++++-----
.../treesitter/highlighter/JsonAnsiHighlighter.java | 1 +
.../internal/cli/decorators/JsonDecorator.java | 18 +++++++++++-------
.../commands/cluster/config/ClusterConfigTest.java | 12 ++++--------
.../cli/commands/node/config/NodeConfigTest.java | 12 ++++--------
5 files changed, 35 insertions(+), 28 deletions(-)
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
index d929343761..55968ff901 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/commands/configuration/ItConfigCommandTest.java
@@ -62,7 +62,7 @@ class ItConfigCommandTest extends CliIntegrationTest {
assertAll(
this::assertExitCodeIsZero,
this::assertErrOutputIsEmpty,
- () -> assertOutputContains("\"idleSyncTimeInterval\" : 1000")
+ () -> assertOutputContains("idleSyncTimeInterval=1000")
);
}
@@ -87,7 +87,9 @@ class ItConfigCommandTest extends CliIntegrationTest {
assertAll(
this::assertExitCodeIsZero,
this::assertErrOutputIsEmpty,
- () -> assertOutputContains("\"netClusterNodes\" : [
\"localhost:3344\", \"localhost:3345\" ]")
+ () -> assertOutputContains("netClusterNodes=[\n"),
+ () -> assertOutputContains("\"localhost:3344\",\n"),
+ () -> assertOutputContains("\"localhost:3345\"\n")
);
}
@@ -111,7 +113,7 @@ class ItConfigCommandTest extends CliIntegrationTest {
assertAll(
this::assertExitCodeIsZero,
this::assertErrOutputIsEmpty,
- () -> assertOutputContains("\"idleSyncTimeInterval\" : 2000")
+ () -> assertOutputContains("idleSyncTimeInterval=2000")
);
}
@@ -218,12 +220,20 @@ class ItConfigCommandTest extends CliIntegrationTest {
@Test
public void partialGet() {
+ execute("node", "config", "show", "--url", NODE_URL);
+ assertAll(
+ this::assertExitCodeIsZero,
+ this::assertErrOutputIsEmpty,
+ () -> assertOutputContains("inbound {"),
+ () -> assertOutputContains("clientConnector {")
+ );
+
execute("node", "config", "show", "--url", NODE_URL, "ignite.network");
assertAll(
this::assertExitCodeIsZero,
this::assertErrOutputIsEmpty,
- () -> assertOutputContains("\"inbound\""),
- () -> assertOutputDoesNotContain("\"node\"")
+ () -> assertOutputContains("inbound {"),
+ () -> assertOutputDoesNotContain("clientConnector {")
);
}
}
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
index d9ad073c09..f22d834d88 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/commands/treesitter/highlighter/JsonAnsiHighlighter.java
@@ -50,6 +50,7 @@ public class JsonAnsiHighlighter {
* @return The highlighted JSON text.
*/
public static String highlight(String text) {
+ // TODO Use tree-sitter-hocon parser here IGNITE-23108
var tree = Parser.parseJson(text);
JsonTokenType[] tokens = Indexer.indexJson(text, tree);
var sb = new StringBuilder();
diff --git
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
index 65c96f8766..57e7567000 100644
---
a/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
+++
b/modules/cli/src/main/java/org/apache/ignite/internal/cli/decorators/JsonDecorator.java
@@ -17,9 +17,10 @@
package org.apache.ignite.internal.cli.decorators;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigException;
+import com.typesafe.config.ConfigFactory;
+import com.typesafe.config.ConfigRenderOptions;
import org.apache.ignite.internal.cli.call.configuration.JsonString;
import
org.apache.ignite.internal.cli.commands.treesitter.highlighter.JsonAnsiHighlighter;
import org.apache.ignite.internal.cli.core.decorator.Decorator;
@@ -39,15 +40,18 @@ public class JsonDecorator implements Decorator<JsonString,
TerminalOutput> {
/** {@inheritDoc} */
@Override
public TerminalOutput decorate(JsonString json) {
- ObjectMapper mapper = new ObjectMapper();
return () -> {
try {
- String text = mapper.writerWithDefaultPrettyPrinter()
- .writeValueAsString(mapper.readValue(json.getValue(),
JsonNode.class));
+ Config config = ConfigFactory.parseString(json.getValue());
+ String text =
config.root().render(ConfigRenderOptions.concise().setFormatted(true).setJson(false));
+ if (text.endsWith("\n")) {
+ // Config renders with the trailing line separator, but we
also add a separator in the handleResult.
+ text = text.substring(0, text.length() - 1);
+ }
return highlight ? JsonAnsiHighlighter.highlight(text) : text;
- } catch (JsonProcessingException e) {
+ } catch (ConfigException.Parse e) {
return json.getValue(); // no-op
}
};
diff --git
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
index 74febcefba..21b9abfd96 100644
---
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
+++
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/cluster/config/ClusterConfigTest.java
@@ -39,10 +39,8 @@ class ClusterConfigTest extends IgniteCliInterfaceTestBase {
execute("cluster config show --url " + mockUrl);
- assertSuccessfulOutputIs("{\n"
- + " \"autoAdjust\" : {\n"
- + " \"enabled\" : true\n"
- + " }\n"
+ assertSuccessfulOutputIs("autoAdjust {\n"
+ + " enabled=true\n"
+ "}\n");
}
@@ -58,10 +56,8 @@ class ClusterConfigTest extends IgniteCliInterfaceTestBase {
execute("cluster config show --url " + mockUrl + " local.baseline");
- assertSuccessfulOutputIs("{\n"
- + " \"autoAdjust\" : {\n"
- + " \"enabled\" : true\n"
- + " }\n"
+ assertSuccessfulOutputIs("autoAdjust {\n"
+ + " enabled=true\n"
+ "}\n");
}
diff --git
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
index 9ba546a388..0ff8246b67 100644
---
a/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
+++
b/modules/cli/src/test/java/org/apache/ignite/internal/cli/commands/node/config/NodeConfigTest.java
@@ -39,10 +39,8 @@ public class NodeConfigTest extends
IgniteCliInterfaceTestBase {
execute("node config show --url " + mockUrl);
- assertSuccessfulOutputIs("{\n"
- + " \"autoAdjust\" : {\n"
- + " \"enabled\" : true\n"
- + " }\n"
+ assertSuccessfulOutputIs("autoAdjust {\n"
+ + " enabled=true\n"
+ "}\n");
}
@@ -58,10 +56,8 @@ public class NodeConfigTest extends
IgniteCliInterfaceTestBase {
execute("node config show --url " + mockUrl + " local.baseline");
- assertSuccessfulOutputIs("{\n"
- + " \"autoAdjust\" : {\n"
- + " \"enabled\" : true\n"
- + " }\n"
+ assertSuccessfulOutputIs("autoAdjust {\n"
+ + " enabled=true\n"
+ "}\n");
}