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.')); }
$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)); }