mirror of
				https://github.com/v2fly/v2ray-core.git
				synced 2025-10-31 17:59:15 +00:00 
			
		
		
		
	test case for large kcp transfer
This commit is contained in:
		
							parent
							
								
									463a9cbef8
								
							
						
					
					
						commit
						2a07ead0dc
					
				| @ -22,6 +22,7 @@ import ( | ||||
| 	"v2ray.com/core/testing/servers/tcp" | ||||
| 	"v2ray.com/core/testing/servers/udp" | ||||
| 	"v2ray.com/core/transport/internet" | ||||
| 	"v2ray.com/core/transport/internet/kcp" | ||||
| 	. "v2ray.com/ext/assert" | ||||
| ) | ||||
| 
 | ||||
| @ -795,6 +796,175 @@ func TestVMessKCP(t *testing.T) { | ||||
| 	CloseAllServers(servers) | ||||
| } | ||||
| 
 | ||||
| func TestVMessKCPLarge(t *testing.T) { | ||||
| 	assert := With(t) | ||||
| 
 | ||||
| 	tcpServer := tcp.Server{ | ||||
| 		MsgProcessor: xor, | ||||
| 	} | ||||
| 	dest, err := tcpServer.Start() | ||||
| 	assert(err, IsNil) | ||||
| 	defer tcpServer.Close() | ||||
| 
 | ||||
| 	userID := protocol.NewID(uuid.New()) | ||||
| 	serverPort := udp.PickPort() | ||||
| 	serverConfig := &core.Config{ | ||||
| 		App: []*serial.TypedMessage{ | ||||
| 			serial.ToTypedMessage(&log.Config{ | ||||
| 				ErrorLogLevel: clog.Severity_Debug, | ||||
| 				ErrorLogType:  log.LogType_Console, | ||||
| 			}), | ||||
| 		}, | ||||
| 		Inbound: []*core.InboundHandlerConfig{ | ||||
| 			{ | ||||
| 				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ | ||||
| 					PortRange: net.SinglePortRange(serverPort), | ||||
| 					Listen:    net.NewIPOrDomain(net.LocalHostIP), | ||||
| 					StreamSettings: &internet.StreamConfig{ | ||||
| 						Protocol: internet.TransportProtocol_MKCP, | ||||
| 						TransportSettings: []*internet.TransportConfig{ | ||||
| 							{ | ||||
| 								Protocol: internet.TransportProtocol_MKCP, | ||||
| 								Settings: serial.ToTypedMessage(&kcp.Config{ | ||||
| 									ReadBuffer: &kcp.ReadBuffer{ | ||||
| 										Size: 4096, | ||||
| 									}, | ||||
| 									WriteBuffer: &kcp.WriteBuffer{ | ||||
| 										Size: 4096, | ||||
| 									}, | ||||
| 									UplinkCapacity: &kcp.UplinkCapacity{ | ||||
| 										Value: 20, | ||||
| 									}, | ||||
| 									DownlinkCapacity: &kcp.DownlinkCapacity{ | ||||
| 										Value: 20, | ||||
| 									}, | ||||
| 								}), | ||||
| 							}, | ||||
| 						}, | ||||
| 					}, | ||||
| 				}), | ||||
| 				ProxySettings: serial.ToTypedMessage(&inbound.Config{ | ||||
| 					User: []*protocol.User{ | ||||
| 						{ | ||||
| 							Account: serial.ToTypedMessage(&vmess.Account{ | ||||
| 								Id:      userID.String(), | ||||
| 								AlterId: 64, | ||||
| 							}), | ||||
| 						}, | ||||
| 					}, | ||||
| 				}), | ||||
| 			}, | ||||
| 		}, | ||||
| 		Outbound: []*core.OutboundHandlerConfig{ | ||||
| 			{ | ||||
| 				ProxySettings: serial.ToTypedMessage(&freedom.Config{}), | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	clientPort := tcp.PickPort() | ||||
| 	clientConfig := &core.Config{ | ||||
| 		App: []*serial.TypedMessage{ | ||||
| 			serial.ToTypedMessage(&log.Config{ | ||||
| 				ErrorLogLevel: clog.Severity_Debug, | ||||
| 				ErrorLogType:  log.LogType_Console, | ||||
| 			}), | ||||
| 		}, | ||||
| 		Inbound: []*core.InboundHandlerConfig{ | ||||
| 			{ | ||||
| 				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{ | ||||
| 					PortRange: net.SinglePortRange(clientPort), | ||||
| 					Listen:    net.NewIPOrDomain(net.LocalHostIP), | ||||
| 				}), | ||||
| 				ProxySettings: serial.ToTypedMessage(&dokodemo.Config{ | ||||
| 					Address: net.NewIPOrDomain(dest.Address), | ||||
| 					Port:    uint32(dest.Port), | ||||
| 					NetworkList: &net.NetworkList{ | ||||
| 						Network: []net.Network{net.Network_TCP}, | ||||
| 					}, | ||||
| 				}), | ||||
| 			}, | ||||
| 		}, | ||||
| 		Outbound: []*core.OutboundHandlerConfig{ | ||||
| 			{ | ||||
| 				ProxySettings: serial.ToTypedMessage(&outbound.Config{ | ||||
| 					Receiver: []*protocol.ServerEndpoint{ | ||||
| 						{ | ||||
| 							Address: net.NewIPOrDomain(net.LocalHostIP), | ||||
| 							Port:    uint32(serverPort), | ||||
| 							User: []*protocol.User{ | ||||
| 								{ | ||||
| 									Account: serial.ToTypedMessage(&vmess.Account{ | ||||
| 										Id:      userID.String(), | ||||
| 										AlterId: 64, | ||||
| 										SecuritySettings: &protocol.SecurityConfig{ | ||||
| 											Type: protocol.SecurityType_AES128_GCM, | ||||
| 										}, | ||||
| 									}), | ||||
| 								}, | ||||
| 							}, | ||||
| 						}, | ||||
| 					}, | ||||
| 				}), | ||||
| 				SenderSettings: serial.ToTypedMessage(&proxyman.SenderConfig{ | ||||
| 					StreamSettings: &internet.StreamConfig{ | ||||
| 						Protocol: internet.TransportProtocol_MKCP, | ||||
| 						TransportSettings: []*internet.TransportConfig{ | ||||
| 							{ | ||||
| 								Protocol: internet.TransportProtocol_MKCP, | ||||
| 								Settings: serial.ToTypedMessage(&kcp.Config{ | ||||
| 									ReadBuffer: &kcp.ReadBuffer{ | ||||
| 										Size: 4096, | ||||
| 									}, | ||||
| 									WriteBuffer: &kcp.WriteBuffer{ | ||||
| 										Size: 4096, | ||||
| 									}, | ||||
| 									UplinkCapacity: &kcp.UplinkCapacity{ | ||||
| 										Value: 20, | ||||
| 									}, | ||||
| 									DownlinkCapacity: &kcp.DownlinkCapacity{ | ||||
| 										Value: 20, | ||||
| 									}, | ||||
| 								}), | ||||
| 							}, | ||||
| 						}, | ||||
| 					}, | ||||
| 				}), | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	servers, err := InitializeServerConfigs(serverConfig, clientConfig) | ||||
| 	assert(err, IsNil) | ||||
| 
 | ||||
| 	var wg sync.WaitGroup | ||||
| 	for i := 0; i < 2; i++ { | ||||
| 		wg.Add(1) | ||||
| 		go func() { | ||||
| 			conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{ | ||||
| 				IP:   []byte{127, 0, 0, 1}, | ||||
| 				Port: int(clientPort), | ||||
| 			}) | ||||
| 			assert(err, IsNil) | ||||
| 
 | ||||
| 			payload := make([]byte, 10240*1024) | ||||
| 			rand.Read(payload) | ||||
| 
 | ||||
| 			nBytes, err := conn.Write(payload) | ||||
| 			assert(err, IsNil) | ||||
| 			assert(nBytes, Equals, len(payload)) | ||||
| 
 | ||||
| 			response := readFrom(conn, time.Minute*10, 10240*1024) | ||||
| 			assert(response, Equals, xor(payload)) | ||||
| 			assert(conn.Close(), IsNil) | ||||
| 			wg.Done() | ||||
| 		}() | ||||
| 	} | ||||
| 	wg.Wait() | ||||
| 
 | ||||
| 	CloseAllServers(servers) | ||||
| } | ||||
| 
 | ||||
| func TestVMessIPv6(t *testing.T) { | ||||
| 	t.SkipNow() // No IPv6 on travis-ci. | ||||
| 	assert := With(t) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Darien Raymond
						Darien Raymond