public function testJSONChannelBasics() { list($x, $y) = PhutilSocketChannel::newChannelPair(); $xp = new PhutilJSONProtocolChannel($x); $yp = new PhutilJSONProtocolChannel($y); $dict = array('rand' => mt_rand(), 'list' => array(1, 2, 3), 'null' => null); $xp->write($dict); $xp->flush(); $result = $yp->waitForMessage(); $this->assertEqual($dict, $result, pht('Values are identical.')); }
private function runBootloaderTests(PhageAgentBootloader $boot) { $name = get_class($boot); $exec = new ExecFuture('%C', $boot->getBootCommand()); $exec->write($boot->getBootSequence(), $keep_open = true); $exec_channel = new PhutilExecChannel($exec); $agent = new PhutilJSONProtocolChannel($exec_channel); $agent->write(array('type' => 'EXEC', 'key' => 1, 'command' => 'echo phage')); $this->agentExpect($agent, array('type' => 'RSLV', 'key' => 1, 'err' => 0, 'stdout' => "phage\n", 'stderr' => ''), "'echo phage' for {$name}"); $agent->write(array('type' => 'EXIT')); }
$args = new PhutilArgumentParser($argv); $args->setTagline('test client for Aphlict server'); $args->setSynopsis(<<<EOHELP **aphlict_test_client.php** [__options__] Connect to the Aphlict server configured in the Phabricator config. EOHELP ); $args->parseStandardArguments(); $args->parse(array(array('name' => 'server', 'param' => 'uri', 'default' => PhabricatorEnv::getEnvConfig('notification.client-uri'), 'help' => 'Connect to __uri__ instead of the default server.'))); $console = PhutilConsole::getConsole(); $errno = null; $errstr = null; $uri = $args->getArg('server'); $uri = new PhutilURI($uri); $uri->setProtocol('tcp'); $console->writeErr("Connecting...\n"); $socket = stream_socket_client($uri, $errno, $errstr); if (!$socket) { $console->writeErr("Unable to connect to Aphlict (at '{$uri}'). Error #{$errno}: {$errstr}"); exit(1); } else { $console->writeErr("Connected.\n"); } $io_channel = new PhutilSocketChannel($socket); $proto_channel = new PhutilJSONProtocolChannel($io_channel); $json = new PhutilJSON(); while (true) { $message = $proto_channel->waitForMessage(); $console->writeOut($json->encodeFormatted($message)); }