diff --git a/docs/config-app.md b/docs/config-app.md index ea275c2f151..c037a74c482 100644 --- a/docs/config-app.md +++ b/docs/config-app.md @@ -153,6 +153,7 @@ There are several typical keys: - `adapters..usersync.type` - usersync type (i.e. redirect, iframe). - `adapters..usersync.support-cors` - flag signals if CORS supported by usersync. - `adapters..debug.allow` - enables debug output in the auction response for the given bidder. Default `true`. +- `adapters..tmax-deduction-ms` - adjusts the tmax sent to the bidder by deducting the provided value (ms). Default `0 ms` - no deduction. In addition, each bidder could have arbitrary aliases configured that will look and act very much the same as the bidder itself. Aliases are configured by adding child configuration object at `adapters..aliases..`, aliases diff --git a/extra/modules/ortb2-blocking/src/test/java/org/prebid/server/hooks/modules/ortb2/blocking/v1/Ortb2BlockingBidderRequestHookTest.java b/extra/modules/ortb2-blocking/src/test/java/org/prebid/server/hooks/modules/ortb2/blocking/v1/Ortb2BlockingBidderRequestHookTest.java index 5c1b7303831..b2182a92f6e 100644 --- a/extra/modules/ortb2-blocking/src/test/java/org/prebid/server/hooks/modules/ortb2/blocking/v1/Ortb2BlockingBidderRequestHookTest.java +++ b/extra/modules/ortb2-blocking/src/test/java/org/prebid/server/hooks/modules/ortb2/blocking/v1/Ortb2BlockingBidderRequestHookTest.java @@ -276,7 +276,8 @@ private static BidderInfo bidderInfo(OrtbVersion ortbVersion) { false, false, null, - Ortb.of(false)); + Ortb.of(false), + 0L); } private static BidRequest emptyRequest() { diff --git a/src/main/java/org/prebid/server/auction/ExchangeService.java b/src/main/java/org/prebid/server/auction/ExchangeService.java index c4b6dfd7a55..40c8ff86bde 100644 --- a/src/main/java/org/prebid/server/auction/ExchangeService.java +++ b/src/main/java/org/prebid/server/auction/ExchangeService.java @@ -1217,6 +1217,7 @@ private Future requestBids(BidderRequest bidderRequest, final String bidderName = bidderRequest.getBidder(); final String resolvedBidderName = aliases.resolveBidder(bidderName); final Bidder bidder = bidderCatalog.bidderByName(resolvedBidderName); + final long bidderTmaxDeductionMs = bidderCatalog.bidderInfoByName(resolvedBidderName).getTmaxDeductionMs(); final BidRejectionTracker bidRejectionTracker = auctionContext.getBidRejectionTrackers().get(bidderName); final TimeoutContext timeoutContext = auctionContext.getTimeoutContext(); @@ -1225,7 +1226,8 @@ private Future requestBids(BidderRequest bidderRequest, final long bidderRequestStartTime = clock.millis(); return Future.succeededFuture(bidderRequest.getBidRequest()) - .map(bidRequest -> adjustTmax(bidRequest, auctionStartTime, adjustmentFactor, bidderRequestStartTime)) + .map(bidRequest -> adjustTmax( + bidRequest, auctionStartTime, adjustmentFactor, bidderRequestStartTime, bidderTmaxDeductionMs)) .map(bidRequest -> ortbVersionConversionManager.convertFromAuctionSupportedVersion( bidRequest, bidderRequest.getOrtbVersion())) .map(bidderRequest::with) @@ -1240,9 +1242,16 @@ private Future requestBids(BidderRequest bidderRequest, .map(seatBid -> BidderResponse.of(bidderName, seatBid, responseTime(bidderRequestStartTime))); } - private BidRequest adjustTmax(BidRequest bidRequest, long startTime, int adjustmentFactor, long currentTime) { + private BidRequest adjustTmax(BidRequest bidRequest, + long startTime, + int adjustmentFactor, + long currentTime, + long bidderTmaxDeductionMs) { + final long tmax = timeoutResolver.limitToMax(bidRequest.getTmax()); - final long adjustedTmax = timeoutResolver.adjustForBidder(tmax, adjustmentFactor, currentTime - startTime); + final long adjustedTmax = timeoutResolver.adjustForBidder( + tmax, adjustmentFactor, currentTime - startTime, bidderTmaxDeductionMs); + return tmax != adjustedTmax ? bidRequest.toBuilder().tmax(adjustedTmax).build() : bidRequest; diff --git a/src/main/java/org/prebid/server/auction/TimeoutResolver.java b/src/main/java/org/prebid/server/auction/TimeoutResolver.java index 4b9d2411eb1..44ae2984aa1 100644 --- a/src/main/java/org/prebid/server/auction/TimeoutResolver.java +++ b/src/main/java/org/prebid/server/auction/TimeoutResolver.java @@ -32,16 +32,16 @@ public long limitToMax(Long timeout) { : Math.min(timeout, maxTimeout); } - public long adjustForBidder(long timeout, int adjustFactor, long spentTime) { - return adjustWithFactor(timeout, adjustFactor / 100.0, spentTime); + public long adjustForBidder(long timeout, int adjustFactor, long spentTime, long bidderTmaxDeductionMs) { + return adjustWithFactor(timeout, adjustFactor / 100.0, spentTime, bidderTmaxDeductionMs); } public long adjustForRequest(long timeout, long spentTime) { - return adjustWithFactor(timeout, 1.0, spentTime); + return adjustWithFactor(timeout, 1.0, spentTime, 0L); } - private long adjustWithFactor(long timeout, double adjustFactor, long spentTime) { - return limitToMin((long) (timeout * adjustFactor) - spentTime - upstreamResponseTime); + private long adjustWithFactor(long timeout, double adjustFactor, long spentTime, long deductionTime) { + return limitToMin((long) (timeout * adjustFactor) - spentTime - deductionTime - upstreamResponseTime); } private long limitToMin(long timeout) { diff --git a/src/main/java/org/prebid/server/bidder/BidderInfo.java b/src/main/java/org/prebid/server/bidder/BidderInfo.java index c9659135eb7..1ff8f323701 100644 --- a/src/main/java/org/prebid/server/bidder/BidderInfo.java +++ b/src/main/java/org/prebid/server/bidder/BidderInfo.java @@ -40,6 +40,8 @@ public class BidderInfo { Ortb ortb; + long tmaxDeductionMs; + public static BidderInfo create(boolean enabled, OrtbVersion ortbVersion, boolean debugAllowed, @@ -55,7 +57,8 @@ public static BidderInfo create(boolean enabled, boolean ccpaEnforced, boolean modifyingVastXmlAllowed, CompressionType compressionType, - org.prebid.server.spring.config.bidder.model.Ortb ortb) { + org.prebid.server.spring.config.bidder.model.Ortb ortb, + long tmaxDeductionMs) { return of( enabled, @@ -74,7 +77,8 @@ public static BidderInfo create(boolean enabled, ccpaEnforced, modifyingVastXmlAllowed, compressionType, - Ortb.of(ortb.getMultiFormatSupported())); + Ortb.of(ortb.getMultiFormatSupported()), + tmaxDeductionMs); } private static PlatformInfo platformInfo(List mediaTypes) { diff --git a/src/main/java/org/prebid/server/spring/config/bidder/model/BidderConfigurationProperties.java b/src/main/java/org/prebid/server/spring/config/bidder/model/BidderConfigurationProperties.java index 0f5fde1d480..a13e1aef3ec 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/model/BidderConfigurationProperties.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/model/BidderConfigurationProperties.java @@ -51,6 +51,8 @@ public class BidderConfigurationProperties { private Ortb ortb; + private long tmaxDeductionMs; + private final Class selfClass; public BidderConfigurationProperties() { diff --git a/src/main/java/org/prebid/server/spring/config/bidder/util/BidderInfoCreator.java b/src/main/java/org/prebid/server/spring/config/bidder/util/BidderInfoCreator.java index cd7553bb34a..8780225ff9f 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/util/BidderInfoCreator.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/util/BidderInfoCreator.java @@ -32,6 +32,7 @@ public static BidderInfo create(BidderConfigurationProperties configurationPrope configurationProperties.getPbsEnforcesCcpa(), configurationProperties.getModifyingVastXmlAllowed(), configurationProperties.getEndpointCompression(), - configurationProperties.getOrtb()); + configurationProperties.getOrtb(), + configurationProperties.getTmaxDeductionMs()); } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/TimeoutSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/TimeoutSpec.groovy index 99fa3b31a0e..cff45989db1 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/TimeoutSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/TimeoutSpec.groovy @@ -16,8 +16,10 @@ class TimeoutSpec extends BaseSpec { private static final int DEFAULT_TIMEOUT = getRandomTimeout() private static final int MIN_TIMEOUT = PBSUtils.getRandomNumber(50, 150) - private static final Map PBS_CONFIG = ["auction.biddertmax.max" : MAX_TIMEOUT as String, - "auction.biddertmax.min" : MIN_TIMEOUT as String] + private static final Long MAX_AUCTION_BIDDER_TIMEOUT = 3000 + private static final Long MIN_AUCTION_BIDDER_TIMEOUT = 1000 + private static final Map PBS_CONFIG = ["auction.biddertmax.max": MAX_AUCTION_BIDDER_TIMEOUT as String, + "auction.biddertmax.min": MIN_AUCTION_BIDDER_TIMEOUT as String] @Shared PrebidServerService prebidServerService = pbsServiceFactory.getService(PBS_CONFIG) @@ -136,9 +138,10 @@ class TimeoutSpec extends BaseSpec { and: "Pbs config with default request" def pbsContainer = new PrebidServerContainer( - ["default-request.file.path" : APP_WORKDIR + defaultRequest.fileName, - "auction.biddertmax.max" : MAX_TIMEOUT as String]).tap { - withCopyFileToContainer(MountableFile.forHostPath(defaultRequest), APP_WORKDIR) } + ["default-request.file.path": APP_WORKDIR + defaultRequest.fileName, + "auction.biddertmax.max" : MAX_TIMEOUT as String]).tap { + withCopyFileToContainer(MountableFile.forHostPath(defaultRequest), APP_WORKDIR) + } pbsContainer.start() def pbsService = new PrebidServerService(pbsContainer) @@ -284,8 +287,9 @@ class TimeoutSpec extends BaseSpec { def "PBS should choose min timeout form config for bidder request when in request value lowest that in auction.biddertmax.min"() { given: "PBS config with percent" def minBidderTmax = PBSUtils.getRandomNumber(MIN_TIMEOUT, MAX_TIMEOUT) - def prebidServerService = pbsServiceFactory.getService(["auction.biddertmax.min" : minBidderTmax as String, - "auction.biddertmax.max" : MAX_TIMEOUT as String]) + def prebidServerService = pbsServiceFactory.getService( + ["auction.biddertmax.min": minBidderTmax as String, + "auction.biddertmax.max": MAX_TIMEOUT as String]) and: "Default basic BidRequest" def timeout = PBSUtils.getRandomNumber(0, minBidderTmax) @@ -307,11 +311,14 @@ class TimeoutSpec extends BaseSpec { def "PBS should change timeout for bidder due to percent in auction.biddertmax.percent"() { given: "PBS config with percent" def percent = PBSUtils.getRandomNumber(2, 98) - def prebidServerService = pbsServiceFactory.getService(["auction.biddertmax.percent": percent as String] - + PBS_CONFIG) + def pbsConfig = ["auction.biddertmax.percent": percent as String, + "auction.biddertmax.max" : MAX_TIMEOUT as String, + "auction.biddertmax.min" : MIN_TIMEOUT as String] + def prebidServerService = pbsServiceFactory.getService( + pbsConfig) and: "Default basic BidRequest with generic bidder" - def timeout = getRandomTimeout() + def timeout = randomTimeout def bidRequest = BidRequest.defaultBidRequest.tap { tmax = timeout } @@ -321,17 +328,97 @@ class TimeoutSpec extends BaseSpec { then: "Bidder request should contain percent of request value" def bidderRequest = bidder.getBidderRequest(bidRequest.id) - assert isInternalProcessingTime(bidderRequest.tmax, getPercentOfValue(percent,timeout)) + assert isInternalProcessingTime(bidderRequest.tmax, getPercentOfValue(percent, timeout)) and: "PBS response should contain tmax from request" assert bidResponse?.ext?.tmaxrequest == timeout as Long + + cleanup: "Stop and remove pbs container" + pbsServiceFactory.removeContainer(pbsConfig) + } + + def "PBS should apply auction.biddertmax.max timeout when adapters.generic.tmax-deduction-ms exceeds valid top range"() { + given: "PBS config with adapters.generic.tmax-deduction-ms" + def pbsConfig = PBS_CONFIG + ["adapters.generic.tmax-deduction-ms": PBSUtils.getRandomNumber(MAX_AUCTION_BIDDER_TIMEOUT as int) as String] + def prebidServerService = pbsServiceFactory.getService(pbsConfig) + + and: "Default basic BidRequest with generic bidder" + def bidRequest = BidRequest.defaultBidRequest.tap { + tmax = randomTimeout + } + + when: "PBS processes auction request" + def bidResponse = prebidServerService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain min" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.tmax == MIN_AUCTION_BIDDER_TIMEOUT + + and: "PBS response should contain tmax" + assert bidResponse?.ext?.tmaxrequest == MAX_AUCTION_BIDDER_TIMEOUT + + cleanup: "Stop and remove pbs container" + pbsServiceFactory.removeContainer(pbsConfig) + } + + def "PBS should resolve timeout as usual when adapters.generic.tmax-deduction-ms specifies zero"() { + given: "PBS config with adapters.generic.tmax-deduction-ms" + def pbsConfig = ["adapters.generic.tmax-deduction-ms": "0"] + PBS_CONFIG + def prebidServerService = pbsServiceFactory.getService(pbsConfig) + + and: "Default basic BidRequest with generic bidder" + def timeout = PBSUtils.getRandomNumber( + MIN_AUCTION_BIDDER_TIMEOUT as int, + MAX_AUCTION_BIDDER_TIMEOUT as int) + def bidRequest = BidRequest.defaultBidRequest.tap { + tmax = timeout + } + + when: "PBS processes auction request" + def bidResponse = prebidServerService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain right value in tmax" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert isInternalProcessingTime(bidderRequest.tmax, timeout) + + and: "PBS response should contain tmax" + assert bidResponse?.ext?.tmaxrequest == timeout as Long + + cleanup: "Stop and remove pbs container" + pbsServiceFactory.removeContainer(pbsConfig) + } + + def "PBS should properly resolve tmax deduction ms when adapters.generic.tmax-deduction-ms specified"() { + given: "PBS config with adapters.generic.tmax-deduction-ms" + def genericDeductionMs = PBSUtils.getRandomNumber(100, 300) + def randomTimeout = PBSUtils.getRandomNumber(MIN_AUCTION_BIDDER_TIMEOUT + genericDeductionMs as int, MAX_AUCTION_BIDDER_TIMEOUT as int) + def pbsConfig = PBS_CONFIG + ["adapters.generic.tmax-deduction-ms": genericDeductionMs as String] + def prebidServerService = pbsServiceFactory.getService(pbsConfig) + + and: "Default basic BidRequest with generic bidder" + def bidRequest = BidRequest.defaultBidRequest.tap { + tmax = randomTimeout + } + + when: "PBS processes auction request" + def bidResponse = prebidServerService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain right value in tmax" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert isInternalProcessingTime(bidderRequest.tmax, randomTimeout) + + and: "PBS response should contain tmax" + assert bidResponse?.ext?.tmaxrequest == randomTimeout as Long + + cleanup: "Stop and remove pbs container" + pbsServiceFactory.removeContainer(pbsConfig) } private static long getPercentOfValue(int percent, int value) { (percent * value) / 100.0 as Long } - private static boolean isInternalProcessingTime(long bidderRequestTimeout, long requestTimeout){ + private static boolean isInternalProcessingTime(long bidderRequestTimeout, long requestTimeout) { 0 < requestTimeout - bidderRequestTimeout } } diff --git a/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java b/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java index bfecf6632f9..41c25ea200e 100644 --- a/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java +++ b/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java @@ -310,7 +310,8 @@ public void setUp() { false, false, CompressionType.NONE, - Ortb.of(false))); + Ortb.of(false), + 0L)); given(privacyEnforcementService.mask(any(), argThat(MapUtils::isNotEmpty), any())) .willAnswer(inv -> @@ -381,7 +382,7 @@ public void setUp() { given(criteriaLogManager.traceResponse(any(), any(), any(), anyBoolean())) .willAnswer(inv -> inv.getArgument(1)); - given(timeoutResolver.adjustForBidder(anyLong(), anyInt(), anyLong())) + given(timeoutResolver.adjustForBidder(anyLong(), anyInt(), anyLong(), anyLong())) .willAnswer(invocation -> invocation.getArgument(0)); given(timeoutResolver.adjustForRequest(anyLong(), anyLong())) @@ -3774,7 +3775,9 @@ public void shouldResponseWithEmptySeatBidIfBidderNotSupportRequestCurrency() { false, false, CompressionType.NONE, - Ortb.of(false))); + Ortb.of(false), + 0L)); + given(bidResponseCreator.create( argThat(argument -> argument.getAuctionParticipations().getFirst() .getBidderResponse() @@ -3837,17 +3840,35 @@ public void shouldConvertBidRequestOpenRTBVersionToConfiguredByBidder() { @Test public void shouldPassAdjustedTimeoutToAdapterAndToBidResponseCreator() { // given - given(timeoutResolver.adjustForBidder(anyLong(), eq(90), anyLong())) - .willReturn(400L); - given(timeoutResolver.adjustForRequest(anyLong(), anyLong())) - .willReturn(450L); + given(bidderCatalog.bidderInfoByName(anyString())).willReturn(BidderInfo.create( + true, + null, + false, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + false, + false, + CompressionType.NONE, + Ortb.of(false), + 100L)); + + given(timeoutResolver.adjustForBidder(anyLong(), eq(90), eq(200L), eq(100L))).willReturn(400L); + given(timeoutResolver.adjustForRequest(anyLong(), eq(200L))).willReturn(450L); final BidRequest bidRequest = givenBidRequest( givenSingleImp(singletonMap("bidderName", 1)), request -> request.source(Source.builder().tid("uniqTid").build())); // when - target.holdAuction(givenRequestContext(bidRequest)); + target.holdAuction(givenRequestContext(bidRequest).toBuilder() + .timeoutContext(TimeoutContext.of(clock.millis() - 200L, timeout, 90)).build()); // then final ArgumentCaptor bidderRequestCaptor = ArgumentCaptor.forClass(BidderRequest.class); diff --git a/src/test/java/org/prebid/server/auction/TimeoutResolverTest.java b/src/test/java/org/prebid/server/auction/TimeoutResolverTest.java index 746b7b8cb4a..d1ebf4d3f0a 100644 --- a/src/test/java/org/prebid/server/auction/TimeoutResolverTest.java +++ b/src/test/java/org/prebid/server/auction/TimeoutResolverTest.java @@ -53,12 +53,12 @@ public void limitToMaxShouldReturnMaxTimeout() { @Test public void adjustForBidderShouldReturnExpectedResult() { - assertThat(timeoutResolver.adjustForBidder(200L, 70, 10L)).isEqualTo(120L); + assertThat(timeoutResolver.adjustForBidder(300L, 70, 10L, 50L)).isEqualTo(140L); } @Test public void adjustForBidderShouldReturnMinTimeout() { - assertThat(timeoutResolver.adjustForBidder(200L, 50, 10L)).isEqualTo(MIN_TIMEOUT); + assertThat(timeoutResolver.adjustForBidder(200L, 50, 10L, 100L)).isEqualTo(MIN_TIMEOUT); } @Test diff --git a/src/test/java/org/prebid/server/auction/mediatypeprocessor/BidderMediaTypeProcessorTest.java b/src/test/java/org/prebid/server/auction/mediatypeprocessor/BidderMediaTypeProcessorTest.java index 60ff60318e1..16875667fae 100644 --- a/src/test/java/org/prebid/server/auction/mediatypeprocessor/BidderMediaTypeProcessorTest.java +++ b/src/test/java/org/prebid/server/auction/mediatypeprocessor/BidderMediaTypeProcessorTest.java @@ -175,7 +175,8 @@ private static BidderInfo givenBidderInfo(List appMediaTypes, false, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); } private static BidRequest givenBidRequest(UnaryOperator bidRequestCustomizer, diff --git a/src/test/java/org/prebid/server/auction/mediatypeprocessor/MultiFormatMediaTypeProcessorTest.java b/src/test/java/org/prebid/server/auction/mediatypeprocessor/MultiFormatMediaTypeProcessorTest.java index e2394769585..61bf49b8745 100644 --- a/src/test/java/org/prebid/server/auction/mediatypeprocessor/MultiFormatMediaTypeProcessorTest.java +++ b/src/test/java/org/prebid/server/auction/mediatypeprocessor/MultiFormatMediaTypeProcessorTest.java @@ -279,7 +279,8 @@ private static BidderInfo givenBidderInfo(boolean multiFormatSupported) { false, false, CompressionType.NONE, - Ortb.of(multiFormatSupported)); + Ortb.of(multiFormatSupported), + 0L); } private static BidRequest givenBidRequest(UnaryOperator bidRequestCustomizer, diff --git a/src/test/java/org/prebid/server/auction/privacy/enforcement/CcpaEnforcementTest.java b/src/test/java/org/prebid/server/auction/privacy/enforcement/CcpaEnforcementTest.java index 9bf76d427f9..178e48ff97d 100644 --- a/src/test/java/org/prebid/server/auction/privacy/enforcement/CcpaEnforcementTest.java +++ b/src/test/java/org/prebid/server/auction/privacy/enforcement/CcpaEnforcementTest.java @@ -79,7 +79,8 @@ public void setUp() { true, false, null, - Ortb.of(false))); + Ortb.of(false), + 0L)); target = new CcpaEnforcement(userFpdCcpaMask, bidderCatalog, metrics, true); @@ -222,7 +223,8 @@ public void enforceShouldSkipNoSaleBiddersAndNotEnforcedByBidderConfig() { false, false, null, - Ortb.of(false))); + Ortb.of(false), + 0L)); final AuctionContext auctionContext = givenAuctionContext(identity()); diff --git a/src/test/java/org/prebid/server/bidder/BidderCatalogTest.java b/src/test/java/org/prebid/server/bidder/BidderCatalogTest.java index f2e0207fc4a..44a3253c143 100644 --- a/src/test/java/org/prebid/server/bidder/BidderCatalogTest.java +++ b/src/test/java/org/prebid/server/bidder/BidderCatalogTest.java @@ -99,7 +99,8 @@ public void metaInfoByNameShouldReturnMetaInfoForKnownBidderIgnoringCase() { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); final BidderDeps bidderDeps = BidderDeps.of(singletonList(BidderInstanceDeps.builder() .name("BIDder") @@ -132,7 +133,8 @@ public void isAliasShouldReturnTrueForAliasIgnoringCase() { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); final BidderInstanceDeps bidderInstanceDeps = BidderInstanceDeps.builder() .name("BIDder") @@ -156,7 +158,8 @@ public void isAliasShouldReturnTrueForAliasIgnoringCase() { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); final BidderInstanceDeps aliasInstanceDeps = BidderInstanceDeps.builder() .name("ALIas") @@ -193,7 +196,8 @@ public void resolveBaseBidderShouldReturnBaseBidderName() { true, false, CompressionType.NONE, - Ortb.of(false))) + Ortb.of(false), + 0L)) .deprecatedNames(emptyList()) .build())); target = new BidderCatalog(singletonList(bidderDeps)); @@ -260,7 +264,8 @@ public void usersyncReadyBiddersShouldReturnBiddersThatCanSync() { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); final BidderInfo infoOfBidderWithoutUsersyncConfig = BidderInfo.create( true, @@ -278,7 +283,8 @@ public void usersyncReadyBiddersShouldReturnBiddersThatCanSync() { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); final BidderInfo infoOfDisabledBidderWithUsersyncConfig = BidderInfo.create( false, @@ -296,7 +302,8 @@ public void usersyncReadyBiddersShouldReturnBiddersThatCanSync() { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); final List bidderDeps = List.of( BidderDeps.of(singletonList(BidderInstanceDeps.builder() @@ -365,7 +372,8 @@ public void nameByVendorIdShouldReturnBidderNameForVendorId() { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); final BidderDeps bidderDeps = BidderDeps.of(singletonList(BidderInstanceDeps.builder() .name("BIDder") diff --git a/src/test/java/org/prebid/server/bidder/HttpBidderRequestEnricherTest.java b/src/test/java/org/prebid/server/bidder/HttpBidderRequestEnricherTest.java index 38cad500e7b..4773319266a 100644 --- a/src/test/java/org/prebid/server/bidder/HttpBidderRequestEnricherTest.java +++ b/src/test/java/org/prebid/server/bidder/HttpBidderRequestEnricherTest.java @@ -174,7 +174,8 @@ public void shouldAddContentEncodingHeaderIfRequiredByBidderConfig() { false, false, CompressionType.GZIP, - Ortb.of(false))); + Ortb.of(false), + 0L)); final CaseInsensitiveMultiMap originalHeaders = CaseInsensitiveMultiMap.builder().build(); @@ -212,7 +213,8 @@ public void shouldAddContentEncodingHeaderIfRequiredByBidderAliasConfig() { false, false, CompressionType.GZIP, - Ortb.of(false))); + Ortb.of(false), + 0L)); final CaseInsensitiveMultiMap originalHeaders = CaseInsensitiveMultiMap.builder().build(); diff --git a/src/test/java/org/prebid/server/handler/info/BidderDetailsHandlerTest.java b/src/test/java/org/prebid/server/handler/info/BidderDetailsHandlerTest.java index d8589113f31..36bd669610f 100644 --- a/src/test/java/org/prebid/server/handler/info/BidderDetailsHandlerTest.java +++ b/src/test/java/org/prebid/server/handler/info/BidderDetailsHandlerTest.java @@ -199,7 +199,8 @@ private static BidderInfo givenBidderInfo(boolean enabled, String endpoint, Stri true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); } private static BidderInfo givenBidderInfo() { diff --git a/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java b/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java index a14c6141355..674c4026a72 100644 --- a/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java +++ b/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java @@ -398,7 +398,8 @@ private static BidderInfo givenBidderInfo(String aliasOf) { true, false, CompressionType.NONE, - Ortb.of(false)); + Ortb.of(false), + 0L); } private static BidderInfo givenBidderInfo() {