| 
									
										
										
										
											2019-02-22 08:10:02 -05:00
										 |  |  | import ./make-test.nix ({ pkgs, lib, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							| 
									
										
										
										
											2019-02-22 14:17:30 -05:00
										 |  |  |   pythonEnv = pkgs.python3.withPackages (p: [p.beanstalkc]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 08:10:02 -05:00
										 |  |  |   produce = pkgs.writeScript "produce.py" ''
 | 
					
						
							| 
									
										
										
										
											2019-02-22 14:17:30 -05:00
										 |  |  |     #!${pythonEnv.interpreter} | 
					
						
							| 
									
										
										
										
											2019-02-22 08:10:02 -05:00
										 |  |  |     import beanstalkc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     queue = beanstalkc.Connection(host='localhost', port=11300, parse_yaml=False); | 
					
						
							| 
									
										
										
										
											2019-02-22 14:17:30 -05:00
										 |  |  |     queue.put(b'this is a job') | 
					
						
							|  |  |  |     queue.put(b'this is another job') | 
					
						
							| 
									
										
										
										
											2019-02-22 08:10:02 -05:00
										 |  |  |   '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   consume = pkgs.writeScript "consume.py" ''
 | 
					
						
							| 
									
										
										
										
											2019-02-22 14:17:30 -05:00
										 |  |  |     #!${pythonEnv.interpreter} | 
					
						
							| 
									
										
										
										
											2019-02-22 08:10:02 -05:00
										 |  |  |     import beanstalkc | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     queue = beanstalkc.Connection(host='localhost', port=11300, parse_yaml=False); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     job = queue.reserve(timeout=0) | 
					
						
							| 
									
										
										
										
											2019-02-22 14:17:30 -05:00
										 |  |  |     print(job.body.decode('utf-8')) | 
					
						
							| 
									
										
										
										
											2019-02-22 08:10:02 -05:00
										 |  |  |     job.delete() | 
					
						
							|  |  |  |   '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   name = "beanstalkd"; | 
					
						
							|  |  |  |   meta.maintainers = [ lib.maintainers.aanderse ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   machine = | 
					
						
							|  |  |  |     { ... }: | 
					
						
							|  |  |  |     { services.beanstalkd.enable = true; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   testScript = ''
 | 
					
						
							|  |  |  |     startAll; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $machine->waitForUnit('beanstalkd.service'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $machine->succeed("${produce}"); | 
					
						
							|  |  |  |     $machine->succeed("${consume}") eq "this is a job\n" or die; | 
					
						
							|  |  |  |     $machine->succeed("${consume}") eq "this is another job\n" or die; | 
					
						
							|  |  |  |   '';
 | 
					
						
							|  |  |  | }) |