public function testUninitMeta()
 {
     $subject = new MetaAgentAdapter();
     $metod = TestUtilities::get_private_method($subject, '_uninit_meta');
     $this->assertTrue(false != $metod);
     // 测试1 进入close流程
     // 测试1.1 测试_uninit_meta方法
     // 定义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_uninit_meta_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));
     // 测试1.1.1 meta_name为空
     $subject->meta_name = null;
     $metod->invoke($subject, $subject->meta_name);
     // 测试2.1.2 request返回为空
     $subject->meta_name = 'meta';
     $metod->invoke($subject, $subject->meta_name);
     // 测试2.1.3 res_body无法解包
     $subject->meta_name = 'meta';
     $metod->invoke($subject, $subject->meta_name);
     // 测试2.1.4 res_body正常
     $subject->meta_name = 'meta';
     $metod->invoke($subject, $subject->meta_name);
 }
 /**
  * ²âÊÔ Ë½Óк¯Êý_init_meta
  */
 public function testOthers()
 {
     $subject = new BigpipeQueueAdministrationTools();
     $method = TestUtilities::get_private_method($subject, '_init_meta');
     $this->assertTrue(false != $method);
     // ²âÊÔinit metaʧ°ÜÇé¿ö
     $this->assertFalse($method->invoke($subject, null));
     $method = TestUtilities::get_private_method($subject, '_check_assign_array');
     $this->assertTrue(false != $method);
     // ²âÊÔcheckʧ°ÜÇé¿ö
     $testkey = 'test';
     $catched_count = 0;
     try {
         $dest = array();
         $src = array();
         $this->assertFalse($method->invoke($subject, $dest, $testkey, $src, $testkey));
     } catch (Exception $e) {
         $catched_count++;
     }
     $this->assertEquals(1, $catched_count);
     // ²âÊÔnormalize_queue_paramsʧ°Ü
     $method = TestUtilities::get_private_method($subject, '_normalize_queue_params');
     $this->assertTrue(false != $method);
     $params = $this->queue_conf;
     unset($params['window_size']);
     // ÖÆÔì´íÎó
     $this->assertFalse($method->invoke($subject, $params));
 }
 /**
  * ²âÊÔ_update_meta
  */
 public function testUpdateMeta()
 {
     $subject = new BigpipeSubscriber();
     $method = TestUtilities::get_private_method($subject, '_update_meta');
     $this->assertTrue(false !== $method);
     // ÉèÖÃmeta_adapterµÄÐÐΪ
     $sub_info = $this->_gen_sub_broker_group();
     $grp_fail = $this->_gen_sub_broker_group();
     $grp_fail['broker_group']->status = BigpipeBrokerGroupStatus::FAIL;
     $no_cand = $this->_gen_sub_broker_group();
     $no_cand['broker_group']->brokers[1]->role = BigpipeBrokerRole::PRIMARY;
     $this->stub_meta->expects($this->any())->method('get_sub_broker_group')->will($this->onConsecutiveCalls($grp_fail, $no_cand, $sub_info, $sub_info, $sub_info));
     $this->assertTrue(TestUtilities::set_private_var($subject, '_meta_adapter', $this->stub_meta));
     $this->assertTrue(TestUtilities::set_private_var($subject, '_pipelet_msg_id', SubscribeStartPoint::START_FROM_FIRST_POINT));
     // ²âÊÔ1 È¡µ½µÄgroupÊÇfail״̬
     $this->assertFalse($method->invoke($subject));
     // ²âÊÔ2 ÎÞºòÑ¡Õß
     $this->assertFalse($method->invoke($subject));
     // ²âÊÔ3 preferÌõ¼þ²»¶Ô
     $this->assertTrue(TestUtilities::set_private_var($subject, '_pref_conn', 9));
     $this->assertFalse($method->invoke($subject));
     // ²âÊÔ4 ³É¹¦²¢Ñ¡È¡primary broker
     $this->assertTrue(TestUtilities::set_private_var($subject, '_pref_conn', BigpipeConnectPreferType::PRIMARY_BROKER_ONLY));
     $this->assertTrue($method->invoke($subject));
     $brokers = TestUtilities::get_private_var($subject, '_brokers');
     $this->assertTrue(false != $brokers);
     $this->assertEquals(1, count($brokers));
     $this->assertEquals(BigpipeBrokerRole::PRIMARY, $brokers[0]->role);
     // ²âÊÔ5 ³É¹¦²¢Ñ¡È¡secondary broker
     $this->assertTrue(TestUtilities::set_private_var($subject, '_pref_conn', BigpipeConnectPreferType::SECONDARY_BROKER_ONLY));
     $this->assertTrue($method->invoke($subject));
     $brokers = TestUtilities::get_private_var($subject, '_brokers');
     $this->assertTrue(false != $brokers);
     $this->assertEquals(1, count($brokers));
     $this->assertEquals(BigpipeBrokerRole::SECONDARY, $brokers[0]->role);
 }