} // 取得可发布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)); }