35 lines
		
	
	
		
			804 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			804 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package p2p
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									// "fmt"
							 | 
						||
| 
								 | 
							
									"net"
							 | 
						||
| 
								 | 
							
									"testing"
							 | 
						||
| 
								 | 
							
									"time"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func TestPeerErrorHandler(t *testing.T) {
							 | 
						||
| 
								 | 
							
									address := &net.TCPAddr{IP: net.IP([]byte{1, 2, 3, 4}), Port: 30303}
							 | 
						||
| 
								 | 
							
									peerDisconnect := make(chan DisconnectRequest)
							 | 
						||
| 
								 | 
							
									peerErrorChan := NewPeerErrorChannel()
							 | 
						||
| 
								 | 
							
									peh := NewPeerErrorHandler(address, peerDisconnect, peerErrorChan, NewBlacklist())
							 | 
						||
| 
								 | 
							
									peh.Start()
							 | 
						||
| 
								 | 
							
									defer peh.Stop()
							 | 
						||
| 
								 | 
							
									for i := 0; i < 11; i++ {
							 | 
						||
| 
								 | 
							
										select {
							 | 
						||
| 
								 | 
							
										case <-peerDisconnect:
							 | 
						||
| 
								 | 
							
											t.Errorf("expected no disconnect request")
							 | 
						||
| 
								 | 
							
										default:
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										peerErrorChan <- NewPeerError(MiscError, "")
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									time.Sleep(1 * time.Millisecond)
							 | 
						||
| 
								 | 
							
									select {
							 | 
						||
| 
								 | 
							
									case request := <-peerDisconnect:
							 | 
						||
| 
								 | 
							
										if request.addr.String() != address.String() {
							 | 
						||
| 
								 | 
							
											t.Errorf("incorrect address %v != %v", request.addr, address)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									default:
							 | 
						||
| 
								 | 
							
										t.Errorf("expected disconnect request")
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |