Skip to content

Commit

Permalink
PubMatic Analytics Adapter : log partner latency value using timeToRe…
Browse files Browse the repository at this point in the history
…spond property (#10497)

* Log time to respond in l1 as latency

* Addressed code review changes

* Added comments for future reference
  • Loading branch information
kapil-tuptewar committed Sep 18, 2023
1 parent 7df304f commit 2588459
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 14 deletions.
7 changes: 6 additions & 1 deletion modules/pubmaticAnalyticsAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,8 @@ function gatherPartnerBidsForAdUnitForLogger(adUnit, adUnitId, highestBid) {
'en': bid.bidResponse ? bid.bidResponse.bidPriceUSD : 0,
'di': bid.bidResponse ? (bid.bidResponse.dealId || OPEN_AUCTION_DEAL_ID) : OPEN_AUCTION_DEAL_ID,
'dc': bid.bidResponse ? (bid.bidResponse.dealChannel || EMPTY_STRING) : EMPTY_STRING,
'l1': bid.bidResponse ? bid.clientLatencyTimeMs : 0,
'l1': bid.bidResponse ? bid.partnerTimeToRespond : 0,
'ol1': bid.bidResponse ? bid.clientLatencyTimeMs : 0,
'l2': 0,
'adv': bid.bidResponse ? getAdDomain(bid.bidResponse) || undefined : undefined,
'ss': isS2SBidder(bid.bidder),
Expand Down Expand Up @@ -507,6 +508,10 @@ function bidResponseHandler(args) {
bid.adId = args.adId;
bid.source = formatSource(bid.source || args.source);
setBidStatus(bid, args);
const latency = args?.timeToRespond || Date.now() - cache.auctions[args.auctionId].timestamp;
const auctionTime = cache.auctions[args.auctionId].timeout;
// Check if latency is greater than auctiontime+150, then log auctiontime+150 to avoid large numbers
bid.partnerTimeToRespond = latency > (auctionTime + 150) ? (auctionTime + 150) : latency;
bid.clientLatencyTimeMs = Date.now() - cache.auctions[args.auctionId].timestamp;
bid.bidResponse = parseBidResponse(args);
}
Expand Down
39 changes: 26 additions & 13 deletions test/spec/modules/pubmaticAnalyticsAdapter_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[0].ps[0].en).to.equal(1.23);
expect(data.s[0].ps[0].di).to.equal('-1');
expect(data.s[0].ps[0].dc).to.equal('');
expect(data.s[0].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[0].ps[0].l2).to.equal(0);
expect(data.s[0].ps[0].ss).to.equal(1);
expect(data.s[0].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -417,7 +418,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -794,7 +796,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(0);
expect(data.s[0].ps[0].ol1).to.equal(0);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(1);
Expand Down Expand Up @@ -853,7 +856,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -901,7 +905,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -958,7 +963,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -1012,7 +1018,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -1067,7 +1074,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -1126,7 +1134,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -1198,7 +1207,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[0].ps[0].en).to.equal(1.23);
expect(data.s[0].ps[0].di).to.equal('-1');
expect(data.s[0].ps[0].dc).to.equal('');
expect(data.s[0].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[0].ps[0].l2).to.equal(0);
expect(data.s[0].ps[0].ss).to.equal(0);
expect(data.s[0].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -1228,7 +1238,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -1317,7 +1328,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[0].ps[0].en).to.equal(1.23);
expect(data.s[0].ps[0].di).to.equal('-1');
expect(data.s[0].ps[0].dc).to.equal('');
expect(data.s[0].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[0].ps[0].l2).to.equal(0);
expect(data.s[0].ps[0].ss).to.equal(0);
expect(data.s[0].ps[0].t).to.equal(0);
Expand Down Expand Up @@ -1346,7 +1358,8 @@ describe('pubmatic analytics adapter', function () {
expect(data.s[1].ps[0].dc).to.equal('PMP');
expect(data.s[1].ps[0].mi).to.equal('matched-impression');
expect(data.s[1].ps[0].adv).to.equal('example.com');
expect(data.s[1].ps[0].l1).to.equal(3214);
expect(data.s[0].ps[0].l1).to.equal(944);
expect(data.s[0].ps[0].ol1).to.equal(3214);
expect(data.s[1].ps[0].l2).to.equal(0);
expect(data.s[1].ps[0].ss).to.equal(1);
expect(data.s[1].ps[0].t).to.equal(0);
Expand Down

0 comments on commit 2588459

Please sign in to comment.