diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ClusterOverviewIT.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ClusterOverviewIT.java index 5dbeb915f9ec6..52f3edff78e29 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ClusterOverviewIT.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/ClusterOverviewIT.java @@ -47,26 +47,31 @@ public class ClusterOverviewIT { @Rule - public final ClusterRule clusterRule = new ClusterRule( getClass() ) - .withNumberOfCoreServers( 3 ); + public final ClusterRule clusterRule = new ClusterRule( getClass() ).withNumberOfCoreServers( 3 ); @Test public void shouldDiscoverCoreClusterMembers() throws Exception { // when - Cluster cluster = clusterRule.withNumberOfEdgeServers( 0 ).startCluster(); + Cluster cluster = clusterRule.withNumberOfEdgeServers( 1 ).startCluster(); // then - List overview; for ( int i = 0; i < 3; i++ ) { overview = clusterOverview( cluster.getCoreServerById( i ) ); - assertThat( overview, containsLeader() ); + assertThat( overview, containsRole( "leader", 1 ) ); + assertThat( overview, containsRole( "follower", 2 ) ); + assertThat( overview, containsRole( "read_replica", 1 ) ); + + // core assertThat( overview, containsAddress( "127.0.0.1:8000" ) ); assertThat( overview, containsAddress( "127.0.0.1:8001" ) ); assertThat( overview, containsAddress( "127.0.0.1:8002" ) ); + + // read replicas + assertThat( overview, containsAddress( "127.0.0.1:9000" ) ); } } @@ -96,28 +101,30 @@ public void describeTo( Description description ) }; } - private Matcher> containsLeader() + private Matcher> containsRole(String role, int expectedRoleCount) { return new TypeSafeMatcher>() { @Override public boolean matchesSafely( List overview ) { + int numberOfMachinesForRole = 0; + for ( Object[] row : overview ) { - if ( row[2].toString().equals( "leader" ) ) + if ( row[2].toString().equals( role ) ) { - return true; + numberOfMachinesForRole++; } } - return false; + return numberOfMachinesForRole == expectedRoleCount; } @Override public void describeTo( Description description ) { - description.appendText( "Expected to find leader in the cluster but didn't" ); + description.appendText( "Expected to find " + role + " in the cluster but didn't" ); } }; } diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/SysInfoProcedureIT.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/SysInfoProcedureIT.java deleted file mode 100644 index d3fa0e76505f0..0000000000000 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/scenarios/SysInfoProcedureIT.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2002-2016 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero 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 Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package org.neo4j.coreedge.scenarios; - -import java.util.List; -import java.util.Optional; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -import org.neo4j.coreedge.discovery.Cluster; -import org.neo4j.coreedge.server.core.CoreGraphDatabase; -import org.neo4j.coreedge.server.core.DiscoverMembersProcedure; -import org.neo4j.kernel.api.KernelAPI; -import org.neo4j.kernel.api.KernelTransaction; -import org.neo4j.kernel.api.Statement; -import org.neo4j.test.coreedge.ClusterRule; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsInAnyOrder; - -import static org.neo4j.helpers.collection.Iterators.asList; -import static org.neo4j.kernel.api.proc.ProcedureSignature.procedureName; -import static org.neo4j.kernel.api.security.AccessMode.Static.READ; - -public class SysInfoProcedureIT -{ - @Rule - public final ClusterRule clusterRule = new ClusterRule( getClass() ) - .withNumberOfCoreServers( 3 ) - .withNumberOfEdgeServers( 0 ); - - private Cluster cluster; - - @Before - public void setup() throws Exception - { - cluster = clusterRule.startCluster(); - } - - @Test - public void sysInfoProcedureShouldBeAvailable() throws Exception - { - Optional database = cluster.coreServers().stream().findFirst(); - KernelAPI kernel = database.get().getDependencyResolver().resolveDependency( KernelAPI.class ); - KernelTransaction transaction = kernel.newTransaction( KernelTransaction.Type.implicit, READ ); - Statement statement = transaction.acquireStatement(); - - List members = asList( statement.readOperations().procedureCallRead( - procedureName( "dbms", "cluster", DiscoverMembersProcedure.NAME ), - new Object[0] ) ); - - assertThat( members, containsInAnyOrder( - new Object[]{"127.0.0.1:8000"}, - new Object[]{"127.0.0.1:8001"}, - new Object[]{"127.0.0.1:8002"} ) ); - - } -}