Kraken\_Module\Channel\ChannelTest::testChannel_EmitsConnectAndDisconnectEvents_InThreesome PHP Method

testChannel_EmitsConnectAndDisconnectEvents_InThreesome() public method

    public function testChannel_EmitsConnectAndDisconnectEvents_InThreesome($data)
    {
        $this->simulate(function (SimulationInterface $sim) use($data) {
            $loop = $sim->getLoop();
            $data['master']['config']['heartbeatKeepalive'] = 100;
            $master = $this->createChannel($data['master'], $loop);
            $slave1 = $this->createChannel($data['slave1'], $loop);
            $slave2 = $this->createChannel($data['slave2'], $loop);
            $master->on('start', function () use($master, $slave1, $slave2) {
                $slave1->start();
                $slave2->start();
            });
            $master->on('connect', function ($name) use($sim) {
                $sim->expect('connect', [$name]);
            });
            $master->on('disconnect', function ($name) use($sim) {
                $sim->expect('disconnect', [$name]);
            });
            $sim->delayOnce('down', 2, function () use($sim, $loop) {
                $loop->addTimer(0.5, function () use($sim) {
                    $sim->done();
                });
            });
            $slave1->on('start', function () use($sim, $slave1, $loop) {
                $loop->addTimer(0.25, function () use($slave1) {
                    $slave1->stop();
                });
            });
            $slave1->on('stop', function () use($sim) {
                $sim->emit('down');
            });
            $slave2->on('start', function () use($sim, $slave2, $loop) {
                $loop->addTimer(0.25, function () use($slave2) {
                    $slave2->stop();
                });
            });
            $slave2->on('stop', function () use($sim) {
                $sim->emit('down');
            });
            $sim->onStart(function () use($master) {
                $master->start();
            });
            $sim->onStop(function () use($master, $slave1, $slave2) {
                $master->stop();
                usleep(200000.0);
            });
        })->expect([['connect', [self::ALIAS_B]], ['connect', [self::ALIAS_C]], ['disconnect', [self::ALIAS_B]], ['disconnect', [self::ALIAS_C]]]);
    }