Блоггер довольно неудобен (или просто я не умею его готовить) если нужно добавлять код.
Поэтому я перешел на новый блог.
Он находится здесь - http://madmis.com.ua/
Поэтому я перешел на новый блог.
Он находится здесь - http://madmis.com.ua/
class UserGroup extends \Codeception\Platform\Group { static $group = 'user'; /** * @param \Codeception\Event\Test $e */ public function _before(\Codeception\Event\Test $e) { $this->writeln("inserting user"); /** @var \Codeception\Module\MongoDb $db */ $db = $this->getModule('MongoDb'); $data = $criteria = ["key" => "user", 'value' => User::getUserData()]; $db->haveInCollection(User::collectionName(), $data); $db->_before($e->getTest()); } /** * @param \Codeception\Event\Test $e */ public function _after(\Codeception\Event\Test $e) { /** @var \Codeception\Module\MongoDb $db */ $db = $this->getModule('MongoDb'); $db->_after($e->getTest()); } }2. RawSerpDbGroup - при запуске теста подменяет coonection подключаясь к дургой БД.
class RawSerpDbGroup extends \Codeception\Platform\Group { static $group = 'raw-serp-db'; /** * @param \Codeception\Event\Test $e */ public function _before(\Codeception\Event\Test $e) { $this->writeln("connect to raw-serp-db"); /** @var \Codeception\Module\MongoDb $db */ $db = $this->getModule('MongoDb'); $db->_reconfigure($this->config); $db->_initialize(); $db->_before($e->getTest()); } /** * @param \Codeception\Event\Test $e */ public function _after(\Codeception\Event\Test $e) { /** @var \Codeception\Module\MongoDb $db */ $db = $this->getModule('MongoDb'); $db->_after($e->getTest()); } }
extensions:enabled: [RawSerpDbGroup, UserGroup]config:RawSerpDbGroup:dsn: 'mongodb://localhost:27017/db-r-s'user: ~password: ~populate: truecleanup: truedump: ~
причем порядок следования сценариев в данном случае важен./** @var $scenario \Codeception\Scenario */$scenario->group(UserGroup::$group);$scenario->group(RawSerpDbGroup::$group);$I = new CommandGuy($scenario);
1
|
mongodump -h localhost -d DATABASE_NAME -o BACKUP_FOLDER
|
1
|
mongodump --db blog --collection posts
|
1
|
mongorestore -h localhost -d DATABASE_NAME BACKUP_FOLDER
|
mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password';
После этого в новый бандл добавил следующую командуnamespace Netberry\JobQueueBundle;use Symfony\Component\HttpKernel\Bundle\Bundle;class NetberryJobQueueBundle extends Bundle{public function getParent(){return 'JMSJobQueueBundle';}}
Постарался обойтись минимальными изменениями.namespace Netberry\JobQueueBundle\Command;use JMS\JobQueueBundle\Entity\Job;use Netberry\JobQueueBundle\Entity\Environment;use Symfony\Component\Process\ProcessBuilder;class RunCommand extends \JMS\JobQueueBundle\Command\RunCommand{const COMMAND = 'jms-job-queue:run';/*** @var Job*/protected $job;/*** @param Job $job* @throws \LogicException*/protected function startJob(Job $job){$this->job = $job;parent::startJob($job);}/*** @return ProcessBuilder*/protected function getCommandProcessBuilder(){$pb = parent::getCommandProcessBuilder();/** @var Environment $Env */$Env = $this->job->getRelatedEntities()->first();if(!$Env) {$Env = new Environment('common', 'common');}$pb->setEnv('SYMFONY__APP', $Env->getApp());$pb->setEnv('SYMFONY__HOST', $Env->getHost());return $pb;}}
Но проблема в том, что в оригинальной команде вышеописанные методы приватные (private) и поэтому их можно только переопределить, но нельзя расширить. Поэтому пока пришлось изменить код оригинальной команды, что есть очень плохо и совершенно не правильно (но другого варианта я пока не нашел).
В вышеуказанном issue, я попросил автора бандла подумать и об этом. Посмотрим, что он придумает.