}
// 取得可发布broker
$pipe_name = 'pipe1';
$pipelet_id = 2;
// 加1在哪里做好呢?
$broker = $adapter->get_pub_broker($pipe_name, $pipelet_id);
if (!$broker) {
    echo "[Failure][get pub info]\n";
} else {
    echo "[Success][get pub info]\n";
    print_r($broker);
    echo "\n";
}
// 取得可订阅broker_group
$start_point = -1;
$sub_info = $adapter->get_sub_broker_group($pipe_name, $pipelet_id, $start_point);
if (false === $sub_info) {
    echo "[Failure][get sub info]\n";
} else {
    echo "[Success][get sub info]\n";
    // 解析sub info各个字段
    while (list($name, $value) = each($sub_info)) {
        // 打印除了broker group以外的字段
        if ($name != 'broker_group') {
            echo "[{$name}][{$value}]\n";
        }
    }
    // 解析json object
    $broker_group = $sub_info['broker_group'];
    echo "[group name      ][{$broker_group->name}]\n";
    echo "[epoch           ][{$broker_group->epoch}]\n";
 public function testGetSubBrokerGroup()
 {
     $subject = new MetaAgentAdapter();
     $pipe_name = 'pipe';
     $pipelet_id = 2;
     $start_point = 4;
     // 测试1 从还未被初始化的对象调用接口
     $this->assertFalse($subject->get_sub_broker_group($pipe_name, $pipelet_id, $start_point));
     // 测试2 meta name为空
     $this->assertTrue(TestUtilities::set_private_var($subject, '_inited', true));
     $this->assertFalse($subject->get_sub_broker_group(null, $pipelet_id, $start_point));
     // mock connection 行为
     // 定义connection行为
     $this->stub_conn->expects($this->any())->method('is_connected')->will($this->returnValue(true));
     $this->stub_conn->expects($this->any())->method('create_connection')->will($this->returnValue(true));
     $this->stub_conn->expects($this->any())->method('send')->will($this->returnValue(true));
     $this->stub_conn->expects($this->any())->method('close');
     $ack_pkgs = $this->_gen_get_subinfo_ack();
     $this->stub_conn->expects($this->any())->method('receive')->will($this->onConsecutiveCalls(null, $ack_pkgs['bad'], $ack_pkgs['good']));
     $this->assertTrue(TestUtilities::set_private_var($subject, '_connection', $this->stub_conn));
     // 测试2.2 request null
     $subject->meta_name = 'meta';
     $this->assertFalse($subject->get_sub_broker_group($pipe_name, $pipelet_id, $start_point));
     // 测试2.3 ack wrong pakcage
     $this->assertFalse($subject->get_sub_broker_group($pipe_name, $pipelet_id, $start_point));
     // 测试2.4 成功
     $broker = $subject->get_sub_broker_group($pipe_name, $pipelet_id, $start_point);
     $this->assertTrue(false != $broker);
     $this->assertTrue(TestUtilities::set_private_var($subject, '_inited', false));
 }