| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | package scenarios | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"net" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-20 20:55:45 +02:00
										 |  |  | 	v2net "v2ray.com/core/common/net" | 
					
						
							|  |  |  | 	"v2ray.com/core/testing/assert" | 
					
						
							|  |  |  | 	"v2ray.com/core/testing/servers/tcp" | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestRouter(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | 	assert := assert.On(t) | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	tcpServer := &tcp.Server{ | 
					
						
							|  |  |  | 		Port: v2net.Port(50024), | 
					
						
							|  |  |  | 		MsgProcessor: func(data []byte) []byte { | 
					
						
							|  |  |  | 			buffer := make([]byte, 0, 2048) | 
					
						
							|  |  |  | 			buffer = append(buffer, []byte("Processed: ")...) | 
					
						
							|  |  |  | 			buffer = append(buffer, data...) | 
					
						
							|  |  |  | 			return buffer | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	_, err := tcpServer.Start() | 
					
						
							|  |  |  | 	assert.Error(err).IsNil() | 
					
						
							| 
									
										
										
										
											2015-12-15 16:00:47 +01:00
										 |  |  | 	defer tcpServer.Close() | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	tcpServer2Accessed := false | 
					
						
							|  |  |  | 	tcpServer2 := &tcp.Server{ | 
					
						
							|  |  |  | 		Port: v2net.Port(50025), | 
					
						
							|  |  |  | 		MsgProcessor: func(data []byte) []byte { | 
					
						
							|  |  |  | 			tcpServer2Accessed = true | 
					
						
							|  |  |  | 			return data | 
					
						
							|  |  |  | 		}, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	_, err = tcpServer2.Start() | 
					
						
							|  |  |  | 	assert.Error(err).IsNil() | 
					
						
							| 
									
										
										
										
											2015-12-15 16:00:47 +01:00
										 |  |  | 	defer tcpServer2.Close() | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	assert.Error(InitializeServerSetOnce("test_3")).IsNil() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{ | 
					
						
							|  |  |  | 		IP:   []byte{127, 0, 0, 1}, | 
					
						
							|  |  |  | 		Port: int(50020), | 
					
						
							|  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2016-01-26 10:27:50 +00:00
										 |  |  | 	assert.Error(err).IsNil() | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	payload := "direct dokodemo request." | 
					
						
							|  |  |  | 	nBytes, err := conn.Write([]byte(payload)) | 
					
						
							|  |  |  | 	assert.Error(err).IsNil() | 
					
						
							|  |  |  | 	assert.Int(nBytes).Equals(len(payload)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	conn.CloseWrite() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	response := make([]byte, 1024) | 
					
						
							|  |  |  | 	nBytes, err = conn.Read(response) | 
					
						
							|  |  |  | 	assert.Error(err).IsNil() | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | 	assert.String("Processed: " + payload).Equals(string(response[:nBytes])) | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | 	conn.Close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	conn, err = net.DialTCP("tcp", nil, &net.TCPAddr{ | 
					
						
							|  |  |  | 		IP:   []byte{127, 0, 0, 1}, | 
					
						
							|  |  |  | 		Port: int(50022), | 
					
						
							|  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2016-02-01 11:38:54 +00:00
										 |  |  | 	assert.Error(err).IsNil() | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	payload = "blocked dokodemo request." | 
					
						
							|  |  |  | 	nBytes, err = conn.Write([]byte(payload)) | 
					
						
							|  |  |  | 	assert.Error(err).IsNil() | 
					
						
							|  |  |  | 	assert.Int(nBytes).Equals(len(payload)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	conn.CloseWrite() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	response = make([]byte, 1024) | 
					
						
							|  |  |  | 	nBytes, err = conn.Read(response) | 
					
						
							|  |  |  | 	assert.Error(err).IsNotNil() | 
					
						
							|  |  |  | 	assert.Int(nBytes).Equals(0) | 
					
						
							|  |  |  | 	assert.Bool(tcpServer2Accessed).IsFalse() | 
					
						
							|  |  |  | 	conn.Close() | 
					
						
							| 
									
										
										
										
											2016-01-04 00:33:25 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	CloseAllServers() | 
					
						
							| 
									
										
										
										
											2015-12-04 16:32:42 +00:00
										 |  |  | } |