Skip to content

Commit 2e53a66

Browse files
authored
Fix test assertions that depend on undefined row ordering (#3007)
* Fix test assertions that depend on undefined row ordering Several tests use containsExactly() or index-based comparison on query results that have no ORDER BY clause. SQL does not guarantee row ordering without explicit ORDER BY, and databases like YugabyteDB return results in a different (but valid) order than PostgreSQL/H2. These tests verify set membership (correct targets assigned, correct actions stored), not ordering. Changed to order-independent assertions: - AutoAssignTest: containsExactly -> containsExactlyInAnyOrder - ControllerManagementTest: index-based loop -> containsExactlyInAnyOrderElementsOf - TargetFilterQueryManagementTest: containsExactly -> containsExactlyInAnyOrder Verified passing on H2 (default) and YugabyteDB (PostgreSQL-compatible). * Trigger ECA re-check
1 parent bdb87a9 commit 2e53a66

3 files changed

Lines changed: 6 additions & 7 deletions

File tree

hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/AutoAssignTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,6 @@ private void verifyOnlyUpdatableTargetsArePartOfAutoAssignment(final Runnable as
7676
.as("Only updatable targets should be part of the rollout")
7777
// all targets are distribution set type 2 compatible, but since user has UPDATE_TARGET only for targets of type 2
7878
// only target2 and target3 shall be assigned
79-
.containsExactly(target2Type2.getId(), target3Type2.getId());
79+
.containsExactlyInAnyOrder(target2Type2.getId(), target3Type2.getId());
8080
}
8181
}

hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ControllerManagementTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,10 +1441,9 @@ void updatedExternalRefOnActionIsReallyUpdated() {
14411441
root.get(JpaAction_.externalRef).in(allExternalRef),
14421442
cb.equal(root.get(JpaAction_.active), true)
14431443
)).stream().map(Action.class::cast).toList();
1444-
assertThat(foundAction).isNotNull();
1445-
for (int i = 0; i < numberOfActions; i++) {
1446-
assertThat(foundAction.get(i).getId()).isEqualTo(allActionId.get(i));
1447-
}
1444+
assertThat(foundAction).isNotNull().hasSize(numberOfActions);
1445+
assertThat(foundAction).extracting(Action::getId)
1446+
.containsExactlyInAnyOrderElementsOf(allActionId);
14481447
}
14491448

14501449
/**

hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetFilterQueryManagementTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ private void verifyFindByDistributionSetAndRsql(
520520

521521
private void verifyExpectedFilterQueriesInList(final Slice<TargetFilterQuery> tfqList,
522522
final TargetFilterQuery... expectedFilterQueries) {
523-
assertThat(tfqList.map(TargetFilterQuery::getId)).containsExactly(
523+
assertThat(tfqList.map(TargetFilterQuery::getId)).containsExactlyInAnyOrder(
524524
Arrays.stream(expectedFilterQueries).map(TargetFilterQuery::getId).toArray(Long[]::new));
525525
}
526526

@@ -536,7 +536,7 @@ private void verifyExpectedFilterQueriesInList(final Page<TargetFilterQuery> tfq
536536
final TargetFilterQuery... expectedFilterQueries) {
537537
assertThat(expectedFilterQueries).as("Target filter query count").hasSize((int) tfqList.getTotalElements());
538538

539-
assertThat(tfqList.map(TargetFilterQuery::getId)).containsExactly(
539+
assertThat(tfqList.map(TargetFilterQuery::getId)).containsExactlyInAnyOrder(
540540
Arrays.stream(expectedFilterQueries).map(TargetFilterQuery::getId).toArray(Long[]::new));
541541
}
542542

0 commit comments

Comments
 (0)