You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							50 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							50 lines
						
					
					
						
							1.2 KiB
						
					
					
				import signal | 
						|
import sys | 
						|
from utils import * | 
						|
from docker import rebuild_images_if_needed | 
						|
from docker_compose import Compose | 
						|
 | 
						|
 | 
						|
cluster = Compose() | 
						|
 | 
						|
 | 
						|
def abort_handler(s, _): | 
						|
    warn(f'Received signal: {s}') | 
						|
    warn(f'Gracefully stopping...') | 
						|
    cluster.down() | 
						|
 | 
						|
 | 
						|
def usage_exit(): | 
						|
    usage = f"""Usage: | 
						|
    python {__file__.split('/')[-1]} [--rebuild] [--preserve] [--no-run]""" | 
						|
 | 
						|
    print(usage) | 
						|
    sys.exit(1) | 
						|
 | 
						|
 | 
						|
def run_tests(): | 
						|
    allowed_args = set(["--rebuild", "--preserve", "--no-run"]) | 
						|
    args = sys.argv[1:] | 
						|
    if not set(args).issubset(allowed_args): | 
						|
        usage_exit() | 
						|
    force_rebuild = '--rebuild' in args | 
						|
    preserve_containers = '--preserve' in args | 
						|
    only_setup_cluster = '--no-run' in args | 
						|
    for s in (signal.SIGTERM, signal.SIGINT, signal.SIGHUP): | 
						|
        signal.signal(s, abort_handler) | 
						|
    rebuild_images_if_needed(force_rebuild) | 
						|
    try: | 
						|
        cluster.up() | 
						|
        cluster.is_alive() | 
						|
        if not only_setup_cluster: | 
						|
            cluster.run('cargo test --test integration') | 
						|
    except Exception as e: | 
						|
        err(e) | 
						|
        sys.exit(1) | 
						|
    finally: | 
						|
        if not preserve_containers and not only_setup_cluster: | 
						|
            cluster.down() | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__': | 
						|
    run_tests()
 | 
						|
 |