finishd tests for multicast lan service discovery
This commit is contained in:
		
							parent
							
								
									d4652e1107
								
							
						
					
					
						commit
						18aca5aeea
					
				
					 4 changed files with 68 additions and 9 deletions
				
			
		
							
								
								
									
										12
									
								
								run_tests.sh
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								run_tests.sh
									
										
									
									
									
								
							|  | @ -24,9 +24,9 @@ echo "ran $ran integration tests." | |||
| echo "total test time $SECONDS" | ||||
| ran=0; | ||||
| 
 | ||||
| for f in tests/browser-tests/*.py; do | ||||
|  python3 "$f"   || close # if needed | ||||
|  let "ran++" | ||||
| done | ||||
| echo "ran $ran browser tests." | ||||
| echo "total test time $SECONDS" | ||||
| #for f in tests/browser-tests/*.py; do | ||||
| # python3 "$f"   || close # if needed | ||||
| # let "ran++" | ||||
| #done | ||||
| #echo "ran $ran browser tests." | ||||
| #echo "total test time $SECONDS" | ||||
|  |  | |||
|  | @ -35,7 +35,7 @@ class LANManager: | |||
| 
 | ||||
| 
 | ||||
|     def start(self): | ||||
|         Thread(target=learn_services, daemon=True).start() | ||||
|         Thread(target=learn_services, args=[[]], daemon=True).start() | ||||
|         Thread(target=advertise_service, daemon=True).start() | ||||
|         Thread(tra) | ||||
|         #Thread(tra) | ||||
| 
 | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| 1583754731 | ||||
| 1584165158 | ||||
							
								
								
									
										59
									
								
								tests/test_lan_publsh.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								tests/test_lan_publsh.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| #!/usr/bin/env python3 | ||||
| import sys, os | ||||
| sys.path.append(".") | ||||
| sys.path.append("src/") | ||||
| import uuid | ||||
| from threading import Thread | ||||
| TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/' | ||||
| print("Test directory:", TEST_DIR) | ||||
| os.environ["ONIONR_HOME"] = TEST_DIR | ||||
| import unittest, json | ||||
| 
 | ||||
| from utils import identifyhome, createdirs | ||||
| from onionrsetup import setup_config | ||||
| createdirs.create_dirs() | ||||
| setup_config() | ||||
| import struct | ||||
| from utils import bettersleep | ||||
| from lan.discover import lan_ips, MCAST_GRP, MCAST_PORT, IS_ALL_GROUPS | ||||
| from lan.discover import advertise_service | ||||
| import socket | ||||
| from socket import SHUT_RDWR | ||||
| 
 | ||||
| 
 | ||||
| class TestLanLearn(unittest.TestCase): | ||||
|     def test_lan_broadcast(self): | ||||
|         test_ip = '192.168.1.30' | ||||
|         def multicast(): | ||||
|             sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) | ||||
|             sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | ||||
|             if IS_ALL_GROUPS: | ||||
|                 # on this port, receives ALL multicast groups | ||||
|                 sock.bind(('', MCAST_PORT)) | ||||
|             else: | ||||
|                 # on this port, listen ONLY to MCAST_GRP | ||||
|                 sock.bind((MCAST_GRP, MCAST_PORT)) | ||||
|             mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY) | ||||
| 
 | ||||
|             sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) | ||||
| 
 | ||||
|             service_ips = sock.recv(200).decode('utf-8') | ||||
|             if not service_ips: raise ValueError | ||||
| 
 | ||||
|             self.assertIn('onionr', service_ips) | ||||
|             self.assertEqual(len(set(set(service_ips.replace('onionr', '').split('-')) ^ set(lan_ips))), 1) | ||||
|             for x in set(set(service_ips.replace('onionr', '').split('-')) ^ set(lan_ips)): | ||||
|                 self.assertEqual('', x) | ||||
| 
 | ||||
|             try: | ||||
|                 sock.shutdown(SHUT_RDWR) | ||||
|             except OSError: | ||||
|                 pass | ||||
|             sock.close() | ||||
|         test_list = [test_ip] | ||||
| 
 | ||||
|         Thread(target=advertise_service, daemon=True).start() | ||||
|         bettersleep.better_sleep(1) | ||||
|         multicast() | ||||
| 
 | ||||
| unittest.main() | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue