Skip to content

Commit 3208d5f

Browse files
author
plusterkopp
committed
+ Fixed: HwLoc-based affinity test failures
1 parent f3eace5 commit 3208d5f

1 file changed

Lines changed: 31 additions & 3 deletions

File tree

affinity/src/test/java/net/openhft/affinity/impl/HwLocJNAAffinityTest.java

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,17 @@
1919
import net.openhft.affinity.Affinity;
2020
import net.openhft.affinity.CpuLayout;
2121
import net.openhft.affinity.IAffinity;
22+
import net.openhft.affinity.IDefaultLayoutAffinity;
2223
import org.junit.Assume;
2324
import org.junit.BeforeClass;
2425
import org.junit.Test;
2526

2627
import java.util.BitSet;
28+
import java.util.Random;
2729

2830
import static org.junit.Assert.assertEquals;
2931
import static org.junit.Assert.assertNotNull;
3032

31-
/**
32-
* @author peter.lawrey
33-
*/
3433
public class HwLocJNAAffinityTest extends AbstractAffinityImplTest {
3534
@BeforeClass
3635
public static void checkJniLibraryPresent() {
@@ -67,5 +66,34 @@ public void getAffinityReturnsValuePreviouslySet() {
6766
}
6867
}
6968

69+
@Test
70+
public void getAffinityReturnsValuePreviouslySetRandom() {
71+
final IAffinity impl = getImpl();
72+
final BitSet cmask = impl.getAffinity();
73+
if (impl instanceof IDefaultLayoutAffinity) {
74+
IDefaultLayoutAffinity idla = (IDefaultLayoutAffinity) impl;
75+
CpuLayout layout = idla.getDefaultLayout();
76+
int nCPUs = layout.cpus();
77+
Random rnd = new Random();
78+
System.out.println("current mask: " + cmask);
79+
for (int i = 0; i < 1000; i++) {
80+
final BitSet mask = new BitSet();
81+
for (int index = 0; index < nCPUs; index++) {
82+
if (rnd.nextBoolean()) {
83+
mask.set(index);
84+
}
85+
}
86+
if (mask.isEmpty()) { // avoid EINVAL
87+
continue;
88+
}
89+
// System.out.print("mask → " + mask);
90+
impl.setAffinity(mask);
91+
final BitSet ret_mask = impl.getAffinity();
92+
// System.out.println(" … " + ret_mask);
93+
assertEquals(mask, ret_mask);
94+
}
95+
}
96+
}
97+
7098

7199
}

0 commit comments

Comments
 (0)