integration_test/general.py (73 lines of code) (raw):

import os import subprocess import random import string ERROR_CODE = 1 def runCommand(command, message): result = subprocess.run(command, shell=True) print(message, result.returncode) return result.returncode def get_random_string(length): letters = string.ascii_lowercase result_str = ''.join(random.choice(letters) for i in range(length)) print("Store name is:", result_str) return result_str # get short SHA from env def get_short_sha(): return os.environ.get("SHORT_SHA") # get imageproject from env def get_imageproject(): return os.environ.get("IMAGEPROJECT") # install environment def install_environment(): return runCommand("./integration_test/scripts/install-env.sh", "install environment exit with") # store-scp def store_scp(store_csp_run_step, store_scp_port): return runCommand("./integration_test/scripts/run-store-scp-and-wait.sh " + store_csp_run_step + " "+store_scp_port, "store-scp exit with") # build adapter def build_adapter(): return runCommand("./integration_test/scripts/build-adapters.sh", "build adapter exit with") # build adapter image def build_adapter_image(imageproject, short_sha): return runCommand("./integration_test/scripts/build-adapter-image.sh "+imageproject+" "+short_sha, "build adapter image exit with") # setup-dataset-and-dicom-store def setup_dataset_and_dicom_store(project, location, dataset, store_name): return runCommand("./integration_test/scripts/setup-dataset-and-store.sh "+project+" "+location+" "+dataset+" "+store_name, "setup-dataset-and-dicom-store exit with") # run import adapter def run_import_adapter(adapter_port, version, project, location, dataset, store_name, store_scp_run_step, store_scp_port, com_scu_step, com_scu_port): return runCommand("./integration_test/scripts/run-import-adapter.sh "+adapter_port+" "+version+" "+project+" "+location+" "+dataset+" "+store_name+" "+store_scp_run_step+" "+store_scp_port+" "+com_scu_step+" "+com_scu_port, "run import adapter exit with") # run import adapter with http2 mode def run_import_adapter_http2(adapter_port, version, project, location, dataset, store_name): return runCommand("./integration_test/scripts/run-import-adapter-http2.sh "+adapter_port+" "+version+" "+project+" "+location+" "+dataset+" "+store_name, "run import adapter exit with") # run import adapter with local backup mode def run_import_adapter_local_backup(adapter_port, version, project, location, dataset, store_name): return runCommand("./integration_test/scripts/run-import-adapter-local-backup.sh "+adapter_port+" "+version+" "+project+" "+location+" "+dataset+" "+store_name, "run import adapter exit with") # run import adapter with gsc backup mode def run_import_adapter_gcs_backup(adapter_port, version, project, location, dataset, store_name, bucket): return runCommand("./integration_test/scripts/run-import-adapter-gcs-backup.sh "+adapter_port+" "+version+" "+project+" "+location+" "+dataset+" "+store_name+" "+bucket, "run import adapter exit with") # wait-for-adapter # wait-for-storescp def wait_for_port(host, port): return runCommand("./integration_test/scripts/wait-for-port.sh "+host+" " + port, "wait-for-adapter exit with") # run-store-scu def run_store_scu(host, adapter_port, file_path): return runCommand("export PATH=/opt/dcm4che/bin:$PATH &&" "storescu -c IMPORTADAPTER@"+host+":"+adapter_port+" "+file_path, "run-store-scu exit with") # run-find-scu-instance def run_find_scu_instance(host, adapter_port): return runCommand("export PATH=/opt/dcm4che/bin:$PATH &&" "findscu -c IMPORTADAPTER@"+host+":"+adapter_port+" -L IMAGE -X --out-cat --out-file findscu-instance-result.xml --out-dir /workspace/integration_test/", "run-find-scu-instance exit with") # run-find-scu-series def run_find_scu_series(host, adapter_port): return runCommand("export PATH=/opt/dcm4che/bin:$PATH &&" "findscu -c IMPORTADAPTER@"+host+":"+adapter_port+" -L SERIES -X --out-cat --out-file findscu-series-result.xml --out-dir /workspace/integration_test/", "run-find-scu-series exit with") # run-find-scu-study def run_find_scu_study(host, adapter_port): return runCommand("export PATH=/opt/dcm4che/bin:$PATH &&" "findscu -c IMPORTADAPTER@"+host+":"+adapter_port+" -L STUDY -X --out-cat --out-file findscu-study-result.xml --out-dir /workspace/integration_test/", "run-find-scu-study exit with") # run-move-scu def run_move_scu(host, adapter_port): return runCommand("export PATH=/opt/dcm4che/bin:$PATH &&" "movescu -c IMPORTADAPTER@"+host+":"+adapter_port+" --dest STORESCP", "run-move-scu exit with") # run-commitment-scu def run_commitment_scu(host, adapter_port, com_scu_port, file_path): return runCommand("export PATH=/opt/dcm4che/bin:$PATH &&" "stgcmtscu -c IMPORTADAPTER@"+host+":"+adapter_port+" -b STGCMTSCU:"+com_scu_port+" --explicit-vr --directory /workspace/integration_test/commitment_result "+file_path, "run-commitment-scu exit with") # check-store-curl def check_store_curl(version, project, location, dataset, store_name, replaced_uid, file_path): return runCommand("integration_test/scripts/curl-dcm.sh https://healthcare.googleapis.com/"+version+"/projects/"+project+"/locations/"+location+"/datasets/"+dataset+"/dicomStores/"+store_name+"/dicomWeb/studies/"+replaced_uid+"/series/"+replaced_uid+"/instances/"+replaced_uid+" "+file_path, "check-store-curl exit with") # check diff def check_diff(file_path1, file_path2): return runCommand("diff "+file_path1+" "+file_path2, "check-diff exit with") #check-dcm-diff def check_diff_dcm(file_path1, file_path2): return runCommand( f"/workspace/integration_test/scripts/check-diff-dcm.sh {file_path1} {file_path2}", "check-diff-dcm exit with") # check-commitment-diff def check_commitment_diff(): return runCommand( "/workspace/integration_test/scripts/diff-commitment-result.sh", "check-commitment-diff exit with") # delete-dicom-store def delete_dicom_store(store_name, project, dataset, location): return runCommand("gcloud healthcare dicom-stores delete "+store_name+" --project="+project+" --dataset="+dataset+" --location="+location+" --quiet", "delete-dicom-store "+store_name+" exit with") # verify script result def verify_result(result): if result != 0: exit(ERROR_CODE) # change permission def change_permission(): return runCommand("chmod -R 777 /workspace/integration_test/scripts", "grant permission exit with")