Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1473,6 +1473,7 @@ private List<AuctionParticipation> updateResponsesMetrics(List<AuctionParticipat
if (CollectionUtils.isEmpty(bidderBids)) {
metrics.updateAdapterRequestNobidMetrics(bidder, account);
} else {
metrics.updateAccountRequestGotbidsMetric(account.getId());
metrics.updateAdapterRequestGotbidsMetrics(bidder, account);

for (final BidderBid bidderBid : bidderBids) {
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/org/prebid/server/metric/Metrics.java
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,10 @@ public void updateAccountRequestRejectedByFailedFetch(String accountId) {
updateAccountRequestsMetrics(accountId, MetricName.rejected_by_account_fetch_failed);
}

public void updateAccountRequestGotbidsMetric(String accountId) {
updateAccountRequestsMetrics(accountId, MetricName.gotbids);
}

private void updateAccountRequestsMetrics(String accountId, MetricName metricName) {
forAccount(accountId).requests().incCounter(metricName);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import org.prebid.server.functional.model.request.auction.Site
import org.prebid.server.functional.model.response.auction.BidResponse
import org.prebid.server.functional.service.PrebidServerService

import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR
import static org.prebid.server.functional.model.config.AccountMetricsVerbosityLevel.BASIC
import static org.prebid.server.functional.model.config.AccountMetricsVerbosityLevel.DETAILED
import static org.prebid.server.functional.model.config.AccountMetricsVerbosityLevel.NONE
Expand All @@ -24,7 +25,7 @@ class MetricsSpec extends BaseSpec {
flushMetrics(softPrebidService)
}

def "PBS should not populate account metric when verbosity level is none"() {
def "PBS should only populate requests.gotbids account metric when verbosity level is none"() {
given: "Default basic BidRequest with generic bidder"
def bidRequest = BidRequest.defaultBidRequest

Expand All @@ -39,7 +40,8 @@ class MetricsSpec extends BaseSpec {

then: "account.<account-id>.* metric shouldn't be populated"
def metrics = defaultPbsService.sendCollectedMetricsRequest()
assert !metrics.find { it.key.startsWith("account.${accountId}") }
def filteredMetrics = metrics.findAll { it.key != "account.${accountId}.requests.gotbids" }
assert !filteredMetrics.find { it.key.startsWith("account.${accountId}") }
}

def "PBS should update account.<account-id>.requests metric when verbosity level is basic"() {
Expand Down Expand Up @@ -94,9 +96,44 @@ class MetricsSpec extends BaseSpec {
assert metrics["account.${accountId}.adapter.generic.request_time" as String] == 1
assert metrics["account.${accountId}.adapter.generic.requests.gotbids" as String] == 1
assert metrics["account.${accountId}.requests" as String] == 1
assert metrics["account.${accountId}.requests.gotbids" as String] == 1
assert metrics["account.${accountId}.requests.type.openrtb2-web" as String] == 1
}

def "PBS should not populate bid-related account metrics for failed bidder response when verbosity level is detailed"() {
given: "Default basic BidRequest with generic bidder"
def bidRequest = BidRequest.defaultBidRequest

and: "Default basic BidResponse with bid price"
def bidResponse = BidResponse.getDefaultBidResponse(bidRequest)

and: "Set bidder response to internal server error"
bidder.setResponse(bidRequest.id, bidResponse, SC_INTERNAL_SERVER_ERROR)

and: "Account in the DB"
def accountId = bidRequest.site.publisher.id
def accountMetricsConfig = new AccountConfig(metrics: new AccountMetricsConfig(verbosityLevel: DETAILED))
def account = new Account(uuid: accountId, config: accountMetricsConfig)
accountDao.save(account)

when: "PBS processes auction request"
defaultPbsService.sendAuctionRequest(bidRequest)

then: "General request metrics should be populated"
def metrics = defaultPbsService.sendCollectedMetricsRequest()
assert metrics["account.${accountId}.requests" as String] == 1
assert metrics["account.${accountId}.requests.type.openrtb2-web" as String] == 1

and: "Adapter request time should be populated"
assert metrics["account.${accountId}.adapter.generic.request_time" as String] == 1

and: "Bid-related metrics should not be populated due to bidder error"
assert !metrics["account.${accountId}.requests.gotbids" as String]
assert !metrics["account.${accountId}.adapter.generic.requests.gotbids" as String]
assert !metrics["account.${accountId}.adapter.generic.bids_received" as String]
assert !metrics["account.${accountId}.adapter.generic.prices" as String]
}

def "PBS should update hood metrics when bid request contains hood channel type and verbosity level is detailed"() {
given: "Default basic BidRequest with generic bidder"
def bidRequest = BidRequest.getDefaultBidRequest(DOOH)
Expand Down Expand Up @@ -183,8 +220,8 @@ class MetricsSpec extends BaseSpec {

where:
bidRequest << [BidRequest.getDefaultBidRequest(APP).tap {
it.dooh = Dooh.defaultDooh
},
it.dooh = Dooh.defaultDooh
},
BidRequest.getDefaultBidRequest(APP).tap {
it.site = Site.defaultSite
},
Expand Down
9 changes: 9 additions & 0 deletions src/test/java/org/prebid/server/metric/MetricsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,15 @@ public void updateAdapterRequestGotbidsMetricsShouldIncrementMetrics() {
.isEqualTo(2);
}

@Test
public void updateAccountRequestGotbidsMetricsShouldIncrementMetric() {
// when
metrics.updateAccountRequestGotbidsMetric(ACCOUNT_ID);

// then
assertThat(metricRegistry.counter("account.accountId.requests.gotbids").getCount()).isOne();
}

@Test
public void updateAdapterBidMetricsShouldUpdateMetrics() {
// when
Expand Down
Loading