《dtproxy的运行和调试》由会员分享,可在线阅读,更多相关《dtproxy的运行和调试(4页珍藏版)》请在金锄头文库上搜索。
1、DTPROXY 的运行及测试1.1.1协议代理和第三方数据库前置机之间的通讯协议:原则上无法指定一个通用的报文协议,这是由于需要第三方的厂家进行接口,而这又是没有国家或者国际标准,要让众多厂家达成一个通用协议实际上是不可能。所以这里只提几个关键的字段进行说明,只要对这几个关键字段能灵活处理,那就可以应付决大多数的应用。1包长字段:由于协议代理是采用SOCKET中的TCP协议,而TCP协议本身是面向字节流的通讯协议,需要应用层进行协议包的分割。协议包的分割有几种方法:一是采用包长字段,即在协议包中的某个固定字段是包长,说明整个协议包的长度,可根据该长度进行包的分割。二是通过包结束符。三是采用固定
2、包长。总之,必须可以按照某种方式进行包的分割,而绝对不能认为一次调用SOKCET的recv函数收到的就是一个包,这可能产生致命的错误。2消息类型:用来表示是何种请求包,一般请求包和应答包的命令字是一致的。消息类型可能用字符串表示也可能用整型数表示。3流水号:对于非阻塞方式,流水号是必须的,应答包必须原样将请求流水号返回,协议代理才能根据流水号将请求报文和应答报文联系起来,流水号可能用整型数表示也可能用字符串表示。对于阻塞方式的调用,流水号可以不要。4后续包控制字段:当一个请求对应多个应答时,必须有一个标志表示是结束包还是有后续包,这个字段可能是整型数,也可能是字符串。在实际应用中这些关键字段可
3、能有多种组合方式,不能预先假定一定是采用某种方式。对于这些关键字段的提取必须由DLL实现,即通过DLL来封装实现细节。至于其它的一些辅助控制字段以及结果集返回方式的实现细节也都在DLL中实现。1.2数据结构与模块的关系2运行设计启动协议代理时,必须首先运行ICDcomm程序,协议代理应该首先检测本机上是否 已 经 运 行 了ICDcomm, 如 果 没 有 必 须 自 动 启 动ICDcomm。 所以ICDcomm.exe 和Htcpapi.dll 一般安装到系统目录下。协议代理启动后会首先加载配置文件DtProxy.ini,该配置文件放置到运行目录下。当更改了配置文件,并希望新的更改生效时,
4、必须重新加载一次DtProxy。在配置文件中指明了需要加载的协议转换DLL的名称,以及相关DLL的配置文件,协议代理根据此配置加载正确的DLL。IVR要和协议代理通讯,必须在配置台中配置一个新的代理,并配置数据源。当IVR有指向该数据源的存储过程调用时,会发送给协议代理,从IVR看来,协议代理和PROXY是没有区别的,除了数据源不同。协议代理启动后,根据接口配置向数据库前置机建立连接,或者等待数据库前置机的连接请求,并处理相关的请求和应答报文。系统中可以运行多个协议代理(需要数据库前置机的支持,但是一台主机上只能运行一个协议代理或者代理,由各业务模块来决定采用那个协议代理来转发请求。由于协议代
5、理是服务器程序,一般情况下不需要退出。3系统出错处理出错类别出错处理 报文格式不对丢弃,告警,可以写告警日志 网络故障造成 SOCKET断连有重连机制,告警,可以写告警日志 未定义的报文丢弃,告警,可以写告警日志 请求超时告警,可以写告警日志,删除该请 求。如果应答在超时之后返回,被认 为是无效应答,丢弃。告警,可以写 告警日志 应答包没有对应的请求包可能是超时引起,也可能是数据库前 置机流水号写错,都被当作是无效应 答,丢弃。 告警,可以写告警日志1开发环境1.1硬件环境PENTIUM-II 300/64M RAM/10M NIC/4G DISK 一台1.2软件环境WINDOWS NT4.0
6、(SP4) WORKSTATION VC6.0 ICDcomm.exe HTCPAPI.dll 2系统调试与测试方法2.1调试方法PENTIUM-II 300/64M RAM/10M NIC/4G DISK 两台SCE VC6.0 模拟测试程序模拟数据库前置机程序图12 模拟数据库前置机程序图调试时分为四个大的步骤1首先调试报文转换:协议代理和数据库前置机建立一个连接,采用非阻塞方式。由SCE获知模拟测试程序发送单条报文,观察是否可以得到正确的应答。用此方法逐个将所有报文测试一遍。在此过程中可以打开协议代理的报文日志开关,观察日志是否正确。2接口调试:按照需求中所说的各种接口组合配置方式,进行接口测试,这要求模拟数据库前置机也必须支持相关的功能。3连续,大呼叫量调试:根据各种接口的组合配置,采用模拟测试程序进行大呼叫量测试,观察协议代理的稳定性,是否有内存泄漏等。4容错性调试:在步骤3的基础上,进行容错性测试,如间隔的发送非法报文,未定义报文,人为模拟网络故障,在数据库前置机这一侧间隔发送无效应答,久不应答,应答时间随机延时,宕机,频繁断连等,观察协议代理是否可以自动恢复正常。2.2测试方法测试主要进行黑盒测试,测试分为两种方法:1如9.1中所说的步骤4,进行模拟测试2搭建真实ICD客服平台,数据库前置机这一侧还采用模拟程序,进行测试。