aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2017-10-17 16:45:10 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2017-10-18 10:43:22 +0200
commit9e4fe4aca049a680ba0476312f89a5fe133412cf (patch)
treede8500e3b8c26cfe094f38dd782709a815a273de /server
parentd3195eafe8e0253fa8a7044013476de94fcb5edb (diff)
downloadsonarqube-9e4fe4aca049a680ba0476312f89a5fe133412cf.tar.gz
sonarqube-9e4fe4aca049a680ba0476312f89a5fe133412cf.zip
Remove cluster tests
Diffstat (limited to 'server')
-rw-r--r--server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java3
-rw-r--r--server/sonar-ce/src/test/java/org/sonar/ce/CeDistributedInformationImplTest.java4
-rw-r--r--server/sonar-ce/src/test/java/org/sonar/ce/container/ComputeEngineContainerImplTest.java44
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/cluster/StartableHazelcastMember.java156
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/cluster/package-info.java23
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java2
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/cluster/StartableHazelcastMemberTest.java107
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) {
- }
- }
-
-}