hotfox数据库连接池测试

1.目的

初步测试与验证连接池的行为.--待扩充

源于一个不正常的日志记录:似乎表现为一个连接仅被固定的线程使用.---从测试结果看不是机制本身,可能是使用的原因.

2.测试代码

int CXboxPlugin::ReadPrivateConfig() {
 if (parent::ReadPrivateConfig()) 
  return -1;

 if (config_->Open(cf_.c_str())) {
  ACE_ERROR_RETURN((LM_ERROR,"open config file %s failure.\n",cf_.c_str()),-1);
 }
 INode *root = config_->GetChildNodes()->GetChildNodes("config")->GetChildNode(0);
 INode *node;
 node = root->GetChildNodes()->GetChildNodes("dbc")->GetChildNode(0);
 local_dbc_ = (string)*node;
 thr_mgr_.spawn_n(10,test_proc); /// 创建10个线程
}

 

///< 线程函数
ACE_THR_FUNC_RETURN test_proc(void*) {
 do {
 USENEWDBC(pdbor,CXboxPlugin::instance()->local_dbc_.c_str());
 CXboxPlugin::instance()->nlogger_->log(LO_STDOUT|LO_FILE,SEVERITY_INFO,"THREADID=%lu获取到数据库连接id:%lu.\n",GetCurrentThreadId(),pdbor->GetID());
 Sleep(10000);
 } 
 
 return 0;
}

 

3.测试结果

连接池配置为1个初始连接.插件启动10个线程请求连接.

 

.不允许连接不够时自动创建(auto_new=false)
 <conn constr="Provider=SQLOLEDB.1;Password=sa101;Persist Security Info=True;User ID=sa;Initial Catalog=retail_EE;Data Source=172.23.2.101,1433"
 count="1" auto_new="false" name="laton" db_ext="sqlserver_ext.dll"/>

输出日志如下:
[2015-01-04 14:38:10:713][线程8992][2][20][0][]LATON#client使用情况:
[2015-01-04 14:38:10:713][线程8992][2][20][0][][1]连接id=1,使用状态=已使用,取用时间=0(秒),拥有者线程=9064.
[2015-01-04 14:38:10:713][线程9064][2][20][0][]THREADID=9064获取到数据库连接id:1.
[2015-01-04 14:38:20:729][线程8308][2][20][0][]LATON#client使用情况:
[2015-01-04 14:38:20:729][线程8308][2][20][0][][1]连接id=1,使用状态=已使用,取用时间=0(秒),拥有者线程=9064.
[2015-01-04 14:38:20:729][线程9064][2][20][0][]THREADID=9064获取到数据库连接id:1.
[2015-01-04 14:38:30:745][线程9064][2][20][0][]LATON#client使用情况:
[2015-01-04 14:38:30:745][线程9064][2][20][0][][1]连接id=1,使用状态=已使用,取用时间=0(秒),拥有者线程=5804.
[2015-01-04 14:38:30:745][线程5804][2][20][0][]THREADID=5804获取到数据库连接id:1.
[2015-01-04 14:38:40:761][线程5804][2][20][0][]LATON#client使用情况:
[2015-01-04 14:38:40:761][线程5804][2][20][0][][1]连接id=1,使用状态=已使用,取用时间=0(秒),拥有者线程=3284.
[2015-01-04 14:38:40:761][线程3284][2][20][0][]THREADID=3284获取到数据库连接id:1.


.允许自动创建连接(auto_new=true,默认行为)
 <conn constr="Provider=SQLOLEDB.1;Password=sa101;Persist Security Info=True;User ID=sa;Initial Catalog=retail_EE;Data Source=172.23.2.101,1433"
  count="1" auto_new="true" name="laton" db_ext="sqlserver_ext.dll"/>
输出日志如下:
[2015-01-04 14:36:58:665][线程8464][2][20][0][]THREADID=8464获取到数据库连接id:1.
[2015-01-04 14:36:58:665][线程7024][2][20][0][]THREADID=7024获取到数据库连接id:2.
[2015-01-04 14:36:58:665][线程8268][2][20][0][]THREADID=8268获取到数据库连接id:3.
[2015-01-04 14:36:58:681][线程8984][2][20][0][]THREADID=8984获取到数据库连接id:4.
[2015-01-04 14:36:58:681][线程5084][2][20][0][]THREADID=5084获取到数据库连接id:5.
[2015-01-04 14:36:58:697][线程1688][2][20][0][]THREADID=1688获取到数据库连接id:6.
[2015-01-04 14:36:58:712][线程8616][2][20][0][]THREADID=8616获取到数据库连接id:7.
[2015-01-04 14:36:58:728][线程3176][2][20][0][]THREADID=3176获取到数据库连接id:8.
[2015-01-04 14:36:58:744][线程8540][2][20][0][]THREADID=8540获取到数据库连接id:9.
[2015-01-04 14:36:58:744][线程8844][2][20][0][]THREADID=8844获取到数据库连接id:10.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值