模块间建链失败问题的分析及解决

开发 开发工具
本文中提到的建链失败问题的解决办法虽然简单,但该问题却提醒了我们,在两个模块需要进行消息交互的时候,发送消息的模块一定要等到接收消息的模块“准备好”之后,再发送消息过去。也就说是,软件模块的初始化需要时间,在设计软件的时候,我们一定要将各个模块的初始化时间考虑进去。

很长时间以来,我每天花在地铁上的时间都在一个小时以上。闲来无事,我就在手机上下载了多看阅读,并且购买了很多电子书。最近,我阅读了《异类》,颇有感触。作者在书中提出了一个“一万小时”的定律,也就是说,当一个人花在某件事情上的时间超过一万个小时之后,就会发生质的改变,就会做到比绝大多数人好。我们耳熟能详的一些天才,像盖茨、乔伊等等,虽然天赋很高,但自身也很勤奋,花了比常人多得多的时间在自己所喜欢的事业上。也就说是,是“一万小时”定律让他们与众不同。

量变引起质变的规律也适用于软件开发领域,本文中提到的问题,即是一例。

问题描述

在某项目进行了长期的自动测试工作之后,我们组建了如下的系统架构:

最近,在进行自动测试的过程中,我们发现测试用例的执行总是失败的。更具体地说,就是消息触发脚本无法调用发消息工具,两者之间无法建链。

原因分析

本测试系统已搭建了长达两年,已经累积了上千个测试用例。之前从未遇到过此类消息触发脚本无法调用发消息工具的问题。那么,究竟是什么原因引起的呢?

我们首先检查了自动测试环境,发现一切正常。之后,我们修改了自动测试的调用脚本,变成了手动触发。也就是说,当发消息工具成功启动之后,我们再点击消息触发脚本,发现链路能够正常建立,且消息发送正常。那么,为什么自动测试的时候就不能正常建链呢?

我们再回过头来分析了一下自动测试的整个流程。当自动测试启动之后,消息触发脚本和发消息工具几乎是同时开始运行的,而发消息工具运行起来之后,要先读取配置文件中的测试用例,然后绑定IP和端口号,完成之后再等待和消息触发脚本建链。前期的测试用例比较少,所有当消息触发脚本监测与发消息工具的链路的时候,后者已经成功读取了配置文件,并绑定了IP和端口号。这样,后续的流程就能够正常执行。

但是,随着测试用例的累积,当消息触发脚本开始监测与发消息工具的链路的时候,后者还在读取配置文件,并未绑定IP和端口号。这样,消息触发脚本发现链路还不具备,因此执行就失败了。这也就是我们看到的现象。之所以手动能够执行成功,是因为我们点击消息触发脚本的时候,发消息工具早就完成了读配置和绑定IP与端口号的操作(手动操作要比自动操作慢很多),就不存在建链不成功的问题了。

问题解决

根据以上分析,我们只需要给发消息工具足够的时间,让消息触发脚本晚点与发消息工具建链就可以了。

我们在消息触发脚本中添加了如下语句:

  1. ping 127.0.0.1 -n 30 

当消息触发脚本执行了30次ping操作之后,发消息工具早就做好了准备工作,于是建链成功,后续流程顺利执行。

总结

本文中提到的建链失败问题的解决办法虽然简单,但该问题却提醒了我们,在两个模块需要进行消息交互的时候,发送消息的模块一定要等到接收消息的模块“准备好”之后,再发送消息过去。也就说是,软件模块的初始化需要时间,在设计软件的时候,我们一定要将各个模块的初始化时间考虑进去。

【本文是51CTO专栏作者周兆熊的原创文章,作者微信公众号:周氏逻辑(logiczhou)】

责任编辑:武晓燕 来源: csdn博客
相关推荐

2012-08-08 14:33:32

IBMdW

2012-05-07 08:47:25

Erlang

2022-02-16 08:50:51

web自动化测试python

2021-05-10 17:40:12

Sqlplus登录分析

2022-05-12 08:22:54

内核oopsPC

2023-10-26 08:16:20

C++线程

2015-09-11 09:15:32

RyuSDN

2020-10-23 16:39:35

区块链数字货币

2009-06-14 21:18:02

Java编程汉字问题

2011-08-18 18:46:24

SQL Server

2011-08-24 17:41:16

MySQL死锁

2010-08-26 11:31:24

网络分析模块NAM

2009-07-28 11:32:41

光纤链路故障

2018-10-30 10:40:42

区块链比特币技术

2017-06-14 22:11:57

数据库MySQL死锁

2011-02-16 20:19:13

私有云

2018-08-14 06:57:25

NFV服务链网络虚拟化

2021-09-11 23:06:09

区块链技术信任

2021-04-07 10:55:11

区块链技术物联网

2011-07-11 09:54:16

DAC登录触发器
点赞
收藏

51CTO技术栈公众号