You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ed...@apache.org on 2021/03/30 00:04:02 UTC
[cassandra] branch trunk updated: Do not reassign System.out and
System.err when running nodetool authored by Alexandre Dutra;
reviewed by Yifan Cai and Ekaterina Dimitrova for CASSANDRA-16533
This is an automated email from the ASF dual-hosted git repository.
edimitrova pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/trunk by this push:
new efa25fc Do not reassign System.out and System.err when running nodetool authored by Alexandre Dutra; reviewed by Yifan Cai and Ekaterina Dimitrova for CASSANDRA-16533
efa25fc is described below
commit efa25fc8d10bbfcefe14fc6f2a623b6a8b73b5cd
Author: Alexandre Dutra <ad...@users.noreply.github.com>
AuthorDate: Fri Mar 26 19:14:39 2021 +0100
Do not reassign System.out and System.err when running nodetool
authored by Alexandre Dutra; reviewed by Yifan Cai and Ekaterina Dimitrova for CASSANDRA-16533
---
.../shared/NodeToolResultWithOutput.java | 50 ---------------
.../test/AbstractNetstatsStreaming.java | 29 +++++----
.../cassandra/distributed/util/NodetoolUtils.java | 71 ----------------------
3 files changed, 14 insertions(+), 136 deletions(-)
diff --git a/test/distributed/org/apache/cassandra/distributed/shared/NodeToolResultWithOutput.java b/test/distributed/org/apache/cassandra/distributed/shared/NodeToolResultWithOutput.java
deleted file mode 100644
index 9cefd4d..0000000
--- a/test/distributed/org/apache/cassandra/distributed/shared/NodeToolResultWithOutput.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.cassandra.distributed.shared;
-
-import java.io.ByteArrayOutputStream;
-
-import org.apache.cassandra.distributed.api.NodeToolResult;
-
-// Perfer the NodeToolResult that includes output since version 0.0.5
-// CASSANDRA-16057
-public class NodeToolResultWithOutput
-{
- private final NodeToolResult result;
- private final ByteArrayOutputStream stdout;
- private final ByteArrayOutputStream stderr;
-
- public NodeToolResultWithOutput(NodeToolResult result, ByteArrayOutputStream stdout, ByteArrayOutputStream stderr) {
- this.result = result;
- this.stdout = stdout;
- this.stderr = stderr;
- }
-
- public NodeToolResult getResult() {
- return this.result;
- }
-
- public String getStdout() {
- return this.stdout.toString();
- }
-
- public String getStderr() {
- return this.stderr.toString();
- }
-}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/AbstractNetstatsStreaming.java b/test/distributed/org/apache/cassandra/distributed/test/AbstractNetstatsStreaming.java
index 85e3e23..2e828e0 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/AbstractNetstatsStreaming.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/AbstractNetstatsStreaming.java
@@ -40,8 +40,7 @@ import org.slf4j.LoggerFactory;
import com.datastax.driver.core.Session;
import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.IInvokableInstance;
-import org.apache.cassandra.distributed.shared.NodeToolResultWithOutput;
-import org.apache.cassandra.distributed.util.NodetoolUtils;
+import org.apache.cassandra.distributed.api.NodeToolResult;
import org.apache.cassandra.utils.Pair;
import static java.util.stream.Collectors.toList;
@@ -112,7 +111,7 @@ public abstract class AbstractNetstatsStreaming extends TestBaseImpl
for (int i = 0; i < records; i++)
{
- s.execute("INSERT INTO test_table (id) VALUES (" + UUID.randomUUID() + ")");
+ s.execute("INSERT INTO test_table (id) VALUES (" + UUID.randomUUID() + ')');
}
}
}
@@ -124,7 +123,7 @@ public abstract class AbstractNetstatsStreaming extends TestBaseImpl
final Set<String> outputs = new LinkedHashSet<>();
results.netstatOutputs.stream()
- .map(NodeToolResultWithOutput::getStdout)
+ .map(NodeToolResult::getStdout)
.filter(output -> !output.contains("Not sending any streams"))
.filter(output -> output.contains("Receiving") || output.contains("Sending"))
.forEach(outputs::add);
@@ -201,8 +200,8 @@ public abstract class AbstractNetstatsStreaming extends TestBaseImpl
{
if (sending.sendingHeader != null)
{
- Assert.assertEquals(sending.sendingHeader.bytesTotalSoFar, (long) sending.sendingSSTable.stream().map(table -> table.bytesSent).reduce(Long::sum).orElseGet(() -> 0L));
- Assert.assertTrue(sending.sendingHeader.bytesTotal >= sending.sendingSSTable.stream().map(table -> table.bytesInTotal).reduce(Long::sum).orElseGet(() -> 0L));
+ Assert.assertEquals(sending.sendingHeader.bytesTotalSoFar, (long) sending.sendingSSTable.stream().map(table -> table.bytesSent).reduce(Long::sum).orElse(0L));
+ Assert.assertTrue(sending.sendingHeader.bytesTotal >= sending.sendingSSTable.stream().map(table -> table.bytesInTotal).reduce(Long::sum).orElse(0L));
if (sending.sendingHeader.bytesTotalSoFar != 0)
{
@@ -478,18 +477,18 @@ public abstract class AbstractNetstatsStreaming extends TestBaseImpl
protected static final class NetstatResults
{
- private final List<NodeToolResultWithOutput> netstatOutputs = new ArrayList<>();
+ private final List<NodeToolResult> netstatOutputs = new ArrayList<>();
- public void add(NodeToolResultWithOutput result)
+ public void add(NodeToolResult result)
{
netstatOutputs.add(result);
}
public void assertSuccessful()
{
- for (final NodeToolResultWithOutput result : netstatOutputs)
+ for (final NodeToolResult result : netstatOutputs)
{
- Assert.assertEquals(result.getResult().getRc(), 0);
+ Assert.assertEquals(result.getRc(), 0);
Assert.assertTrue(result.getStderr().isEmpty());
}
}
@@ -514,9 +513,9 @@ public abstract class AbstractNetstatsStreaming extends TestBaseImpl
{
try
{
- final NodeToolResultWithOutput result = NodetoolUtils.nodetool(node, false, "netstats");
+ final NodeToolResult result = node.nodetoolResult(false, "netstats");
- logger.info(node.broadcastAddress().toString() + " " + result.getStdout());
+ logger.info(node.broadcastAddress().toString() + ' ' + result.getStdout());
if (!sawAnyStreamingOutput)
{
@@ -533,12 +532,12 @@ public abstract class AbstractNetstatsStreaming extends TestBaseImpl
results.add(result);
- Thread.currentThread().sleep(500);
+ Thread.sleep(500);
}
catch (final Exception ex)
{
- System.out.println(ex.getMessage());
- Thread.currentThread().sleep(500);
+ logger.error(ex.getMessage());
+ Thread.sleep(500);
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/util/NodetoolUtils.java b/test/distributed/org/apache/cassandra/distributed/util/NodetoolUtils.java
deleted file mode 100644
index 834e661..0000000
--- a/test/distributed/org/apache/cassandra/distributed/util/NodetoolUtils.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.cassandra.distributed.util;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-
-import org.apache.cassandra.distributed.api.IInvokableInstance;
-import org.apache.cassandra.distributed.api.NodeToolResult;
-import org.apache.cassandra.distributed.impl.Instance;
-import org.apache.cassandra.distributed.shared.NodeToolResultWithOutput;
-import org.apache.cassandra.tools.Output;
-
-// Prefer to use the NodeToolResult that includes output since version 0.0.5
-// CASSANDRA-16057
-public final class NodetoolUtils
-{
- private NodetoolUtils()
- {
-
- }
-
- public static NodeToolResultWithOutput nodetool(IInvokableInstance inst, String... args)
- {
- return nodetool(inst, true, args);
- }
-
- public static NodeToolResultWithOutput nodetool(IInvokableInstance inst, boolean withNotifications, String... args)
- {
- return inst.callOnInstance(() -> {
- PrintStream originalSysOut = System.out;
- PrintStream originalSysErr = System.err;
- originalSysOut.flush();
- originalSysErr.flush();
- ByteArrayOutputStream toolOut = new ByteArrayOutputStream();
- ByteArrayOutputStream toolErr = new ByteArrayOutputStream();
-
- try (PrintStream newOut = new PrintStream(toolOut);
- PrintStream newErr = new PrintStream(toolErr))
- {
- System.setOut(newOut);
- System.setErr(newErr);
- Instance.DTestNodeTool nodetool = new Instance.DTestNodeTool(withNotifications, new Output(newOut, newErr));
- int rc = nodetool.execute(args);
- NodeToolResult result = new NodeToolResult(args, rc, nodetool.getNotifications(), nodetool.getLatestError());
- return new NodeToolResultWithOutput(result, toolOut, toolErr);
- }
- finally
- {
- System.setOut(originalSysOut);
- System.setErr(originalSysErr);
- }
- });
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org