Update Iot.js
[platform/upstream/iotjs.git] / test / run_pass / test_net7.js
1 /* Copyright 2015-present Samsung Electronics Co., Ltd. and other contributors
2  *
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15
16
17 var net = require('net');
18 var assert = require('assert');
19 var timers = require('timers');
20
21 var port = 22707;
22
23 var count = 40;
24 var check = [];
25
26 function serverListen() {
27   var server = net.createServer({
28     allowHalfOpen: true
29   });
30
31   var cnt = 0;
32
33   server.listen(port);
34
35   server.on('connection', function(socket) {
36     var msg = '';
37     socket.on('data', function(data) {
38       msg += data;
39     });
40     socket.on('end', function() {
41       socket.end(msg);
42       cnt++;
43
44       if (cnt == count) {
45         server.close();
46       }
47     });
48   });
49 }
50
51 serverListen();
52
53 for (var i = 0; i < count; ++i) {
54   (function(i) {
55     var socket = new net.Socket();
56     var msg = "";
57
58     socket.connect(port, "localhost");
59     socket.on('connect', function() {
60       socket.end(i.toString());
61     });
62     socket.on('data', function(data) {
63       check[data] = true;
64     });
65   })(i);
66 }
67
68 process.on('exit', function(code) {
69   assert.equal(code, 0);
70   for (var i = 0; i < count; ++i) {
71     if (!check[i]) {
72       assert.fail();
73     }
74   }
75 });