Skip to content

Commit a19689b

Browse files
IGNITE-26580 Test WIP
1 parent 994a6bc commit a19689b

2 files changed

Lines changed: 40 additions & 17 deletions

File tree

modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/DcAffinityBackupFilter.java renamed to modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/MdcAffinityBackupFilter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717

1818
package org.apache.ignite.cache.affinity.rendezvous;
1919

20-
import java.util.LinkedHashMap;
20+
import java.util.HashMap;
2121
import java.util.List;
2222
import java.util.Map;
2323
import java.util.Optional;
2424
import org.apache.ignite.cluster.ClusterNode;
2525
import org.apache.ignite.lang.IgniteBiPredicate;
2626

2727
/** */
28-
public class DcAffinityBackupFilter implements IgniteBiPredicate<ClusterNode, List<ClusterNode>> {
28+
public class MdcAffinityBackupFilter implements IgniteBiPredicate<ClusterNode, List<ClusterNode>> {
2929
/** */
3030
private static final long serialVersionUID = 1L;
3131

@@ -42,16 +42,16 @@ public class DcAffinityBackupFilter implements IgniteBiPredicate<ClusterNode, Li
4242
* @param dcsCount
4343
* @param backups
4444
*/
45-
public DcAffinityBackupFilter(int dcsCount, int backups) {
45+
public MdcAffinityBackupFilter(int dcsCount, int backups) {
4646
this.dcsCount = dcsCount;
47-
partsDistrMap = new LinkedHashMap<>(4);
47+
partsDistrMap = new HashMap<>(dcsCount + 1);
4848
primaryAndBackups = backups + 1;
4949
}
5050

5151
/** {@inheritDoc} */
5252
@Override public boolean apply(ClusterNode node, List<ClusterNode> list) {
53-
if (list.size() == 1)
54-
partsDistrMap.put(list.get(0).dataCenterId(), 1); //account for primary node which is assigned beforehand
53+
if (list.size() == 1) //account for primary node which is assigned beforehand
54+
partsDistrMap.put(list.get(0).dataCenterId(), 1);
5555

5656
String candidateDcId = node.dataCenterId();
5757
Integer candDcPartsCopies = partsDistrMap.get(candidateDcId);

modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/DcAffinityBackupFilterSelfTest.java renamed to modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/MdcAffinityBackupFilterSelfTest.java

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,41 +17,64 @@
1717

1818
package org.apache.ignite.cache.affinity.rendezvous;
1919

20+
import java.util.Collection;
21+
import org.apache.ignite.IgniteCache;
2022
import org.apache.ignite.IgniteCheckedException;
2123
import org.apache.ignite.IgniteSystemProperties;
24+
import org.apache.ignite.cache.affinity.Affinity;
25+
import org.apache.ignite.cache.affinity.AffinityFunction;
26+
import org.apache.ignite.cluster.ClusterNode;
2227
import org.apache.ignite.configuration.CacheConfiguration;
2328
import org.apache.ignite.configuration.IgniteConfiguration;
2429
import org.apache.ignite.internal.IgniteEx;
2530
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
2631
import org.junit.Test;
2732

2833
/** */
29-
public class DcAffinityBackupFilterSelfTest extends GridCommonAbstractTest {
34+
public class MdcAffinityBackupFilterSelfTest extends GridCommonAbstractTest {
3035
/** */
3136
private static final String DC_0_ID = "DC_0";
3237

3338
/** */
3439
private static final String DC_1_ID = "DC_1";
3540

41+
/** {@inheritDoc} */
3642
@Override protected IgniteConfiguration optimize(IgniteConfiguration cfg) throws IgniteCheckedException {
3743
return super.optimize(cfg).setIncludeProperties((String[])null);
3844
}
3945

46+
/**
47+
* Verifies that partition copies are assigned evenly to all data centers.
48+
*
49+
* @throws Exception If failed.
50+
*/
4051
@Test
41-
public void test1() throws Exception {
52+
public void testBasicDistribution() throws Exception {
4253
System.setProperty(IgniteSystemProperties.IGNITE_DATA_CENTER_ID, DC_0_ID);
43-
startGrids(3);
54+
startGrids(2);
4455

4556
System.setProperty(IgniteSystemProperties.IGNITE_DATA_CENTER_ID, DC_1_ID);
46-
startGrid(3);
47-
startGrid(4);
48-
IgniteEx srv = startGrid(5);
57+
startGrid(2);
58+
IgniteEx srv = startGrid(3);
4959

50-
CacheConfiguration ccfg = defaultCacheConfiguration();
51-
ccfg.setBackups(3);
52-
ccfg.setAffinity(new RendezvousAffinityFunction(false, 2)
53-
.setAffinityBackupFilter(new DcAffinityBackupFilter(2, 3)));
60+
CacheConfiguration ccfg = defaultCacheConfiguration()
61+
.setBackups(3)
62+
.setAffinity(
63+
new RendezvousAffinityFunction(false, 4)
64+
.setAffinityBackupFilter(new MdcAffinityBackupFilter(2, 3)));
5465

55-
srv.getOrCreateCache(ccfg);
66+
IgniteCache cache = srv.getOrCreateCache(ccfg);
67+
68+
checkPartitions(srv, cache, 3);
69+
}
70+
71+
/** */
72+
private void checkPartitions(IgniteEx srv, IgniteCache cache, int backups) throws IgniteCheckedException {) {
73+
int partCnt = cacheConfiguration(srv.configuration(), cache.getName()).getAffinity().partitions();
74+
Affinity aff = affinity(cache);
75+
76+
for (int i = 0; i < partCnt; i++) {
77+
Collection<ClusterNode> nodes = aff.mapKeyToPrimaryAndBackups(i);
78+
}
5679
}
5780
}

0 commit comments

Comments
 (0)