ARTEMIS-4384 Moving Cluster verify under verify group

With this you would access the same functionality as ./artemis check cluster
This commit is contained in:
Clebert Suconic 2023-09-08 12:58:20 -04:00 committed by clebertsuconic
parent bbe23b24ad
commit 4b8c7199e7
7 changed files with 17 additions and 58 deletions

View File

@ -51,7 +51,6 @@ import org.apache.activemq.artemis.cli.commands.messages.Transfer;
import org.apache.activemq.artemis.cli.commands.messages.perf.PerfGroup;
import org.apache.activemq.artemis.cli.commands.queue.QueueGroup;
import org.apache.activemq.artemis.cli.commands.tools.DataGroup;
import org.apache.activemq.artemis.cli.commands.tools.cluster.ClusterGroup;
import org.apache.activemq.artemis.cli.commands.tools.journal.PerfJournal;
import org.apache.activemq.artemis.cli.commands.user.UserGroup;
import org.apache.activemq.artemis.dto.ManagementContextDTO;
@ -301,8 +300,6 @@ public class Artemis implements Runnable {
commandLine.addSubcommand(new Upgrade());
}
commandLine.addSubcommand(new ClusterGroup(commandLine));
return commandLine;
}

View File

@ -21,7 +21,7 @@ import org.apache.activemq.artemis.cli.commands.HelpAction;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@Command(name = "check", description = "use 'help check' for sub commands list", subcommands = {NodeCheck.class, QueueCheck.class})
@Command(name = "check", description = "use 'help check' for sub commands list", subcommands = {NodeCheck.class, QueueCheck.class, ClusterCheck.class})
public class CheckGroup implements Runnable {
CommandLine commandLine;

View File

@ -15,14 +15,14 @@
* limitations under the License.
*/
package org.apache.activemq.artemis.cli.commands.tools.cluster;
package org.apache.activemq.artemis.cli.commands.check;
import org.apache.activemq.artemis.cli.commands.ActionContext;
import org.apache.activemq.artemis.cli.commands.messages.ConnectionAbstract;
import picocli.CommandLine;
@CommandLine.Command(name = "verify", description = "Verify if all the nodes match the same topology.")
public class Verify extends ConnectionAbstract {
@CommandLine.Command(name = "cluster", description = "Verify if all the nodes on the cluster match the same topology and time configuration.")
public class ClusterCheck extends ConnectionAbstract {
@CommandLine.Option(names = "--variance", description = "Allowed variance in milliseconds before considered a failure. (default=1000)")
public long variance = 1000;
@ -33,8 +33,8 @@ public class Verify extends ConnectionAbstract {
createConnectionFactory();
try (ClusterVerifier clusterVerifier = new ClusterVerifier(brokerURL, user, password, variance).open()) {
try (ClusterNodeVerifier clusterVerifier = new ClusterNodeVerifier(brokerURL, user, password, variance).open()) {
return clusterVerifier.verify(context);
}
}
}
}

View File

@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.activemq.artemis.cli.commands.tools.cluster;
package org.apache.activemq.artemis.cli.commands.check;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -31,7 +31,7 @@ import org.apache.activemq.artemis.json.JsonArray;
import org.apache.activemq.artemis.json.JsonObject;
import org.apache.activemq.artemis.json.JsonString;
public class ClusterVerifier implements AutoCloseable {
public class ClusterNodeVerifier implements AutoCloseable {
final String uri, user, password;
@ -39,11 +39,11 @@ public class ClusterVerifier implements AutoCloseable {
final long allowedVariance;
public ClusterVerifier(String uri, String user, String password) {
public ClusterNodeVerifier(String uri, String user, String password) {
this(uri, user, password, 1000);
}
public ClusterVerifier(String uri, String user, String password, long variance) {
public ClusterNodeVerifier(String uri, String user, String password, long variance) {
this.uri = uri;
this.user = user;
this.password = password;
@ -56,7 +56,7 @@ public class ClusterVerifier implements AutoCloseable {
simpleManagement.close();
}
public ClusterVerifier open() throws Exception {
public ClusterNodeVerifier open() throws Exception {
simpleManagement.open();
return this;
}

View File

@ -1,38 +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.activemq.artemis.cli.commands.tools.cluster;
import org.apache.activemq.artemis.cli.commands.HelpAction;
import picocli.CommandLine;
import picocli.CommandLine.Command;
@Command(name = "cluster", description = "use 'help cluster' for sub commands list", subcommands = {Verify.class})
public class ClusterGroup implements Runnable {
CommandLine commandLine;
public ClusterGroup(CommandLine commandLine) {
this.commandLine = commandLine;
}
@Override
public void run() {
HelpAction.help(commandLine, "cluster");
}
}

View File

@ -22,7 +22,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.activemq.artemis.api.core.JsonUtil;
import org.apache.activemq.artemis.cli.commands.ActionContext;
import org.apache.activemq.artemis.cli.commands.tools.cluster.ClusterVerifier;
import org.apache.activemq.artemis.cli.commands.check.ClusterNodeVerifier;
import org.apache.activemq.artemis.json.JsonArray;
import org.apache.commons.lang3.NotImplementedException;
import org.junit.Assert;
@ -47,10 +47,10 @@ public class ClusterVerifyTest {
// A:1 topology:[{"nodeID":"A1","live":"A:1", "backup":"B:1"}, {"nodeID":"A2","live":"A:2", "backup":"B:2"}, {"nodeID":"A3","live":"A:3", "backup":"B:3"}]
// A:2 topology:[{"nodeID":"A1","live":"A:1"}, {"nodeID":"A2","live":"A:2"}, {"nodeID":"A3","live":"A:3"}]
// A:3 topology:[{"nodeID":"A1","live":"A:1", "backup":"B:1"}, {"nodeID":"A2","live":"A:2", "backup":"B:2"}] [
ClusterVerifier fakeVerifier = new ClusterVerifier("fake", "a", "b") {
ClusterNodeVerifier fakeVerifier = new ClusterNodeVerifier("fake", "a", "b") {
@Override
protected void verifyTime(ActionContext context,
Map<String, ClusterVerifier.TopologyItem> mainTopology,
Map<String, ClusterNodeVerifier.TopologyItem> mainTopology,
AtomicBoolean verificationResult,
boolean supportTime) {
// not doing it
@ -112,7 +112,7 @@ public class ClusterVerifyTest {
// The server is not clustered, and listTopology will return []
@Test
public void testReadEmpty() throws Exception {
ClusterVerifier fakeVerifier = new ClusterVerifier("fake", "a", "b") {
ClusterNodeVerifier fakeVerifier = new ClusterNodeVerifier("fake", "a", "b") {
@Override
protected void verifyTime(ActionContext context,
Map<String, TopologyItem> mainTopology,

View File

@ -21,7 +21,7 @@ import java.lang.invoke.MethodHandles;
import org.apache.activemq.artemis.api.core.management.SimpleManagement;
import org.apache.activemq.artemis.cli.commands.ActionContext;
import org.apache.activemq.artemis.cli.commands.tools.cluster.ClusterVerifier;
import org.apache.activemq.artemis.cli.commands.check.ClusterNodeVerifier;
import org.apache.activemq.artemis.json.JsonArray;
import org.apache.activemq.artemis.json.JsonObject;
import org.apache.activemq.artemis.json.JsonString;
@ -134,7 +134,7 @@ public class TopologyCheckTest extends SmokeTestBase {
}
}
ClusterVerifier clusterVerifier = new ClusterVerifier(uris[validNodes[0]], "admin", "admin");
ClusterNodeVerifier clusterVerifier = new ClusterNodeVerifier(uris[validNodes[0]], "admin", "admin");
Assert.assertTrue(clusterVerifier.verify(new ActionContext()));
}