diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2017-10-17 16:45:10 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2017-10-18 10:43:22 +0200 |
commit | 9e4fe4aca049a680ba0476312f89a5fe133412cf (patch) | |
tree | de8500e3b8c26cfe094f38dd782709a815a273de /server | |
parent | d3195eafe8e0253fa8a7044013476de94fcb5edb (diff) | |
download | sonarqube-9e4fe4aca049a680ba0476312f89a5fe133412cf.tar.gz sonarqube-9e4fe4aca049a680ba0476312f89a5fe133412cf.zip |
Remove cluster tests
Diffstat (limited to 'server')
7 files changed, 4 insertions, 335 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java index 9e214a27a86..0964c3cfe22 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java @@ -78,7 +78,6 @@ import org.sonar.process.NetworkUtilsImpl; import org.sonar.process.ProcessProperties; import org.sonar.process.Props; import org.sonar.process.logging.LogbackHelper; -import org.sonar.server.cluster.StartableHazelcastMember; import org.sonar.server.component.ComponentFinder; import org.sonar.server.component.index.ComponentIndexer; import org.sonar.server.computation.task.projectanalysis.ProjectAnalysisTaskModule; @@ -426,8 +425,6 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer { if (props.valueAsBoolean(ProcessProperties.CLUSTER_ENABLED)) { container.add( - StartableHazelcastMember.class, - // system health CeDistributedInformationImpl.class, diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/CeDistributedInformationImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/CeDistributedInformationImplTest.java index 8792800ce5c..e61accd9a50 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/CeDistributedInformationImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/CeDistributedInformationImplTest.java @@ -27,7 +27,7 @@ import java.util.Map; import java.util.Set; import org.junit.Test; import org.sonar.ce.taskprocessor.CeWorkerFactory; -import org.sonar.server.cluster.StartableHazelcastMember; +import org.sonar.process.cluster.hz.HazelcastMember; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.data.MapEntry.entry; @@ -45,7 +45,7 @@ public class CeDistributedInformationImplTest { clientUUID3, ImmutableSet.of("4", "5", "6") ); - private StartableHazelcastMember hzClientWrapper = mock(StartableHazelcastMember.class); + private HazelcastMember hzClientWrapper = mock(HazelcastMember.class); @Test public void getWorkerUUIDs_returns_union_of_workers_uuids_of_local_and_cluster_worker_uuids() { diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java index a4c1e7822fb..9f02e6aa47c 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java @@ -21,13 +21,10 @@ package org.sonar.ce.container; import java.io.File; import java.io.IOException; -import java.net.InetAddress; import java.util.Date; -import java.util.Optional; import java.util.Properties; import java.util.stream.Collectors; import org.apache.commons.dbcp.BasicDataSource; -import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -42,23 +39,15 @@ import org.sonar.ce.CeDistributedInformationImpl; import org.sonar.ce.StandaloneCeDistributedInformation; import org.sonar.db.DbTester; import org.sonar.db.property.PropertyDto; -import org.sonar.process.NetworkUtilsImpl; import org.sonar.process.ProcessId; import org.sonar.process.ProcessProperties; import org.sonar.process.Props; -import org.sonar.server.cluster.StartableHazelcastMember; import static java.lang.String.valueOf; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assume.assumeThat; import static org.mockito.Mockito.mock; import static org.sonar.process.ProcessEntryPoint.PROPERTY_PROCESS_INDEX; -import static org.sonar.process.ProcessEntryPoint.PROPERTY_PROCESS_KEY; import static org.sonar.process.ProcessEntryPoint.PROPERTY_SHARED_PATH; -import static org.sonar.process.ProcessProperties.CLUSTER_ENABLED; -import static org.sonar.process.ProcessProperties.CLUSTER_NODE_HOST; -import static org.sonar.process.ProcessProperties.CLUSTER_NODE_PORT; -import static org.sonar.process.ProcessProperties.CLUSTER_NODE_TYPE; import static org.sonar.process.ProcessProperties.PATH_DATA; import static org.sonar.process.ProcessProperties.PATH_HOME; import static org.sonar.process.ProcessProperties.PATH_TEMP; @@ -86,36 +75,7 @@ public class ComputeEngineContainerImplTest { } @Test - public void real_start_with_cluster() throws IOException { - Optional<InetAddress> localhost = NetworkUtilsImpl.INSTANCE.getLocalNonLoopbackIpv4Address(); - // test is ignored if offline - assumeThat(localhost.isPresent(), CoreMatchers.is(true)); - - Properties properties = getProperties(); - properties.setProperty(PROPERTY_PROCESS_KEY, ProcessId.COMPUTE_ENGINE.getKey()); - properties.setProperty(CLUSTER_ENABLED, "true"); - properties.setProperty(CLUSTER_NODE_TYPE, "application"); - properties.setProperty(CLUSTER_NODE_HOST, localhost.get().getHostAddress()); - properties.setProperty(CLUSTER_NODE_PORT, "" + NetworkUtilsImpl.INSTANCE.getNextAvailablePort(localhost.get())); - - // required persisted properties - insertProperty(CoreProperties.SERVER_ID, "a_startup_id"); - insertProperty(CoreProperties.SERVER_STARTTIME, DateUtils.formatDateTime(new Date())); - - underTest - .start(new Props(properties)); - - MutablePicoContainer picoContainer = underTest.getComponentContainer().getPicoContainer(); - assertThat( - picoContainer.getComponentAdapters().stream() - .map(ComponentAdapter::getComponentImplementation) - .collect(Collectors.toList())).contains((Class) StartableHazelcastMember.class, - (Class) CeDistributedInformationImpl.class); - underTest.stop(); - } - - @Test - public void real_start_without_cluster() throws IOException { + public void test_real_start() throws IOException { Properties properties = getProperties(); // required persisted properties @@ -160,7 +120,7 @@ public class ComputeEngineContainerImplTest { assertThat( picoContainer.getComponentAdapters().stream() .map(ComponentAdapter::getComponentImplementation) - .collect(Collectors.toList())).doesNotContain((Class) StartableHazelcastMember.class, + .collect(Collectors.toList())).doesNotContain( (Class) CeDistributedInformationImpl.class).contains( (Class) StandaloneCeDistributedInformation.class); assertThat(picoContainer.getParent().getParent().getParent().getParent()).isNull(); diff --git a/server/sonar-server/src/main/java/org/sonar/server/cluster/StartableHazelcastMember.java b/server/sonar-server/src/main/java/org/sonar/server/cluster/StartableHazelcastMember.java deleted file mode 100644 index 7bf6c82d487..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/cluster/StartableHazelcastMember.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2017 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.server.cluster; - -import com.hazelcast.core.Cluster; -import com.hazelcast.core.IAtomicReference; -import com.hazelcast.core.MemberSelector; -import java.net.UnknownHostException; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.locks.Lock; -import org.sonar.api.Startable; -import org.sonar.api.config.Configuration; -import org.sonar.process.NetworkUtils; -import org.sonar.process.ProcessId; -import org.sonar.process.ProcessProperties; -import org.sonar.process.cluster.NodeType; -import org.sonar.process.cluster.hz.DistributedAnswer; -import org.sonar.process.cluster.hz.DistributedCall; -import org.sonar.process.cluster.hz.HazelcastMember; -import org.sonar.process.cluster.hz.HazelcastMemberBuilder; - -import static java.lang.String.format; -import static java.util.Arrays.asList; -import static java.util.Objects.requireNonNull; -import static org.sonar.process.ProcessEntryPoint.PROPERTY_PROCESS_KEY; -import static org.sonar.process.ProcessProperties.CLUSTER_HOSTS; -import static org.sonar.process.ProcessProperties.CLUSTER_NODE_HOST; -import static org.sonar.process.ProcessProperties.CLUSTER_NODE_TYPE; - -/** - * Implementation of {@link HazelcastMember} as used by Compute Engine and - * Web Server processes. It is configured by {@link Configuration} - * and its lifecycle is managed by picocontainer. - */ -public class StartableHazelcastMember implements HazelcastMember, Startable { - - private final Configuration config; - private final NetworkUtils network; - private HazelcastMember member = null; - - public StartableHazelcastMember(Configuration config, NetworkUtils network) { - this.config = config; - this.network = network; - } - - @Override - public <E> IAtomicReference<E> getAtomicReference(String name) { - return nonNullMember().getAtomicReference(name); - } - - @Override - public <E> Set<E> getSet(String name) { - return nonNullMember().getSet(name); - } - - @Override - public <E> List<E> getList(String name) { - return nonNullMember().getList(name); - } - - @Override - public <K, V> Map<K, V> getMap(String name) { - return nonNullMember().getMap(name); - } - - @Override - public <K, V> Map<K, V> getReplicatedMap(String name) { - return nonNullMember().getReplicatedMap(name); - } - - @Override - public String getUuid() { - return nonNullMember().getUuid(); - } - - @Override - public Set<String> getMemberUuids() { - return nonNullMember().getMemberUuids(); - } - - @Override - public Lock getLock(String name) { - return nonNullMember().getLock(name); - } - - @Override - public long getClusterTime() { - return nonNullMember().getClusterTime(); - } - - @Override - public Cluster getCluster() { - return nonNullMember().getCluster(); - } - - @Override - public <T> DistributedAnswer<T> call(DistributedCall<T> callable, MemberSelector memberSelector, long timeoutMs) - throws InterruptedException { - return nonNullMember().call(callable, memberSelector, timeoutMs); - } - - private HazelcastMember nonNullMember() { - return requireNonNull(member, "Hazelcast member not started"); - } - - @Override - public void close() { - if (member != null) { - member.close(); - member = null; - } - } - - @Override - public void start() { - String networkAddress = config.get(CLUSTER_NODE_HOST).orElseThrow(() -> new IllegalStateException("Missing node host")); - int freePort; - try { - freePort = network.getNextAvailablePort(network.toInetAddress(networkAddress)); - } catch (UnknownHostException e) { - throw new IllegalStateException(format("Can not resolve address %s", networkAddress), e); - } - this.member = new HazelcastMemberBuilder() - .setNodeName(config.get(ProcessProperties.CLUSTER_NODE_NAME).orElseThrow(() -> new IllegalStateException("Missing node name"))) - .setNodeType(NodeType.parse(config.get(CLUSTER_NODE_TYPE).orElseThrow(() -> new IllegalStateException("Missing node type")))) - .setPort(freePort) - .setProcessId(ProcessId.fromKey(config.get(PROPERTY_PROCESS_KEY).orElseThrow(() -> new IllegalStateException("Missing process key")))) - .setMembers(asList(config.getStringArray(CLUSTER_HOSTS))) - .setNetworkInterface(networkAddress) - .build(); - } - - @Override - public void stop() { - close(); - } -} diff --git a/server/sonar-server/src/main/java/org/sonar/server/cluster/package-info.java b/server/sonar-server/src/main/java/org/sonar/server/cluster/package-info.java deleted file mode 100644 index 28ed7dc786f..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/cluster/package-info.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2017 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -@ParametersAreNonnullByDefault -package org.sonar.server.cluster; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java index ed55f0e1cb8..b7ef5fd0193 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java @@ -39,7 +39,6 @@ import org.sonar.server.authentication.LogOAuthWarning; import org.sonar.server.batch.BatchWsModule; import org.sonar.server.branch.BranchFeatureProxyImpl; import org.sonar.server.ce.ws.CeWsModule; -import org.sonar.server.cluster.StartableHazelcastMember; import org.sonar.server.component.ComponentCleanerService; import org.sonar.server.component.ComponentFinder; import org.sonar.server.component.ComponentService; @@ -247,7 +246,6 @@ public class PlatformLevel4 extends PlatformLevel { EsDbCompatibilityImpl.class); addIfCluster( - StartableHazelcastMember.class, NodeHealthModule.class, ChangeLogLevelClusterService.class); addIfStandalone( diff --git a/server/sonar-server/src/test/java/org/sonar/server/cluster/StartableHazelcastMemberTest.java b/server/sonar-server/src/test/java/org/sonar/server/cluster/StartableHazelcastMemberTest.java deleted file mode 100644 index 84e82d23386..00000000000 --- a/server/sonar-server/src/test/java/org/sonar/server/cluster/StartableHazelcastMemberTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2017 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.server.cluster; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.function.Supplier; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.sonar.api.config.internal.MapSettings; -import org.sonar.process.NetworkUtils; -import org.sonar.process.NetworkUtilsImpl; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.fail; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; - -public class StartableHazelcastMemberTest { - - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - private MapSettings settings = new MapSettings(); - private String loopback = InetAddress.getLoopbackAddress().getHostAddress(); - - @Test - public void start_initializes_hazelcast() { - completeValidSettings(); - StartableHazelcastMember underTest = new StartableHazelcastMember(settings.asConfig(), NetworkUtilsImpl.INSTANCE); - verifyStopped(underTest); - - underTest.start(); - - assertThat(underTest.getUuid()).isNotEmpty(); - assertThat(underTest.getCluster().getMembers()).hasSize(1); - assertThat(underTest.getMemberUuids()).containsExactly(underTest.getUuid()); - assertThat(underTest.getSet("foo")).isNotNull(); - assertThat(underTest.getReplicatedMap("foo")).isNotNull(); - assertThat(underTest.getAtomicReference("foo")).isNotNull(); - assertThat(underTest.getList("foo")).isNotNull(); - assertThat(underTest.getMap("foo")).isNotNull(); - assertThat(underTest.getLock("foo")).isNotNull(); - assertThat(underTest.getClusterTime()).isGreaterThan(0); - - underTest.stop(); - - verifyStopped(underTest); - } - - @Test - public void throw_ISE_if_host_for_random_port_cant_be_resolved() throws Exception{ - NetworkUtils network = mock(NetworkUtils.class); - doThrow(new UnknownHostException("BOOM")).when(network).toInetAddress(anyString()); - completeValidSettings(); - StartableHazelcastMember underTest = new StartableHazelcastMember(settings.asConfig(), network); - - expectedException.expect(IllegalStateException.class); - expectedException.expectMessage("Can not resolve address "); - - underTest.start(); - - verifyStopped(underTest); - } - - private void completeValidSettings() { - settings.setProperty("sonar.cluster.name", "foo"); - settings.setProperty("sonar.cluster.node.host", loopback); - settings.setProperty("sonar.cluster.node.name", "bar"); - settings.setProperty("sonar.cluster.node.type", "application"); - settings.setProperty("process.key", "ce"); - } - - private static void verifyStopped(StartableHazelcastMember member) { - expectNpe(member::getMemberUuids); - expectNpe(member::getCluster); - expectNpe(member::getUuid); - } - - private static void expectNpe(Supplier supplier) { - try { - supplier.get(); - fail(); - } catch (NullPointerException e) { - } - } - -} |