Skip to content

Commit e441723

Browse files
jaiminpanchal27dbemiller
authored andcommitted
Auction module refactor (#1644)
* Auction moduel refactor * remove comment and global cbtimeout
1 parent 8f34dd5 commit e441723

File tree

5 files changed

+61
-87
lines changed

5 files changed

+61
-87
lines changed

src/auction.js

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -82,25 +82,25 @@ events.on(CONSTANTS.EVENTS.BID_ADJUSTMENT, function (bid) {
8282
*
8383
* @returns {Auction} auction instance
8484
*/
85-
function newAuction({adUnits, adUnitCodes}) {
85+
export function newAuction({adUnits, adUnitCodes, callback, cbTimeout}) {
8686
let _adUnits = adUnits;
8787
let _adUnitCodes = adUnitCodes;
8888
let _bidderRequests = [];
8989
let _bidsReceived = [];
9090
let _auctionStart;
9191
let _auctionId = utils.getUniqueIdentifierStr();
9292
let _auctionStatus;
93-
let _callback;
93+
let _callback = callback;
9494
let _timer;
95+
let _timeout = cbTimeout;
9596

9697
function addBidRequests(bidderRequests) { _bidderRequests = _bidderRequests.concat(bidderRequests) };
9798
function addBidReceived(bidsReceived) { _bidsReceived = _bidsReceived.concat(bidsReceived); }
9899

99-
function startAuctionTimer(callback, cbtimeout) {
100-
_callback = callback;
100+
function startAuctionTimer() {
101101
const timedOut = true;
102102
const timeoutCallback = executeCallback.bind(null, timedOut);
103-
let timer = setTimeout(timeoutCallback, cbtimeout);
103+
let timer = setTimeout(timeoutCallback, _timeout);
104104
_timer = timer;
105105
}
106106

@@ -301,7 +301,7 @@ function newAuction({adUnits, adUnitCodes}) {
301301
}
302302

303303
function doCallbacksIfNeeded() {
304-
if (bid.timeToRespond > $$PREBID_GLOBAL$$.cbTimeout + $$PREBID_GLOBAL$$.timeoutBuffer) {
304+
if (bid.timeToRespond > _timeout + $$PREBID_GLOBAL$$.timeoutBuffer) {
305305
executeCallback(true);
306306
}
307307
}
@@ -334,18 +334,19 @@ function newAuction({adUnits, adUnitCodes}) {
334334
}
335335
}
336336

337-
function callBids(cbTimeout) {
337+
function callBids() {
338+
startAuctionTimer();
338339
_auctionStatus = AUCTION_STARTED;
339340
_auctionStart = Date.now();
340341

341342
const auctionInit = {
342343
timestamp: _auctionStart,
343344
auctionId: _auctionId,
344-
timeout: cbTimeout
345+
timeout: _timeout
345346
};
346347
events.emit(CONSTANTS.EVENTS.AUCTION_INIT, auctionInit);
347348

348-
let bidRequests = adaptermanager.makeBidRequests(_adUnits, _auctionStart, _auctionId, cbTimeout);
349+
let bidRequests = adaptermanager.makeBidRequests(_adUnits, _auctionStart, _auctionId, _timeout);
349350
utils.logInfo(`Bids Requested for Auction with id: ${_auctionId}`, bidRequests);
350351
bidRequests.forEach(bidRequest => {
351352
addBidRequests(bidRequest);
@@ -361,7 +362,6 @@ function newAuction({adUnits, adUnitCodes}) {
361362
getAdUnitCodes: () => _adUnitCodes,
362363
getBidRequests: () => _bidderRequests,
363364
getBidsReceived: () => _bidsReceived,
364-
startAuctionTimer,
365365
callBids
366366
}
367367
}
@@ -513,7 +513,3 @@ function groupByPlacement(bidsByPlacement, bid) {
513513
bidsByPlacement[bid.adUnitCode].bids.push(bid);
514514
return bidsByPlacement;
515515
}
516-
517-
export function createAuction({adUnits, adUnitCodes}) {
518-
return newAuction({adUnits, adUnitCodes});
519-
}

src/auctionManager.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818

1919
import { uniques, flatten } from './utils';
20-
import { createAuction, getStandardBidderSettings, AUCTION_COMPLETED } from 'src/auction';
20+
import { newAuction, getStandardBidderSettings, AUCTION_COMPLETED } from 'src/auction';
2121

2222
const CONSTANTS = require('./constants.json');
2323

@@ -60,8 +60,10 @@ export function newAuctionManager() {
6060
.filter(uniques);
6161
};
6262

63-
_public.createAuction = function({ adUnits, adUnitCodes }) {
64-
return _createAuction({ adUnits, adUnitCodes });
63+
_public.createAuction = function({ adUnits, adUnitCodes, callback, cbTimeout }) {
64+
const auction = newAuction({ adUnits, adUnitCodes, callback, cbTimeout })
65+
_addAuction(auction);
66+
return auction;
6567
};
6668

6769
_public.findBidByAdId = function(adId) {
@@ -74,12 +76,6 @@ export function newAuctionManager() {
7476
return getStandardBidderSettings()[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING];
7577
};
7678

77-
function _createAuction({ adUnits, adUnitCodes }) {
78-
const auction = createAuction({ adUnits, adUnitCodes })
79-
_addAuction(auction);
80-
return auction;
81-
}
82-
8379
function _addAuction(auction) {
8480
_auctions.push(auction);
8581
}

src/prebid.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ $$PREBID_GLOBAL$$.bidderSettings = $$PREBID_GLOBAL$$.bidderSettings || {};
4242
/** @deprecated - use pbjs.setConfig({ bidderTimeout: <timeout> }) */
4343
$$PREBID_GLOBAL$$.bidderTimeout = $$PREBID_GLOBAL$$.bidderTimeout;
4444

45-
// current timeout set in `requestBids` or to default `bidderTimeout`
46-
$$PREBID_GLOBAL$$.cbTimeout = $$PREBID_GLOBAL$$.cbTimeout || 200;
47-
4845
// timeout buffer to adjust for bidder CDN latency
4946
$$PREBID_GLOBAL$$.timeoutBuffer = 200;
5047

@@ -308,7 +305,7 @@ $$PREBID_GLOBAL$$.removeAdUnit = function (adUnitCode) {
308305
*/
309306
$$PREBID_GLOBAL$$.requestBids = function ({ bidsBackHandler, timeout, adUnits, adUnitCodes } = {}) {
310307
events.emit('requestBids');
311-
const cbTimeout = $$PREBID_GLOBAL$$.cbTimeout = timeout || config.getConfig('bidderTimeout');
308+
const cbTimeout = timeout || config.getConfig('bidderTimeout');
312309
adUnits = adUnits || $$PREBID_GLOBAL$$.adUnits;
313310

314311
utils.logInfo('Invoking $$PREBID_GLOBAL$$.requestBids', arguments);
@@ -354,11 +351,8 @@ $$PREBID_GLOBAL$$.requestBids = function ({ bidsBackHandler, timeout, adUnits, a
354351
return;
355352
}
356353

357-
const auction = auctionManager.createAuction({adUnits, adUnitCodes});
358-
if (typeof bidsBackHandler === 'function') {
359-
auction.startAuctionTimer(bidsBackHandler, cbTimeout);
360-
}
361-
auction.callBids(cbTimeout);
354+
const auction = auctionManager.createAuction({adUnits, adUnitCodes, callback: bidsBackHandler, cbTimeout});
355+
auction.callBids();
362356
};
363357

364358
/**

test/spec/auctionmanager_spec.js

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -470,8 +470,8 @@ describe('auctionmanager.js', function () {
470470
]
471471
}];
472472
adUnitCodes = ['adUnit-code'];
473-
auction = auctionModule.createAuction({adUnits, adUnitCodes});
474-
createAuctionStub = sinon.stub(auctionModule, 'createAuction');
473+
auction = auctionModule.newAuction({adUnits, adUnitCodes, callback: function() {}, cbTimeout: 3000});
474+
createAuctionStub = sinon.stub(auctionModule, 'newAuction');
475475
createAuctionStub.returns(auction);
476476

477477
spec = {
@@ -484,7 +484,7 @@ describe('auctionmanager.js', function () {
484484
});
485485

486486
afterEach(() => {
487-
auctionModule.createAuction.restore();
487+
auctionModule.newAuction.restore();
488488
});
489489

490490
it('should return proper price bucket increments for dense mode when cpm is in range 0-3', () => {
@@ -493,7 +493,7 @@ describe('auctionmanager.js', function () {
493493
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
494494
spec.isBidRequestValid.returns(true);
495495
spec.interpretResponse.returns(bids);
496-
auction.callBids(3000);
496+
auction.callBids();
497497
let registeredBid = auction.getBidsReceived().pop();
498498
assert.equal(registeredBid.pbDg, '1.99', '0 - 3 hits at to 1 cent increment');
499499
});
@@ -504,7 +504,7 @@ describe('auctionmanager.js', function () {
504504
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
505505
spec.isBidRequestValid.returns(true);
506506
spec.interpretResponse.returns(bids);
507-
auction.callBids(3000);
507+
auction.callBids();
508508
let registeredBid = auction.getBidsReceived().pop();
509509
assert.equal(registeredBid.pbDg, '4.35', '3 - 8 hits at 5 cent increment');
510510
});
@@ -515,7 +515,7 @@ describe('auctionmanager.js', function () {
515515
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
516516
spec.isBidRequestValid.returns(true);
517517
spec.interpretResponse.returns(bids);
518-
auction.callBids(3000);
518+
auction.callBids();
519519
let registeredBid = auction.getBidsReceived().pop();
520520
assert.equal(registeredBid.pbDg, '19.50', '8 - 20 hits at 50 cent increment');
521521
});
@@ -526,7 +526,7 @@ describe('auctionmanager.js', function () {
526526
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
527527
spec.isBidRequestValid.returns(true);
528528
spec.interpretResponse.returns(bids);
529-
auction.callBids(3000);
529+
auction.callBids();
530530
let registeredBid = auction.getBidsReceived().pop();
531531
assert.equal(registeredBid.pbDg, '20.00', '20+ caps at 20.00');
532532
});
@@ -537,7 +537,7 @@ describe('auctionmanager.js', function () {
537537
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
538538
spec.isBidRequestValid.returns(true);
539539
spec.interpretResponse.returns(bids);
540-
auction.callBids(3000);
540+
auction.callBids();
541541
let registeredBid = auction.getBidsReceived().pop();
542542
assert.equal(registeredBid.adserverTargeting[`hb_deal`], 'test deal', 'dealId placed in adserverTargeting');
543543
});
@@ -549,7 +549,7 @@ describe('auctionmanager.js', function () {
549549
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
550550
spec.isBidRequestValid.returns(true);
551551
spec.interpretResponse.returns(bids);
552-
auction.callBids(3000);
552+
auction.callBids();
553553
let registeredBid = auction.getBidsReceived().pop();
554554
assert.equal(registeredBid.adserverTargeting.hb_bidder, 'sampleBidder');
555555
assert.equal(registeredBid.adserverTargeting.extra, 'stuff');
@@ -578,7 +578,7 @@ describe('auctionmanager.js', function () {
578578
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
579579
spec.isBidRequestValid.returns(true);
580580
spec.interpretResponse.returns(bids1);
581-
auction.callBids(3000);
581+
auction.callBids();
582582
assert.equal(bidsRecCount + 1, auction.getBidsReceived().length);
583583

584584
utils.getBidRequest.restore();
@@ -608,7 +608,7 @@ describe('auctionmanager.js', function () {
608608
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
609609
spec.isBidRequestValid.returns(true);
610610
spec.interpretResponse.returns(bids1);
611-
auction.callBids(3000);
611+
auction.callBids();
612612
assert.equal(bidsRecCount, auction.getBidsReceived().length);
613613

614614
utils.getBidRequest.restore();
@@ -640,7 +640,7 @@ describe('auctionmanager.js', function () {
640640
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
641641
spec.isBidRequestValid.returns(true);
642642
spec.interpretResponse.returns(bids1);
643-
auction.callBids(3000);
643+
auction.callBids();
644644
assert.equal(bidsRecCount + 1, auction.getBidsReceived().length);
645645

646646
utils.getBidRequest.restore();
@@ -685,7 +685,7 @@ describe('auctionmanager.js', function () {
685685
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
686686
spec.isBidRequestValid.returns(true);
687687
spec.interpretResponse.returns(bids1);
688-
auction.callBids(3000);
688+
auction.callBids();
689689
const addedBid = auction.getBidsReceived().pop();
690690
assert.equal(addedBid.renderer.url, 'renderer.js');
691691
});
@@ -729,7 +729,7 @@ describe('auctionmanager.js', function () {
729729
spec.buildRequests.returns([{'id': 123, 'method': 'POST'}]);
730730
spec.isBidRequestValid.returns(true);
731731
spec.interpretResponse.returns(bids1);
732-
auction.callBids(3000);
732+
auction.callBids();
733733
const addedBid = auction.getBidsReceived().pop();
734734

735735
assert.equal(addedBid.width, 300);
@@ -836,8 +836,8 @@ describe('auctionmanager.js', function () {
836836
]
837837
}];
838838
adUnitCodes = ['adUnit-code', 'adUnit-code-1'];
839-
auction = auctionModule.createAuction({adUnits, adUnitCodes});
840-
createAuctionStub = sinon.stub(auctionModule, 'createAuction');
839+
auction = auctionModule.newAuction({adUnits, adUnitCodes, callback: function() {}, cbTimeout: 3000});
840+
createAuctionStub = sinon.stub(auctionModule, 'newAuction');
841841
createAuctionStub.returns(auction);
842842

843843
spec = {
@@ -858,7 +858,7 @@ describe('auctionmanager.js', function () {
858858
});
859859

860860
afterEach(() => {
861-
auctionModule.createAuction.restore();
861+
auctionModule.newAuction.restore();
862862
});
863863

864864
it('should not alter bid adID', () => {
@@ -873,7 +873,7 @@ describe('auctionmanager.js', function () {
873873
spec1.isBidRequestValid.returns(true);
874874
spec1.interpretResponse.returns(bids1);
875875

876-
auction.callBids(3000);
876+
auction.callBids();
877877

878878
const addedBid2 = auction.getBidsReceived().pop();
879879
assert.equal(addedBid2.adId, bids1[0].requestId);
@@ -896,7 +896,7 @@ describe('auctionmanager.js', function () {
896896
spec1.isBidRequestValid.returns(true);
897897
spec1.interpretResponse.returns(bids1);
898898

899-
auction.callBids(3000);
899+
auction.callBids();
900900

901901
let length = auction.getBidsReceived().length;
902902
const addedBid2 = auction.getBidsReceived().pop();

0 commit comments

Comments
 (0)