Skip to content

Commit 48477c6

Browse files
authored
Merge pull request #2017 from brendandburns/main
Add macos to the matrix build.
2 parents 6dcc6c9 + e4cca45 commit 48477c6

File tree

2 files changed

+41
-8
lines changed

2 files changed

+41
-8
lines changed

.github/workflows/maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
matrix:
2929
# Test against the LTS Java versions. TODO: add JDK18 when it becomes available.
3030
java: [ 8.0.x, 11.0.x, 17.0.x ]
31-
os: [ windows-latest, ubuntu-latest ]
31+
os: [ macos-latest, windows-latest, ubuntu-latest ]
3232
runs-on: ${{ matrix.os }}
3333
steps:
3434
- uses: actions/checkout@v3

extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectionTest.java

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,24 +201,29 @@ public void testLeaderElectionWithRenewDeadline() throws InterruptedException {
201201
List<String> electionHistory = new ArrayList<>();
202202
List<String> leadershipHistory = new ArrayList<>();
203203

204+
CountDownLatch testLockAccessLatch = new CountDownLatch(9);
204205
MockResourceLock mockLock = new MockResourceLock("mock");
205206
mockLock.renewCountMax = 3;
206207
mockLock.onCreate =
207208
record -> {
208209
electionHistory.add("create record");
209210
leadershipHistory.add("get leadership");
211+
testLockAccessLatch.countDown();
210212
};
211213
mockLock.onUpdate =
212214
record -> {
213215
electionHistory.add("update record");
216+
testLockAccessLatch.countDown();
214217
};
215218
mockLock.onChange =
216219
record -> {
217220
electionHistory.add("change record");
221+
testLockAccessLatch.countDown();
218222
};
219223
mockLock.onTryUpdate =
220224
record -> {
221225
electionHistory.add("try update record");
226+
testLockAccessLatch.countDown();
222227
};
223228

224229
LeaderElectionConfig leaderElectionConfig = new LeaderElectionConfig();
@@ -244,18 +249,16 @@ record -> {
244249
});
245250

246251
testLeaderElectionLatch.await(10, SECONDS);
252+
testLockAccessLatch.await(10, SECONDS);
247253

248-
assertHistory(
254+
assertWildcardHistory(
249255
electionHistory,
250256
"create record",
251-
"try update record",
257+
"try update record+",
252258
"update record",
253-
"try update record",
259+
"try update record+",
254260
"update record",
255-
"try update record",
256-
"try update record",
257-
"try update record",
258-
"try update record");
261+
"try update record+");
259262
assertHistory(leadershipHistory, "get leadership", "start leading", "stop leading");
260263
}
261264

@@ -274,6 +277,36 @@ private void assertHistory(List<String> history, String... expected) {
274277
}
275278
}
276279

280+
// assertWildcardHistory allows for an arbitrary number of repeated entries for an
281+
// comparison with a '+' suffix. This allows for a semantic rather than literal
282+
// comparison to avoid issues of timing.
283+
private void assertWildcardHistory(List<String> history, String... expected) {
284+
Assert.assertNotNull(expected);
285+
Assert.assertNotNull(history);
286+
287+
// TODO: This code is too complicated and a little bit buggy, but it works
288+
// for the current limited use case. Clean this up!
289+
int expectedIx = 0;
290+
for (int index = 0; index < history.size(); ++index) {
291+
String compare = expected[expectedIx];
292+
if (compare.endsWith("+")) {
293+
compare = compare.substring(0, compare.length() - 1);
294+
if (!history.get(index).equals(compare)) {
295+
expectedIx++;
296+
compare = expected[expectedIx];
297+
expectedIx++;
298+
}
299+
} else {
300+
expectedIx++;
301+
}
302+
Assert.assertEquals(
303+
String.format(
304+
"Not equal at index %d, expected %s, got %s", index, compare, history.get(index)),
305+
compare,
306+
history.get(index));
307+
}
308+
}
309+
277310
@Test
278311
public void testLeaderElectionCaptureException() throws ApiException, InterruptedException {
279312
RuntimeException expectedException = new RuntimeException("noxu");

0 commit comments

Comments
 (0)