mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	selftests: tc-testing: move back to per test ns setup
Surprisingly in kernel configs with most of the debug knobs turned on, pre-allocating the test resources makes tdc run much slower overall than when allocating resources on a per test basis. As these knobs are used in kselftests in downstream CIs, let's go back to the old way of doing things to avoid kselftests timeouts. Reported-by: kernel test robot <oliver.sang@intel.com> Closes: https://lore.kernel.org/oe-lkp/202311161129.3b45ed53-oliver.sang@intel.com Signed-off-by: Pedro Tammela <pctammela@mojatatu.com> Reviewed-by: Simon Horman <horms@kernel.org> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> Link: https://lore.kernel.org/r/20231117171208.2066136-3-pctammela@mojatatu.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
		
							parent
							
								
									025de7b6a6
								
							
						
					
					
						commit
						50a5988a7a
					
				
					 1 changed files with 25 additions and 43 deletions
				
			
		|  | @ -17,44 +17,6 @@ except ImportError: | |||
|     netlink = False | ||||
|     print("!!! Consider installing pyroute2 !!!") | ||||
| 
 | ||||
| def prepare_suite(obj, test): | ||||
|     original = obj.args.NAMES | ||||
| 
 | ||||
|     if 'skip' in test and test['skip'] == 'yes': | ||||
|         return | ||||
| 
 | ||||
|     if 'nsPlugin' not in test['plugins']: | ||||
|         return | ||||
| 
 | ||||
|     shadow = {} | ||||
|     shadow['IP'] = original['IP'] | ||||
|     shadow['TC'] = original['TC'] | ||||
|     shadow['NS'] = '{}-{}'.format(original['NS'], test['random']) | ||||
|     shadow['DEV0'] = '{}id{}'.format(original['DEV0'], test['id']) | ||||
|     shadow['DEV1'] = '{}id{}'.format(original['DEV1'], test['id']) | ||||
|     shadow['DUMMY'] = '{}id{}'.format(original['DUMMY'], test['id']) | ||||
|     shadow['DEV2'] = original['DEV2'] | ||||
|     obj.args.NAMES = shadow | ||||
| 
 | ||||
|     if netlink == True: | ||||
|         obj._nl_ns_create() | ||||
|     else: | ||||
|         obj._ns_create() | ||||
| 
 | ||||
|     # Make sure the netns is visible in the fs | ||||
|     while True: | ||||
|         obj._proc_check() | ||||
|         try: | ||||
|             ns = obj.args.NAMES['NS'] | ||||
|             f = open('/run/netns/{}'.format(ns)) | ||||
|             f.close() | ||||
|             break | ||||
|         except: | ||||
|             time.sleep(0.1) | ||||
|             continue | ||||
| 
 | ||||
|     obj.args.NAMES = original | ||||
| 
 | ||||
| class SubPlugin(TdcPlugin): | ||||
|     def __init__(self): | ||||
|         self.sub_class = 'ns/SubPlugin' | ||||
|  | @ -65,19 +27,39 @@ class SubPlugin(TdcPlugin): | |||
| 
 | ||||
|         super().pre_suite(testcount, testlist) | ||||
| 
 | ||||
|         print("Setting up namespaces and devices...") | ||||
|     def prepare_test(self, test): | ||||
|         if 'skip' in test and test['skip'] == 'yes': | ||||
|             return | ||||
| 
 | ||||
|         with Pool(self.args.mp) as p: | ||||
|             it = zip(cycle([self]), testlist) | ||||
|             p.starmap(prepare_suite, it) | ||||
|         if 'nsPlugin' not in test['plugins']: | ||||
|             return | ||||
| 
 | ||||
|     def pre_case(self, caseinfo, test_skip): | ||||
|         if netlink == True: | ||||
|             self._nl_ns_create() | ||||
|         else: | ||||
|             self._ns_create() | ||||
| 
 | ||||
|         # Make sure the netns is visible in the fs | ||||
|         while True: | ||||
|             self._proc_check() | ||||
|             try: | ||||
|                 ns = self.args.NAMES['NS'] | ||||
|                 f = open('/run/netns/{}'.format(ns)) | ||||
|                 f.close() | ||||
|                 break | ||||
|             except: | ||||
|                 time.sleep(0.1) | ||||
|                 continue | ||||
| 
 | ||||
|     def pre_case(self, test, test_skip): | ||||
|         if self.args.verbose: | ||||
|             print('{}.pre_case'.format(self.sub_class)) | ||||
| 
 | ||||
|         if test_skip: | ||||
|             return | ||||
| 
 | ||||
|         self.prepare_test(test) | ||||
| 
 | ||||
|     def post_case(self): | ||||
|         if self.args.verbose: | ||||
|             print('{}.post_case'.format(self.sub_class)) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Pedro Tammela
						Pedro Tammela