Skip to content

Commit 44cf214

Browse files
committed
Fix equality bug
1 parent f4f9496 commit 44cf214

2 files changed

Lines changed: 30 additions & 6 deletions

File tree

src/main/java/org/prebid/server/auction/externalortb/ProfilesProcessor.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,13 @@ private ExtImpPrebid parseImpExt(JsonNode jsonNode) {
151151

152152
private static AllProfilesIds truncate(AllProfilesIds profilesIds, int maxProfiles) {
153153
final List<String> requestProfiles = profilesIds.request();
154-
final int impProfilesLimit = maxProfiles - requestProfiles.size();
154+
final int impProfilesLimit = Math.max(0, maxProfiles - requestProfiles.size());
155155

156-
return impProfilesLimit > 0
157-
? new AllProfilesIds(
158-
requestProfiles,
156+
return new AllProfilesIds(
157+
truncate(requestProfiles, maxProfiles),
159158
profilesIds.imps().stream()
160159
.map(impProfiles -> truncate(impProfiles, impProfilesLimit))
161-
.toList())
162-
: new AllProfilesIds(truncate(requestProfiles, maxProfiles), Collections.emptyList());
160+
.toList());
163161
}
164162

165163
private static <T> List<T> truncate(List<T> list, int maxSize) {

src/test/java/org/prebid/server/auction/externalortb/ProfilesProcessorTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,32 @@ public void processShouldLimitRequestProfilesUsingAccountConfig() {
191191
verify(metrics).updateAccountProfileMetric(eq("accountId"), eq(MetricName.limit_exceeded));
192192
}
193193

194+
@Test
195+
public void processShouldHandleCorrectlyWhenLimitEqualsRequestProfilesCount() {
196+
// given
197+
final AuctionContext auctionContext = givenAuctionContext(AccountProfilesConfig.of(2, null), true);
198+
final BidRequest bidRequest = withProfiles(
199+
givenBidRequest(
200+
identity(),
201+
withProfiles(givenImp(identity())),
202+
withProfiles(givenImp(identity())),
203+
withProfiles(givenImp(identity()))),
204+
"rp1", "rp2");
205+
206+
// when
207+
target.process(auctionContext, bidRequest);
208+
209+
// then
210+
assertThat(auctionContext.getDebugWarnings()).isEmpty();
211+
212+
verify(applicationSettings).getProfiles(
213+
eq("accountId"),
214+
eq(Set.of("rp1", "rp2")),
215+
eq(emptySet()),
216+
any());
217+
verifyNoInteractions(metrics);
218+
}
219+
194220
@Test
195221
public void processShouldFailAndEmitMetricsWhenDebugDisabledAndFailOnUnknownIsTrue() {
196222
// given

0 commit comments

Comments
 (0)