/** * @param Campaign $campaign * @param Platform $platform * @param array $parameters * * @return VideoView */ private function generateVideoView(Campaign $campaign, Platform $platform, $parameters = array()) { static $i = 0; $view = new VideoView(); $view->setCampaign($campaign)->setPlatform($platform)->setCurrentTime(isset($parameters['current_time']) ? $parameters['current_time'] : 60)->setTimestamp(time())->setTrackNumber(isset($parameters['current_time']) ? $parameters['current_time'] : 60)->setViewerId(md5($i)); $em = self::$em; $em->persist($view); $em->flush(); $i++; return $view; }
/** * @see Command */ protected function execute(InputInterface $input, OutputInterface $output) { $rabbit = $this->getContainer()->get('old_sound_rabbit_mq.video_view_producer'); $campaignIds = $input->getArgument('campaigns'); $quantity = (int) $input->getOption('quantity'); $platformIds = $input->getOption('platforms'); if ($quantity < 1) { throw new \LogicException('Неправильное количество'); } /** @var \Doctrine\ORM\EntityManager $em */ $em = $this->getContainer()->get('doctrine.orm.default_entity_manager'); $campaigns = $em->getRepository('VifeedCampaignBundle:Campaign')->findBy(['id' => $campaignIds]); $platformRepo = $em->getRepository('VifeedPlatformBundle:Platform'); if (!$platformIds) { $platforms = $em->getRepository('VifeedPlatformBundle:Platform')->findAll(); } else { $platformIds = explode(',', $platformIds); $platforms = $em->getRepository('VifeedPlatformBundle:Platform')->findBy(['id' => $platformIds]); } // $videoViewRepo = $em->getRepository('VifeedVideoViewBundle:VideoView'); foreach ($campaigns as $campaign) { $key = array_rand($platforms); $platform = $platforms[$key]; for ($i = 1; $i <= $quantity; $i++) { $query = $em->getConnection()->query('select country_id, city_id from video_views where city_id is not null and id between 120000 and 260000 order by rand() limit 1'); $geo = $query->fetch(); $country = $em->getReference('VifeedGeoBundle:Country', $geo['country_id']); $city = $em->getReference('VifeedGeoBundle:City', $geo['city_id']); $curTime = mt_rand(5, 150); $view = new VideoView(); $view->setCampaign($campaign)->setPlatform($platform)->setCountry($country)->setCity($city)->setIp(mt_rand(16777216, 3758096383))->setCurrentTime($curTime)->setTimestamp(mt_rand(time() - 20000, time()))->setTrackNumber($curTime - mt_rand(1, $curTime - 1))->setViewerId(md5(mt_rand())); $em->persist($view); $em->flush(); $rabbit->publish($view->getId()); usleep(mt_rand(1, 1000)); if ($i % 100 == 0) { echo $i . "\n"; } } } }
protected static function loadTestFixtures() { $fixtures = parent::loadTestFixtures(); /** @var EntityManager $entityManager */ $entityManager = self::$em; /** @var VideoViewPaymentManager $viewPaymentManager */ $viewPaymentManager = self::getContainer()->get('vifeed.payment.video_view_payment_manager'); /** @var StatsManager $statsManager */ $statsManager = self::getContainer()->get('vifeed.videoview.stats_manager'); $platform = new Platform(); $platform->setName('111')->setUser($fixtures['publisher'])->setUrl('111')->setDescription(''); $entityManager->persist($platform); $city1 = new City(); $city1->setName('Москва')->setCountry($fixtures['countries'][0])->setLatitude('111.111')->setLongitude('111.222'); $entityManager->persist($city1); $city2 = new City(); $city2->setName('Воронеж')->setCountry($fixtures['countries'][0])->setLatitude('222.222')->setLongitude('222.333'); $entityManager->persist($city2); $view1 = new VideoView(); $view1->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(10)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setCountry($fixtures['countries'][0])->setCity($city1)->setTrackNumber(10)->setViewerId(md5(1)); $entityManager->persist($view1); $entityManager->flush($view1); $viewPaymentManager->reckon($view1); $view2 = new VideoView(); $view2->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setCountry($fixtures['countries'][0])->setCity($city1)->setTrackNumber(60)->setViewerId(md5(2)); $entityManager->persist($view2); $entityManager->flush($view2); $viewPaymentManager->reckon($view2); $view3 = new VideoView(); $view3->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('yesterday'))->setTime(23, 0, 0)->format('U'))->setCountry($fixtures['countries'][0])->setCity($city2)->setTrackNumber(60)->setViewerId(md5(3)); $entityManager->persist($view3); $entityManager->flush($view3); $viewPaymentManager->reckon($view3); $view4 = new VideoView(); $view4->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('today'))->setTime(23, 29, 59)->format('U'))->setCountry($fixtures['countries'][1])->setTrackNumber(60)->setViewerId(md5(4)); $entityManager->persist($view4); $entityManager->flush($view4); $viewPaymentManager->reckon($view4); $view5 = new VideoView(); $view5->setCampaign($fixtures['campaigns'][0])->setPlatform($platform)->setCurrentTime(60)->setTimestamp((new \DateTime('today'))->setTime(23, 59, 59)->format('U'))->setCountry($fixtures['countries'][1])->setTrackNumber(60)->setViewerId(md5(4)); $entityManager->persist($view5); $entityManager->flush($view5); $viewPaymentManager->reckon($view5); $entityManager->flush(); $statsManager->recollectAllStats(); $statsManager->collectDailyStats((new \DateTime())->setTime(0, 0, 0)); $fixtures['cities'] = [$city1, $city2]; $fixtures['platform'] = $platform; return $fixtures; }
protected static function loadTestFixtures() { $fixtures = parent::loadTestFixtures(); /** @var EntityManager $entityManager */ $entityManager = self::$em; /** @var VideoViewPaymentManager $viewPaymentManager */ $viewPaymentManager = self::getContainer()->get('vifeed.payment.video_view_payment_manager'); $platform1 = new Platform(); $platform1->setName('111')->setUser($fixtures['publisher'])->setUrl('111')->setDescription(''); $entityManager->persist($platform1); $view1 = new VideoView(); $view1->setCampaign($fixtures['campaigns'][2])->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-03-22'))->format('U'))->setTrackNumber(60)->setViewerId(md5(1)); $entityManager->persist($view1); $viewPaymentManager->reckon($view1); $view2 = new VideoView(); $view2->setCampaign($fixtures['campaigns'][2])->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-03-23'))->format('U'))->setTrackNumber(60)->setViewerId(md5(2)); $entityManager->persist($view2); $viewPaymentManager->reckon($view2); $view3 = new VideoView(); $view3->setCampaign($fixtures['campaigns'][1])->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-03-23'))->format('U'))->setTrackNumber(60)->setViewerId(md5(3)); $entityManager->persist($view3); $viewPaymentManager->reckon($view3); $view4 = new VideoView(); $view4->setCampaign($fixtures['campaigns'][1])->setPlatform($platform1)->setCurrentTime(10)->setTimestamp((new \DateTime('2014-03-23'))->format('U'))->setTrackNumber(10)->setViewerId(md5(4)); $entityManager->persist($view4); $viewPaymentManager->reckon($view4); self::$em->refresh($fixtures['campaigns'][1]); self::$em->refresh($fixtures['campaigns'][2]); return $fixtures; }
protected static function loadTestFixtures() { /** @var EntityManager $entityManager */ $entityManager = self::$em; $userManager = self::$container->get('fos_user.user_manager'); $advertiser = new User(); $advertiser->setType(User::TYPE_ADVERTISER)->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setEnabled(true)->setPlainPassword('12345'); $userManager->updateCanonicalFields($advertiser); $publisher = new User(); $publisher->setType(User::TYPE_PUBLISHER)->setEmail('*****@*****.**')->setEnabled(true)->setUsername('*****@*****.**')->setPlainPassword('12345'); $userManager->updateCanonicalFields($publisher); $campaign1 = new Campaign(); $campaign1->setUser($advertiser)->setName('111')->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setStatus(Campaign::STATUS_ON)->setHash('123'); $campaign2 = new Campaign(); $campaign2->setUser($advertiser)->setName('222')->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setHash('123')->setStatus(Campaign::STATUS_ON)->setYoutubeData('duration', 4); $campaigns = []; for ($i = 0; $i < 8; $i++) { $campaigns[$i] = new Campaign(); $campaigns[$i]->setUser($advertiser)->setName($i)->setBid(1)->setGeneralBudget(100)->setBalance(100)->setDailyBudget(0)->setStatus(Campaign::STATUS_ON)->setHash('123' . $i); $entityManager->persist($campaigns[$i]); } $platform1 = new Platform(); $platform1->setUser($publisher)->setUrl('123')->setName('111')->setDescription('123'); $view0 = new VideoView(); $view0->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(10)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(10)->setIp(11111)->setViewerId(md5(1)); $view1 = new VideoView(); $view1->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(3)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(3)->setIp(11112)->setViewerId(md5(1)); $view2 = new VideoView(); $view2->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('-35 day'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11113)->setViewerId(md5(1)); $view3 = new VideoView(); $view3->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(3)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(3)->setIp(11114)->setViewerId(md5(1)); $view4 = new VideoView(); $view4->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(39)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(39)->setIp(11115)->setViewerId(md5(1)); // для теста на ip-filter1 - начало $view5 = new VideoView(); $view5->setCampaign($campaigns[0])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 0, 1)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(2)); $view6 = new VideoView(); $view6->setCampaign($campaigns[1])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 7, 1)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(3)); $view7 = new VideoView(); $view7->setCampaign($campaigns[2])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 10, 2)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(4)); $view8 = new VideoView(); $view8->setCampaign($campaigns[3])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 20, 3)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(5)); $view9 = new VideoView(); $view9->setCampaign($campaigns[4])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 30, 4)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(6)); $view10 = new VideoView(); $view10->setCampaign($campaigns[5])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(0, 40, 5)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(7)); $view11 = new VideoView(); $view11->setCampaign($campaigns[6])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('yesterday'))->setTime(10, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(8)); $view12 = new VideoView(); $view12->setCampaign($campaigns[7])->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('today'))->setTime(0, 40, 6)->format('U'))->setTrackNumber(50)->setIp(11116)->setViewerId(md5(9)); // для теста на ip-filter1 - конец // для теста на ip-filter2 - начало $view13 = new VideoView(); $view13->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('-1 year'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11117)->setViewerId(md5(10)); $view14 = new VideoView(); $view14->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(50)->setTimestamp((new \DateTime('today'))->setTime(0, 0, 0)->format('U'))->setTrackNumber(50)->setIp(11117)->setViewerId(md5(11)); // для теста на ip-filter2 - конец $entityManager->persist($advertiser); $entityManager->persist($publisher); $entityManager->persist($campaign1); $entityManager->persist($campaign2); $entityManager->persist($platform1); $entityManager->persist($view0); $entityManager->persist($view1); $entityManager->persist($view2); $entityManager->persist($view3); $entityManager->persist($view4); $entityManager->persist($view5); $entityManager->persist($view6); $entityManager->persist($view7); $entityManager->persist($view8); $entityManager->persist($view9); $entityManager->persist($view10); $entityManager->persist($view11); $entityManager->persist($view12); $entityManager->persist($view13); $entityManager->persist($view14); $entityManager->flush(); $fixtures = ['advertiser' => $advertiser, 'publisher' => $publisher, 'campaigns' => array_merge([$campaign1, $campaign2], $campaigns), 'platofrms' => [$platform1], 'views' => [$view0, $view1, $view2, $view3, $view4, $view5, $view6, $view7, $view8, $view9, $view10, $view11, $view12, $view13, $view14]]; return $fixtures; }
protected static function loadTestFixtures() { /** @var UserManager $userManager */ $userManager = self::getContainer()->get('fos_user.user_manager'); /** @var EntityManager $entityManager */ $entityManager = self::$em; $campaignManager = self::getContainer()->get('vifeed.campaign.manager'); $tokenManager = static::getContainer()->get('vifeed.user.wsse_token_manager'); /** @var VideoViewPaymentManager $viewPaymentManager */ $viewPaymentManager = self::getContainer()->get('vifeed.payment.video_view_payment_manager'); $paymentPluginController = self::getContainer()->get('payment.plugin_controller'); /** @var StatsManager $statsManager */ $statsManager = self::getContainer()->get('vifeed.videoview.stats_manager'); /** @var User $advertiser */ $advertiser = $userManager->createUser(); $advertiser->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(26)->setEnabled(true)->setType(User::TYPE_ADVERTISER)->setPlainPassword('12345'); $userManager->updateUser($advertiser, false); /** @var User $publisher */ $publisher = $userManager->createUser(); $publisher->setEmail('*****@*****.**')->setUsername('*****@*****.**')->setBalance(200)->setEnabled(true)->setType(User::TYPE_PUBLISHER)->setPlainPassword('12345'); $userManager->updateUser($publisher, false); $campaign1 = new Campaign(); $campaign1->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('111')->setUser($advertiser)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(7)->setBalance(10)->setGeneralBudget(10); $campaignManager->save($campaign1); $campaign2 = new Campaign(); $campaign2->setStatus(Campaign::STATUS_ON)->setBid(3)->setName('222')->setUser($advertiser)->setHash(substr(md5(mt_rand(1, 100)), 0, 11))->setDailyBudget(0)->setBalance(10)->setGeneralBudget(10)->setDeletedAt(new \DateTime('2014-02-10')); $campaignManager->save($campaign2); $platform1 = new Platform(); $platform1->setName('111')->setUser($publisher)->setUrl('111')->setDescription(''); $entityManager->persist($platform1); // плолщадка удалена (soft-delete) $platform2 = new Platform(); $platform2->setName('222')->setUser($publisher)->setUrl('222')->setDescription('')->setDeletedAt(new \DateTime('2014-02-10')); $entityManager->persist($platform2); $view1 = new VideoView(); $view1->setCampaign($campaign1)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-22 00:00:00'))->format('U'))->setTrackNumber(60)->setViewerId(md5(1)); $entityManager->persist($view1); $entityManager->flush(); $viewPaymentManager->reckon($view1); $view2 = new VideoView(); $view2->setCampaign($campaign1)->setPlatform($platform2)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 00:00:00'))->format('U'))->setTrackNumber(60)->setViewerId(md5(2)); $entityManager->persist($view2); $entityManager->flush(); $viewPaymentManager->reckon($view2); $view3 = new VideoView(); $view3->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 23:00:00'))->format('U'))->setTrackNumber(60)->setViewerId(md5(3)); $entityManager->persist($view3); $entityManager->flush(); $viewPaymentManager->reckon($view3); $view4 = new VideoView(); $view4->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 23:29:59'))->format('U'))->setTrackNumber(60)->setViewerId(md5(4)); $entityManager->persist($view4); $entityManager->flush(); $viewPaymentManager->reckon($view4); $view5 = new VideoView(); $view5->setCampaign($campaign2)->setPlatform($platform1)->setCurrentTime(60)->setTimestamp((new \DateTime('2014-02-23 23:59:59'))->format('U'))->setTrackNumber(60)->setViewerId(md5(4)); $entityManager->persist($view5); $entityManager->flush(); $viewPaymentManager->reckon($view5); $instruction1 = new PaymentInstruction(100, 'RUR', 'robokassa'); $paymentPluginController->createPaymentInstruction($instruction1); $instruction2 = new PaymentInstruction(50, 'RUR', 'robokassa'); $paymentPluginController->createPaymentInstruction($instruction2); $instruction3 = new PaymentInstruction(50, 'RUR', 'robokassa'); $paymentPluginController->createPaymentInstruction($instruction3); $order1 = new Order(); $order1->setUser($advertiser)->setStatus(Order::STATUS_PAID)->setAmount(100)->setPaymentInstruction($instruction1); $entityManager->persist($order1); $order2 = new Order(); $order2->setUser($advertiser)->setStatus(Order::STATUS_PAID)->setAmount(50)->setPaymentInstruction($instruction2); $entityManager->persist($order2); $order3 = new Order(); $order3->setUser($advertiser)->setStatus(Order::STATUS_NEW)->setAmount(50)->setPaymentInstruction($instruction3); $entityManager->persist($order3); $wallet = new Wallet(); $wallet->setUser($publisher)->setNumber(12345)->setType('yandex'); $entityManager->persist($wallet); $withdrawal1 = new Withdrawal(); $withdrawal1->setUser($publisher)->setAmount(50)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-28 10:00:00'))->setStatus(Withdrawal::STATUS_OK); $entityManager->persist($withdrawal1); $withdrawal2 = new Withdrawal(); $withdrawal2->setUser($publisher)->setAmount(100)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-28 12:00:00'))->setStatus(Withdrawal::STATUS_OK); $entityManager->persist($withdrawal2); $withdrawal3 = new Withdrawal(); $withdrawal3->setUser($publisher)->setAmount(20)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-27 10:00:00'))->setStatus(Withdrawal::STATUS_CREATED); $entityManager->persist($withdrawal3); $withdrawal4 = new Withdrawal(); $withdrawal4->setUser($publisher)->setAmount(30)->setWallet($wallet)->setCreatedAt(new \DateTime('2014-02-27 11:00:00'))->setStatus(Withdrawal::STATUS_ERROR); $entityManager->persist($withdrawal4); $entityManager->flush(); $tokenManager->createUserToken($advertiser->getId()); $tokenManager->createUserToken($publisher->getId()); $statsManager->recollectAllStats(); $statsManager->collectDailyStats((new \DateTime())->setTime(0, 0, 0)); return array('advertiser' => $advertiser, 'publisher' => $publisher, 'platforms' => [$platform1, $platform2], 'campaigns' => array($campaign1, $campaign2)); }