1/* 本测试case,测试tcp的接口,接口返回值等,tcp server是公网tcp服务器:47.101.151.113 */
2function ArrayToString(fileData){
3  var dataString = "";
4  for (var i = 0; i < fileData.length; i++) {
5    dataString += String.fromCharCode(fileData[i]);
6  }
7
8  return dataString;
9}
10
11console.log('tcp: testing tcp...');
12// 测试 tcp 模块
13var tcp = require('tcp');
14if(!(tcp && tcp.createClient)){
15  throw new Error("tcp: [failed] require(\'tcp\')");
16}
17
18console.log('tcp: [success] require(\'tcp\')');
19
20var tcpSocket = tcp.createClient({
21  host: '47.101.151.113',
22  port: 50020,
23  success: function() {
24    console.log('tcp: tcp client connect success');
25  },
26  fail: function() {
27    console.log('tcp: tcp client connect failed');
28  }
29});
30// 测试 tcpSocket 接口
31if(!tcpSocket || !tcpSocket.send || !tcpSocket.close || !tcpSocket.on || !tcpSocket.reconnect) {
32  throw new Error("tcp: [failed] tcp instance");
33}
34
35// 测试接收数据
36var sendCnt = 0, recvCnt = 0;
37var defaultMessage = 'AMP tcp server reply';
38tcpSocket.on('message', function(message) {
39  if(!message || typeof message !== 'object' || ArrayToString(message) !== defaultMessage) {
40      throw new Error("tcp: [failed] tcp receive message");
41  }
42  recvCnt ++;
43  console.log('tcp: [debug] on message: ' + ArrayToString(message) + ', cnt: ' + recvCnt);
44  if(recvCnt >= 10){
45      tcpSocket.close();
46      console.log('tcp: [success] tcp.on(\'message\')');
47      console.log('tcp: testing tcp success');
48  }
49});
50
51// 接收数据超时
52setTimeout(function() {
53  if(recvCnt != 10) {
54      console.log('tcp: [failed] tcp on message');
55  }
56}, 12000);
57
58// 测试socket异常
59tcpSocket.on('error', function(err) {
60  console.log('tcp: tcp error ', err);
61  tcpSocket.close();
62  throw new Error("tcp: [failed] tcp on error");
63});
64
65tcpSocket.on('disconnect', function() {
66  console.log('tcp: tcp disconnected');
67});
68
69// 测试发送数据
70var intervalHandle = setInterval(function() {
71  tcpSocket.send({
72      message: "this is xxw, cnt: " + sendCnt,
73      success: function() {
74          sendCnt ++;
75          console.log("tcp: [debug] send success, cnt: ", sendCnt);
76          // 退出发送
77          if(sendCnt >= 10){
78              clearInterval(intervalHandle);
79              console.log('tcp: [success] tcp.send()');
80          }
81      },
82      fail: function() {
83          console.log("tcp: send fail");
84          throw new Error("tcp: [failed] tcp send fail");
85      }
86  });
87}, 1000);