Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							fddc7117e4 
							
						 
					 
					
						
						
							
							stability and race conditions in auth and node store ( #2781 )  
						
						 
						
						... 
						
						
						
						This PR addresses some consistency issues that was introduced or discovered with the nodestore.
nodestore:
Now returns the node that is being put or updated when it is finished. This closes a race condition where when we read it back, we do not necessarily get the node with the given change and it ensures we get all the other updates from that batch write.
auth:
Authentication paths have been unified and simplified. It removes a lot of bad branches and ensures we only do the minimal work.
A comprehensive auth test set has been created so we do not have to run integration tests to validate auth and it has allowed us to generate test cases for all the branches we currently know of.
integration:
added a lot more tooling and checks to validate that nodes reach the expected state when they come up and down. Standardised between the different auth models. A lot of this is to support or detect issues in the changes to nodestore (races) and auth (inconsistencies after login and reaching correct state)
This PR was assisted, particularly tests, by claude code. 
						
					 
					
						2025-10-16 12:17:43 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							9b962956b5 
							
						 
					 
					
						
						
							
							integration: Eventually, debug output, lint and format  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2025-09-09 09:40:00 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							044193bf34 
							
						 
					 
					
						
						
							
							integration: Use Eventually around external calls ( #2685 )  
						
						 
						
						
						
					 
					
						2025-07-13 17:37:11 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							c6d7b512bd 
							
						 
					 
					
						
						
							
							integration: replace time.Sleep with assert.EventuallyWithT  ( #2680 )  
						
						 
						
						
						
					 
					
						2025-07-10 23:38:55 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							f1206328dc 
							
						 
					 
					
						
						
							
							fix webauth + autoapprove routes  ( #2528 )  
						
						 
						
						... 
						
						
						
						* types/node: add helper funcs for node tags
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* types/node: add DebugString method for node
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* policy/v2: add String func to AutoApprover interface
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* policy/v2: simplify, use slices.Contains
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* policy/v2: debug, use nodes.DebugString
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* policy/v1: fix potential nil pointer in NodeCanApproveRoute
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* policy/v1: slices.Contains
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration/tsic: fix diff in login commands
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: fix webauth running with wrong scenario
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: move common oidc opts to func
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: require node count, more verbose
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* auth: remove uneffective route approve
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* .github/workflows: fmt
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration/tsic: add id func
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: remove call that might be nil
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: test autoapprovers against web/authkey x group/tag/user
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: unique network id per scenario
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* Revert "integration: move common oidc opts to func"
This reverts commit 7e9d165d4a .
* remove cmd
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: clean docker images between runs in ci
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration: run autoapprove test against differnt policy modes
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* integration/tsic: append, not overrwrite extra login args
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
* .github/workflows: remove polv2
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
---------
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2025-04-30 07:54:04 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							603f3ad490 
							
						 
					 
					
						
						
							
							Multi network integration tests ( #2464 )  
						
						 
						
						
						
					 
					
						2025-03-21 11:49:32 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							d57a55c024 
							
						 
					 
					
						
						
							
							Rewrite authentication flow ( #2374 )  
						
						 
						
						
						
					 
					
						2025-02-01 09:16:51 +00:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							4c8e847f47 
							
						 
					 
					
						
						
							
							use dedicated registration ID for auth flow ( #2337 )  
						
						 
						
						
						
					 
					
						2025-01-26 22:20:11 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								hopleus 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							52a3b54ba2 
							
						 
					 
					
						
						
							
							Fixed loginUrl with "WithTLS()" used. Added "WithTLS()" to scenario integration tests ( #2187 )  
						
						 
						
						
						
					 
					
						2024-10-15 14:38:43 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							ed78ecda12 
							
						 
					 
					
						
						
							
							add shutdown that asserts if headscale had panics ( #2126 )  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2024-09-17 11:44:55 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							ba614a5e6c 
							
						 
					 
					
						
						
							
							metrics, tuning in tests, db cleanups, fix concurrency issue ( #1895 )  
						
						 
						
						
						
					 
					
						2024-04-21 18:28:17 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							58c94d2bd3 
							
						 
					 
					
						
						
							
							Rework map session  
						
						 
						
						... 
						
						
						
						This commit restructures the map session in to a struct
holding the state of what is needed during its lifetime.
For streaming sessions, the event loop is structured a
bit differently not hammering the clients with updates
but rather batching them over a short, configurable time
which should significantly improve cpu usage, and potentially
flakyness.
The use of Patch updates has been dialed back a little as
it does not look like its a 100% ready for prime time. Nodes
are now updated with full changes, except for a few things
like online status.
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2024-04-15 12:31:53 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							00e7550e76 
							
						 
					 
					
						
						
							
							Add assert func for verifying status, netmap and netcheck ( #1723 )  
						
						 
						
						
						
					 
					
						2024-02-09 07:26:41 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							f8a58aa15b 
							
						 
					 
					
						
						
							
							introduce a version subset we must test against  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2023-09-05 08:47:43 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							b4a4d0f760 
							
						 
					 
					
						
						
							
							Handle errors in integration test setups  
						
						 
						
						... 
						
						
						
						Thanks @kev-the-dev
Closes  #1460 
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2023-09-05 08:47:43 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Juan Font 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							9836b097a4 
							
						 
					 
					
						
						
							
							Make sure all clients of a user are ready ( #1335 )  
						
						 
						
						
						
					 
					
						2023-04-12 09:25:51 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							97a909866d 
							
						 
					 
					
						
						
							
							Use pingAll helper for all integration pinging  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2023-02-03 09:26:22 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Heusel 
							
						 
					 
					
						
						
						
						
							
						
						
							9f6e546522 
							
						 
					 
					
						
						
							
							modify the test to reflect the changes on the webinterface  
						
						 
						
						... 
						
						
						
						related to 2d44a1c99c17
Signed-off-by: Christian Heusel <christian@heusel.eu> 
						
					 
					
						2023-01-26 08:33:44 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							e3a2593344 
							
						 
					 
					
						
						
							
							Rename [Nn]amespace -> [Uu]ser in go code  
						
						 
						
						... 
						
						
						
						Use gopls, ag and perl to rename all occurances of Namespace
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2023-01-18 15:40:04 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Juan Font 
							
						 
					 
					
						
						
						
						
							
						
						
							2494e27a73 
							
						 
					 
					
						
						
							
							Make WaitForTailscaleLogout a Scenario method  
						
						 
						
						
						
					 
					
						2022-12-22 20:02:18 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Juan Font 
							
						 
					 
					
						
						
						
						
							
						
						
							b7d7fc57c4 
							
						 
					 
					
						
						
							
							Add logout method to tsic  
						
						 
						
						
						
					 
					
						2022-12-22 00:09:21 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Juan Font 
							
						 
					 
					
						
						
						
						
							
						
						
							b54c0e3d22 
							
						 
					 
					
						
						
							
							Add integration tests that check logout and relogin  
						
						 
						
						
						
					 
					
						2022-12-21 20:52:08 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							e7f322b9b6 
							
						 
					 
					
						
						
							
							Mark all tests to run in parallel  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2022-11-22 13:18:58 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Juan Font 
							
						 
					 
					
						
						
						
						
							
						
						
							f90a3c196c 
							
						 
					 
					
						
						
							
							Move TS WaitForReady outside up goroutine  
						
						 
						
						
						
					 
					
						2022-11-19 17:16:08 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							46df219ed3 
							
						 
					 
					
						
						
							
							Add testname identifier to hs container  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2022-11-14 16:50:28 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							93d56362af 
							
						 
					 
					
						
						
							
							Lock and unify headscale start/get method  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2022-11-14 16:50:28 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Kristoffer Dalby 
							
						 
					 
					
						
						
						
						
							
						
						
							4799859be0 
							
						 
					 
					
						
						
							
							Fix renamed method  
						
						 
						
						... 
						
						
						
						Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com> 
						
					 
					
						2022-11-14 16:50:28 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Juan Font Alonso 
							
						 
					 
					
						
						
						
						
							
						
						
							89ff5c83d2 
							
						 
					 
					
						
						
							
							Add web flow auth integration tests  
						
						 
						
						
						
					 
					
						2022-11-14 08:47:02 +01:00