50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
import ./make-test-python.nix ({ pkgs, lib, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  pythonEnv = pkgs.python3.withPackages (p: [p.beanstalkc]);
 | 
						|
 | 
						|
  produce = pkgs.writeScript "produce.py" ''
 | 
						|
    #!${pythonEnv.interpreter}
 | 
						|
    import beanstalkc
 | 
						|
 | 
						|
    queue = beanstalkc.Connection(host='localhost', port=11300, parse_yaml=False);
 | 
						|
    queue.put(b'this is a job')
 | 
						|
    queue.put(b'this is another job')
 | 
						|
  '';
 | 
						|
 | 
						|
  consume = pkgs.writeScript "consume.py" ''
 | 
						|
    #!${pythonEnv.interpreter}
 | 
						|
    import beanstalkc
 | 
						|
 | 
						|
    queue = beanstalkc.Connection(host='localhost', port=11300, parse_yaml=False);
 | 
						|
 | 
						|
    job = queue.reserve(timeout=0)
 | 
						|
    print(job.body.decode('utf-8'))
 | 
						|
    job.delete()
 | 
						|
  '';
 | 
						|
 | 
						|
in
 | 
						|
{
 | 
						|
  name = "beanstalkd";
 | 
						|
  meta.maintainers = [ lib.maintainers.aanderse ];
 | 
						|
 | 
						|
  machine =
 | 
						|
    { ... }:
 | 
						|
    { services.beanstalkd.enable = true;
 | 
						|
    };
 | 
						|
 | 
						|
  testScript = ''
 | 
						|
    start_all()
 | 
						|
 | 
						|
    machine.wait_for_unit("beanstalkd.service")
 | 
						|
 | 
						|
    machine.succeed("${produce}")
 | 
						|
    assert "this is a job\n" == machine.succeed(
 | 
						|
        "${consume}"
 | 
						|
    )
 | 
						|
    assert "this is another job\n" == machine.succeed(
 | 
						|
        "${consume}"
 | 
						|
    )
 | 
						|
  '';
 | 
						|
})
 |