| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  | # Regression test for systemd-timesync having moved the state directory without | 
					
						
							|  |  |  | # upstream providing a migration path. https://github.com/systemd/systemd/issues/12131 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-15 18:16:00 +01:00
										 |  |  | import ./make-test-python.nix (let | 
					
						
							| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  |   common = { lib, ... }: { | 
					
						
							|  |  |  |     # override the `false` value from the qemu-vm base profile | 
					
						
							|  |  |  |     services.timesyncd.enable = lib.mkForce true; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  |   mkVM = conf: { imports = [ conf common ]; }; | 
					
						
							|  |  |  | in { | 
					
						
							|  |  |  |   name = "systemd-timesyncd"; | 
					
						
							|  |  |  |   nodes = { | 
					
						
							|  |  |  |     current = mkVM {}; | 
					
						
							|  |  |  |     pre1909 = mkVM ({lib, ... }: with lib; { | 
					
						
							|  |  |  |       # create the path that should be migrated by our activation script when | 
					
						
							|  |  |  |       # upgrading to a newer nixos version | 
					
						
							|  |  |  |       system.stateVersion = "19.03"; | 
					
						
							|  |  |  |       system.activationScripts.simulate-old-timesync-state-dir = mkBefore ''
 | 
					
						
							|  |  |  |         rm -f /var/lib/systemd/timesync | 
					
						
							|  |  |  |         mkdir -p /var/lib/systemd /var/lib/private/systemd/timesync | 
					
						
							|  |  |  |         ln -s /var/lib/private/systemd/timesync /var/lib/systemd/timesync | 
					
						
							|  |  |  |         chown systemd-timesync: /var/lib/private/systemd/timesync | 
					
						
							|  |  |  |       '';
 | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   testScript = ''
 | 
					
						
							| 
									
										
										
										
											2019-12-15 18:16:00 +01:00
										 |  |  |     start_all() | 
					
						
							|  |  |  |     current.succeed("systemctl status systemd-timesyncd.service") | 
					
						
							| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  |     # on a new install with a recent systemd there should not be any | 
					
						
							|  |  |  |     # leftovers from the dynamic user mess | 
					
						
							| 
									
										
										
										
											2019-12-15 18:16:00 +01:00
										 |  |  |     current.succeed("test -e /var/lib/systemd/timesync") | 
					
						
							|  |  |  |     current.succeed("test ! -L /var/lib/systemd/timesync") | 
					
						
							| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # timesyncd should be running on the upgrading system since we fixed the | 
					
						
							|  |  |  |     # file bits in the activation script | 
					
						
							| 
									
										
										
										
											2019-12-15 18:16:00 +01:00
										 |  |  |     pre1909.succeed("systemctl status systemd-timesyncd.service") | 
					
						
							| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # the path should be gone after the migration | 
					
						
							| 
									
										
										
										
											2019-12-15 18:16:00 +01:00
										 |  |  |     pre1909.succeed("test ! -e /var/lib/private/systemd/timesync") | 
					
						
							| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # and the new path should no longer be a symlink | 
					
						
							| 
									
										
										
										
											2019-12-15 18:16:00 +01:00
										 |  |  |     pre1909.succeed("test -e /var/lib/systemd/timesync") | 
					
						
							|  |  |  |     pre1909.succeed("test ! -L /var/lib/systemd/timesync") | 
					
						
							| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # after a restart things should still work and not fail in the activation | 
					
						
							|  |  |  |     # scripts and cause the boot to fail.. | 
					
						
							| 
									
										
										
										
											2019-12-15 18:16:00 +01:00
										 |  |  |     pre1909.shutdown() | 
					
						
							|  |  |  |     pre1909.start() | 
					
						
							|  |  |  |     pre1909.succeed("systemctl status systemd-timesyncd.service") | 
					
						
							| 
									
										
										
										
											2019-05-15 11:05:37 +02:00
										 |  |  |   '';
 | 
					
						
							|  |  |  | }) |