def ChannelProxy_update_triggers(self, ids): tlog(10, "ChannelProxy.update_triggers(ids=%s)" % ids) def channelFilter(channel): return channel.channel_id in ids channels = filter(channelFilter, self.channelById) tlog(10, "ChannelProxy.update_triggers(source_id=%d, channels=%s)" % \ (self.SourceID, channels)) return UpdateData(self.SourceID, channels)
def fake(self, *args, **kw): assert self.excIdx < len(self.exceptions), "Invalid fake using" exc = self.exceptions[self.excIdx][0] args = self.exceptions[self.excIdx][1] self.excIdx += 1 if self.excIdx >= len(self.exceptions): setattr(self.test, self.method, self.storedMethod) self.gotExceptions.push(exc) tlog(20, "Call fake '%s' raising '%s'" % (self.method, exc)) raise exc(*args)
def __checkMatchingResult(self, matchResult, page_channels=[], search_channels=[], url_channels=[], content_channels=[]): gotPageChannels = [ c.id for c in matchResult.matched_channels.page_channels ] gotSearchChannels = [ c.id for c in matchResult.matched_channels.search_channels ] gotUrlChannels = [ c.id for c in matchResult.matched_channels.url_channels ] gotContentChannels = [c.id for c in matchResult.content_channels] tlog(10, "Got page channels: %s" % gotPageChannels) tlog(10, "Got search channels: %s" % gotSearchChannels) tlog(10, "Got url channels: %s" % gotUrlChannels) tlog(10, "Got content channels: %s" % gotContentChannels) self.compareUnorderedList(page_channels, gotPageChannels, 'page channels') self.compareUnorderedList(search_channels, gotSearchChannels, 'search channels') self.compareUnorderedList(url_channels, gotUrlChannels, 'url channels') self.compareUnorderedList(content_channels, gotContentChannels, 'content channels')
def testDelayedSimpleChannels(self): 'CampaignServer simple_channels delayed' tlog(10, "Calls: %s" % self.calls.queue) self.checkLastCall('CampaignServer_chsv_simple_channels', timeout=2) checkData = self.channelServerObj.check( CheckQuery(1, "1", time2orb(), [], False)) self.assertNotEqual(self.checkTimeStamp, orb2time(checkData.master_stamp), 'CheckData.master_stamp') self.checkTimeStamp = orb2time(checkData.master_stamp) self.assertEqual(False, checkData.special_track, 'CheckData.special_track') self.assertEqual(False, checkData.special_adv, 'CheckData.special_adv') result = self.channelServerObj.update_triggers([13, 14]) self.assertEqual(0, len(result.channels), 'channel size') self.simpleChannelWrapper.proceed() tlog(10, "Calls: %s" % self.calls.queue)
def test1stTriggerActivation(self): '1st trigger activation' self.updateTriggersWrapper.wait() checkData = self.channelServerObj.check( CheckQuery(1, "1", time2orb(self.checkTimeStamp), [], False)) self.assertEqual(self.checkTimeStamp, orb2time(checkData.master_stamp)) result = self.channelServerObj.update_triggers([13, 14]) tlog(10, "ChannelServer.update_triggers([13,14]): %s" % result) self.assertEqual(1, len(result.channels), 'channel size') self.assertEqual(13, result.channels[0].channel_id, 'channel#1.id') self.assertNotEqual(None, orb2time(result.channels[0].stamp), 'channel#1.stamp') self.assertNotEqual(1, len(result.channels[0].words), 'channel#1.triggers') self.updateTriggersWrapper.proceed() self.checkCallSequence(expCalls=['ChannelProxy_update_triggers'], timeout=10)
def testDelayedCheck(self): 'ChannelProxy check delayed' self.checkWrapper.wait() checkData = self.channelServerObj.check( CheckQuery(1, "1", time2orb(self.checkTimeStamp), [], False)) self.assertEqual(self.checkTimeStamp, orb2time(checkData.master_stamp), 'CheckData.master_stamp') self.assertEqual(False, checkData.special_track, 'CheckData.special_track') self.assertEqual(False, checkData.special_adv, 'CheckData.special_adv') result = self.channelServerObj.update_triggers([13, 14]) self.assertEqual(0, len(result.channels), 'channel size') self.checkWrapper.proceed() self.checkCallSequence(expCalls=[ CallSequence('CampaignServer_chsv_simple_channels', 19), 'ChannelProxy_check', 'ChannelProxy_update_all_ccg' ]) tlog(10, "Calls: %s" % self.calls.queue)
def ChannelProxy_check(self, query): tlog(10, "ChannelProxy.check(colo=%d, version='%s', timestamp='%s', new_ids=%s)" % \ (query.colo_id, query.version, time2str(orb2time(query.master_stamp)), query.new_ids)) def channel2version(channel): return ChannelVersion( channel.channel_id, reduce(lambda x, y: x+y, map(lambda x: len(x.trigger), channel.words), 0) - \ (len(channel.words) * 3), channel.stamp) return CheckData( time2orb(self.first_stamp), # first_stamp time2orb(currentTime()), # master_stamp # versions (trigger versions sequence) map(channel2version, self.channelById), self.specialTrack, # special_track self.specialAdv, # special_adv self.SourceID, # source_id time2orb(currentTime()) # max_time )
def test2ndTriggerActivation(self): '2nd trigger activation' self.checkCallSequence( expCalls=[CallSequence('CampaignServer_chsv_simple_channels', 20)], timeout=10) checkData = self.channelServerObj.check( CheckQuery(1, "1", time2orb(self.checkTimeStamp), [], False)) self.assertNotEqual(self.checkTimeStamp, orb2time(checkData.master_stamp)) self.channelServerObj.update_triggers([13, 14]) result = self.channelServerObj.update_triggers([13, 14]) tlog(10, "ChannelServer.update_triggers([13,14]): %s" % result) self.assertEqual(2, len(result.channels), 'channel size') self.assertEqual(13, result.channels[0].channel_id, 'channel#1.id') self.assertEqual(14, result.channels[1].channel_id, 'channel#2.id') self.assertNotEqual(None, orb2time(result.channels[0].stamp), 'channel#1.stamp') self.assertNotEqual(None, orb2time(result.channels[1].stamp), 'channel#2.stamp') self.assertNotEqual(1, len(result.channels[0].words), 'channel#1.triggers') self.assertNotEqual(1, len(result.channels[1].words), 'channel#2.triggers')
def testPrepare(self): '1st full update withot delays' self.checkCallSequence(expCalls=[ CallSequence('CampaignServer_chsv_simple_channels', 20), 'ChannelProxy_check', 'ChannelProxy_update_all_ccg', 'ChannelProxy_update_triggers' ], timeout=2) self.ChannelServer.waitReady() checkData = self.channelServerObj.check( CheckQuery(1, "1", time2orb(), [], False)) self.assertNotEqual(None, orb2time(checkData.master_stamp)) result = self.channelServerObj.update_triggers([12]) self.assertEqual(1, len(result.channels), 'channel size') self.assertEqual(12, result.channels[0].channel_id, 'channel#1.id') self.assertNotEqual(None, orb2time(result.channels[0].stamp), 'channel#1.stamp') self.assertNotEqual(1, len(result.channels[0].words), 'channel#1.triggers') self.__prepareDelay() tlog(10, "Calls: %s" % self.calls.queue)
def fake(self, *args, **kw): tlog(10, "Start delaying call '%s'" % self.method) self.callFlag.set() if not self.continueFlag.wait(self.ContinueTimeOut): tlog(5, "Timing out on proceed '%s' call" % self.method) self.delayCount -= 1 if self.delayCount: self.callFlag = MTFlag() self.continueFlag = MTFlag() else: setattr(self.test, self.method, self.storedMethod) tlog(10, "Delaying call '%s' done" % self.method) return self.storedMethod(*args, **kw)
def CampaignServer_detectors(self, request_timestamp): tlog( 10, "CampaignServer.search_engines %s" % time2str(orb2time(request_timestamp))) return DetectorsConfig(time2orb(currentTime()), self.search_engines, self.web_browsers, self.platforms)
def activateChannelProxy( self ): channelProxy = ChannelProxyObj(self) self.MockChannelProxyIOR = self.bindObject(ObjectKey, channelProxy) tlog(10, "ChannelProxy '%s' activated" % ObjectKey)
def CampaignServer_update_stat(self): tlog(10, "CampaignServer.update_stat")
def CampaignServer_need_config(self, req_timestamp): tlog(10, "CampaignServer.need_config") return True
def CampaignServer_get_ecpms(self, request_timestamp): tlog(10, "CampaignServer.get_ecpms") return self.ecpms
def ProcessControl_control(self, param_name, param_value): tlog(10, "ProcessControl.control(param_name=%s, param_value=%s)" % \ (param_name, param_value)) return 'ok'
def CampaignServer_get_config(self, get_config_settings): tlog(10, "CampaignServer.get_config") config = CampaignConfigUpdateInfo( self.server_id, # server_id time2orb(currentTime()), # master_stamp time2orb(currentTime()), # first_load_stamp time2orb(currentTime()), # finish_load_stamp time2orb(currentTime()), # current_time self.global_freq_cap_id, self.currency_exchange_id, self.max_keyword_ecpm, self.tanx_publisher_account_id, self.google_publisher_account_id, time2orb(currentTime()), # fraud_user_deactivate_period decimal2orb(self.cost_limit), time2orb(currentTime()), # global_params_timestamp [], # self.app_formats, [], # self.delete_app_formats, [], # self.sizes [], # self.delete_sizes [], # self.accounts, [], # self.deleted_accounts, [], # self.activate_creative_options, [], # self.delete_creative_options, [], # self.campaigns, [], # self.deleted_campaigns, [], # self.ecpms, [], # self.deleted_ecpms, [], # self.sites, [], # self.deleted_sites, [], # self.tags, [], # self.deleted_tags, [], # self.frequency_caps, [], # self.deleted_frequency_caps, [], # self.simple_channels, [], # self.deleted_simple_channels, time2orb(currentTime()), # geo_channels_timestamp [], # self.activate_geo_channels [], # self.delete_geo_channels [], # self.activate_geo_coord_channels [], # self.delete_geo_coord_channels [], # self.activate_block_channels [], # self.delete_block_channels [], # self.colocations, [], # self.deleted_colocations, [], # self.creative_templates, [], # self.deleted_creative_templates, [], # self.currencies, [], # self.expression_channels, [], # self.deleted_expression_channels, [], # self.campaign_keywords, [], # self.deleted_keywords, [], # self.creative_categories, [], # self.deleted_creative_categories, [], # self.adv_actions, [], # self.deleted_adv_actions, [], # self.category_channels, [], # self.deleted_category_channels, [], # self.behav_params, [], # self.deleted_behav_params, [], # self.key_behav_params, [], # self.deleted_key_behav_params, [], # self.fraud_conditions, [], # self.deleted_fraud_conditions, [], # self.search_engines, [], # self.deleted_search_engines, [], # self.web_browsers, [], # self.deleted_web_browsers, [], # self.platforms, [], # self.deleted_platforms, [], # self.string_dictionaries, []) # self.delete_string_dictionaries if get_config_settings.portion == 0: config = CampaignConfigUpdateInfo( self.server_id, # server_id time2orb(currentTime()), # master_stamp time2orb(currentTime()), # first_load_stamp time2orb(currentTime()), # finish_load_stamp time2orb(currentTime()), # current_time self.global_freq_cap_id, self.currency_exchange_id, self.max_keyword_ecpm, self.tanx_publisher_account_id, self.google_publisher_account_id, time2orb(currentTime()), # fraud_user_deactivate_period decimal2orb(self.cost_limit), time2orb(currentTime()), # global_params_timestamp self.app_formats, self.delete_app_formats, self.sizes, self.delete_sizes, self.accounts, self.deleted_accounts, self.activate_creative_options, self.delete_creative_options, self.campaigns, self.deleted_campaigns, self.ecpms, self.deleted_ecpms, self.sites, self.deleted_sites, self.tags, self.deleted_tags, self.frequency_caps, self.deleted_frequency_caps, self.simple_channels, self.deleted_simple_channels, time2orb(currentTime()), # geo_channels_timestamp self.activate_geo_channels, self.delete_geo_channels, self.activate_geo_coord_channels, self.delete_geo_coord_channels, self.activate_block_channels, self.delete_block_channels, self.colocations, self.deleted_colocations, self.creative_templates, self.deleted_creative_templates, self.currencies, self.expression_channels, self.deleted_expression_channels, self.campaign_keywords, self.deleted_keywords, self.creative_categories, self.deleted_creative_categories, self.adv_actions, self.deleted_adv_actions, self.category_channels, self.deleted_category_channels, self.behav_params, self.deleted_behav_params, self.key_behav_params, self.deleted_key_behav_params, self.fraud_conditions, self.deleted_fraud_conditions, self.search_engines, self.deleted_search_engines, self.web_browsers, self.deleted_web_browsers, self.platforms, self.deleted_platforms, self.string_dictionaries, self.delete_string_dictionaries) tlog(10, "CampaignServer.config: %s" % config) return config
def CampaignServer_get_expression_channels(self, channel_types, portion, portions_number): tlog(10, "CampaignServer.get_expression_channels") return self.expression_channels
def CampaignServer_get_discover_channels(self, portion, portions_number): tlog(10, "CampaignServer.get_discover_channels") return self.discover_channels
def CampaignServer_fraud_conditions(self): tlog(10, "CampaignServer.fraud_conditions") return self.fraud_conditions
def CampaignServer_chsv_simple_channels(self, params): tlog( 10, "CampaignServer.chsv_simple_channels#%d.%d %s" % (params.portion, params.portions_number, self.get_chsv_channels())) return ChannelServerChannelAnswer(self.get_chsv_channels(), decimal2orb(self.cost_limit))
def CampaignServer_simple_channels(self, get_config_settings): tlog(10, "CampaignServer.simple_channels") return SimpleChannelAnswer(self.simple_channels, self.behav_params, self.key_behav_params, self.tzOffset, self.masterStamp, decimal2orb(self.cost_limit))
def CampaignServer_get_tag_passback(self, tag_id): tlog(10, "CampaignServer.get_tag_passback") return self.passbackDict.get(tag_id, "")
def ChannelProxy_update_all_ccg(self, query): tlog(10, "ChannelProxy.update_all_ccg(timestamp='%s', start=%d, limit=%d)" % \ (time2str(orb2time(query.master_stamp)), query.start, query.limit)) return PosCCGResult(query.start, [], [], 1)
def ProcessControl_is_alive(self): tlog(10, "ProcessControl.is_alive()") return self.status
def ProcessControl_shutdown(self, wait_for_completion): tlog(10, "ProcessControl.shutdown(wait_for_completion=%d)" % \ wait_for_completion) return
def ProcessControl_comment(self): tlog(10, "ProcessControl.comment()") return self.__class__.__name__
def proceed(self): tlog(10, "Proceed call '%s'" % self.method) self.continueFlag.set()
def activateCampaignServer(self): campaignServer = CampaignServerObj(self) self.MockCampaignServerIOR = self.bindObject(ObjectKey, campaignServer) tlog(10, "CampaignServer '%s' activated" % ObjectKey)