mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 02:29:03 +00:00 
			
		
		
		
	 d8781bbef2
			
		
	
	
		d8781bbef2
		
			
		
	
	
	
	
		
			
			* implemented postgres-integration-tests * format * format * - disable ryuk - disabled verbose sqlfluff logging * query usage assertion
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import zipfile
 | |
| from subprocess import CalledProcessError
 | |
| 
 | |
| import pytest
 | |
| from testcontainers.postgres import PostgresContainer
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="session")
 | |
| def postgres_container(tmp_path_factory):
 | |
|     data_dir = tmp_path_factory.mktemp("data")
 | |
|     dvd_rental_zip = os.path.join(os.path.dirname(__file__), "data", "dvdrental.zip")
 | |
|     zipfile.ZipFile(dvd_rental_zip, "r").extractall(str(data_dir))
 | |
| 
 | |
|     container = PostgresContainer("postgres:15", dbname="dvdrental")
 | |
|     container.volumes = {str(data_dir): {"bind": "/data"}}
 | |
|     container._command = [
 | |
|         "-c",
 | |
|         "shared_preload_libraries=pg_stat_statements",
 | |
|         "-c",
 | |
|         "pg_stat_statements.max=10000",
 | |
|         "-c",
 | |
|         "pg_stat_statements.track=all",
 | |
|     ]
 | |
| 
 | |
|     with container as container:
 | |
|         docker_container = container.get_wrapped_container()
 | |
|         for query in (
 | |
|             "CREATE USER postgres SUPERUSER;",
 | |
|             "CREATE EXTENSION pg_stat_statements;",
 | |
|         ):
 | |
|             res = docker_container.exec_run(
 | |
|                 ["psql", "-U", container.username, "-d", container.dbname, "-c", query]
 | |
|             )
 | |
|             if res[0] != 0:
 | |
|                 raise CalledProcessError(
 | |
|                     returncode=res[0], cmd=res, output=res[1].decode("utf-8")
 | |
|                 )
 | |
|         res = docker_container.exec_run(
 | |
|             [
 | |
|                 "pg_restore",
 | |
|                 "-U",
 | |
|                 container.username,
 | |
|                 "-d",
 | |
|                 container.dbname,
 | |
|                 "/data/dvdrental.tar",
 | |
|             ]
 | |
|         )
 | |
|         if res[0] != 0:
 | |
|             raise CalledProcessError(
 | |
|                 returncode=res[0], cmd=res, output=res[1].decode("utf-8")
 | |
|             )
 | |
|         yield container
 |