Пример #1
0
    def test_delete_campaign(self):
        response = yield self.get_response("campaign_delete", [])
        self.assertIsNotNone(response)
        self.assertTrue(response['result'])

        response = yield self.get_response("campaign_delete",
                                           [self.CAMPAIGN_DATA['campaign_id']])

        self.assertIsNotNone(response)
        self.assertTrue(response['result'])

        # Add campaign
        response = yield self.get_response("campaign_update",
                                           [self.CAMPAIGN_DATA])
        self.assertIsNotNone(response)
        self.assertTrue(response['result'])

        # Mark it as removed
        response = yield self.get_response("campaign_delete",
                                           [self.CAMPAIGN_DATA['campaign_id']])
        self.assertIsNotNone(response)

        # Verify it's marked
        campaign_doc = yield db_utils.get_campaign(
            self.CAMPAIGN_DATA['campaign_id'])
        self.assertEqual(1, campaign_doc['time_end'])

        campaign_banners = yield db_utils.get_campaign_banners(
            self.CAMPAIGN_DATA['campaign_id'])
        self.assertEqual(len(campaign_banners), 0)
Пример #2
0
    def test_change_campaign(self):
        changed_campaign_data = copy.deepcopy(self.CAMPAIGN_DATA)
        changed_campaign_data['budget'] = 200
        changed_campaign_data['banners'] = [{
            'banner_id': 'changed',
            'banner_size': '100x200',
            'keywords': {}
        }]

        response = yield self.get_response("campaign_update",
                                           [changed_campaign_data])
        self.assertIsNotNone(response)
        self.assertTrue(response['result'])

        campaign_doc = yield db_utils.get_campaign(
            changed_campaign_data['campaign_id'])
        self.assertIsNotNone(campaign_doc)
        self.assertEqual(campaign_doc['campaign_id'],
                         changed_campaign_data['campaign_id'])
        self.assertEqual(campaign_doc['budget'],
                         changed_campaign_data['budget'])

        campaign_banners = yield db_utils.get_campaign_banners(
            changed_campaign_data['campaign_id'])

        self.assertEqual(len(campaign_banners), 1)
        self.assertEqual(campaign_banners[0]['banner_id'],
                         changed_campaign_data['banners'][0]['banner_id'])
Пример #3
0
    def test_add_campaign(self):
        response = yield self.get_response("campaign_update", [])
        self.assertIsNotNone(response)
        self.assertTrue(response['result'])

        response = yield self.get_response("campaign_update",
                                           [self.CAMPAIGN_DATA])

        self.assertIsNotNone(response)
        self.assertTrue(response['result'])

        campaign_doc = yield db_utils.get_campaign(
            self.CAMPAIGN_DATA['campaign_id'])
        self.assertIsNotNone(campaign_doc)
        self.assertEqual(campaign_doc['campaign_id'],
                         self.CAMPAIGN_DATA['campaign_id'])
        self.assertEqual(campaign_doc['budget'], 1000)

        campaign_banners = yield db_utils.get_campaign_banners(
            self.CAMPAIGN_DATA['campaign_id'])
        self.assertEqual(len(campaign_banners), 2)
        for banner_doc in campaign_banners:
            self.assertIn(
                banner_doc['banner_id'],
                [elem['banner_id'] for elem in self.CAMPAIGN_DATA['banners']])
Пример #4
0
    def test_campaign(self):
        cmp_doc = {
            "campaign_id": "campaign_id",
            "time_start": 12345,
            "time_end": 12347,
            "max_cpc": 100,
            "max_cpm": 200,
            "budget": 1000,
            "filters": {}
        }
        yield db_utils.update_campaign(cmp_doc)

        campaign_doc = yield db_utils.get_campaign("campaign_id")
        self.assertEqual(campaign_doc['time_start'], 12345)
        self.assertEqual(campaign_doc['time_end'], 12347)
        self.assertEqual(campaign_doc['max_cpc'], 100)
        self.assertEqual(campaign_doc['max_cpm'], 200)
        self.assertEqual(campaign_doc['budget'], 1000)

        yield db_utils.delete_campaign("campaign_id")
        campaign_doc = yield db_utils.get_campaign("campaign_id")
        self.assertEqual(None, campaign_doc)

        for i in range(1000):
            cmp_doc = {
                "campaign_id": i,
                "time_start": 12345,
                "time_end": 12347,
                "max_cpc": 100,
                "max_cpm": 200,
                "budget": 1000,
                "filters": {}
            }
            yield db_utils.update_campaign(cmp_doc)

        counter = 0
        campaign_iter = yield db_utils.get_campaign_iter()
        while True:
            campaign_doc = yield campaign_iter.next()
            if not campaign_doc:
                break
            counter += 1
        self.assertEqual(counter, 1000)
Пример #5
0
def delete_campaign(campaign_id):
    """
    Remove campaign.

    :param campaign_id:
    :return:
    """
    logger = logging.getLogger(__name__)

    # Delete campaign banners
    yield logger.info("Removing campaign banners for {0}".format(campaign_id))
    yield db_utils.delete_campaign_banners(campaign_id)

    # "Delete" campaign
    # Set time_end to 1 - the campaign will be cleaned up during calculation task.
    yield logger.info("Removing campaign for {0}".format(campaign_id))

    campaign_doc = yield db_utils.get_campaign(campaign_id)
    if campaign_doc:
        campaign_doc['time_end'] = 1
        yield db_utils.update_campaign(campaign_doc)
Пример #6
0
def add_event(eventobj):
    """
    Insert (create or update) event object into the database.

    Update keywords and view statistics (for user value method)

    :param eventobj: Event object
    :return:
    """
    logger = logging.getLogger(__name__)

    event_doc = eventobj.to_json()
    event_doc['campaign_id'] = 'not_found'

    banner_doc = yield db_utils.get_banner(eventobj.banner_id)
    if not banner_doc:
        yield logger.warning("Event update: No banner found.")
    else:
        campaign_doc = yield db_utils.get_campaign(banner_doc['campaign_id'])
        if not campaign_doc:
            yield logger.warning("Event update: No campaign found.")
        else:
            event_doc['campaign_id'] = campaign_doc['campaign_id']

    inserted = yield db_utils.update_event(event_doc)

    if stats_consts.CALCULATION_METHOD == 'user_value':
        # Update global keywords cache and user keyword stats.
        view_view_keywords = []
        for user_keyword, user_val in eventobj.our_keywords.items():
            view_view_keywords.append(
                common_utils.genkey(user_keyword, user_val))
        yield stats_legacy.add_view_keywords(eventobj.user_id,
                                             view_view_keywords)

    defer.returnValue(inserted)