3h'-ddlZddlZddlZddlZddlZddlZddlZddlZddlZ ddl Z ddl Z ddl Z ddl Z dadadadadadadadadZdZddZifdZdZd Zgdifd Zgdifd Zd Zd ZdZ dZ!dZ"dZ#dZ$ddZ%dS)NFcjtjdddtgddjdkS)NpodmanimageexistsFT)check no_podmanr)testenvcmdrun image_name returncodeT/home/osmocom-build/jenkins/workspace/ttcn3-mgw-test-asan/_testenv/testenv/podman.py image_existsrs/ ;??HgxDE]a? b b mqr rrrctjddtddgddd}t j|jddd d d}tj |d }tj d |tj d rtj ddStjtjd}tj|j}tj|}tj dt+|d d||kS)Nrhistoryz--formatjsonT)capture_outputrtextrcreated.z%Y-%m-%dT%H:%M:%SzImage creation date: !TESTENV_NO_IMAGE_UP_TO_DATE_CHECKz'Assuming the podman image is up-to-datezpodman/DockerfilezDockerfile last modified: )r r r r rloadsstdoutsplitdatetimestrptimeloggingdebugosenvirongetpathjoindata_dirstatst_mtimeutcfromtimestampstr)rr dockerfilemtimes rimage_up_to_dater.sCkoo 9j*f=  G j((+I6<> .00  MEEE F F F|!  FGGGG L7:77888 KOO    f     GLL)8 4 4      rcg}tj|dD]\}}|d|d|gz }|S)NT-e=)r r generate_envitems)envretkeyvals rgenerate_env_podmanrBRsX CK,,S$77==??&&S nnsnn%% Jrcttjdtjatdat ddddadS)Nr6z-osmo-ttcn3-testenv:-_)getattrr r3distro_defaultr6r replacerrrinit_image_name_distrorJ[sQW\8W-C D DF///J##C--55c3??JJJrcztj}tjtjjdd|atjtjjdd|a tj tdtj tdtj tjj dttstjdtsotjddkr$t%jd t)d n(t%jd t%jd t-jt0tjjrdadSdS) Nrz var-cache-aptz var-lib-aptTexist_okzDMissing podman image, run 'testenv.py init podman' first to build itTESTENV_REBUILD_OUTDATED_IMAGE1zQThe podman image is outdated, rebuilding it... (TESTENV_REBUILD_OUTDATED_IMAGE=1)Fz[The podman image might be outdated, consider running 'testenv.py init podman' to rebuild itz@Set TESTENV_REBUILD_OUTDATED_IMAGE=1 to rebuild it automatically)r r distro_cache_suffixr"r%r&r3cacheapt_dir_var_cacheapt_dir_var_libmakedirsccacherJrNoTraceExceptionr.r#r$r warningr8r!atexitregisterstopshellrun_shell_on_stop)suffixs rinitr^ds} [ , , . .F W\%7C[SYC[C[\\gll7<#5xAWvAWAWXXOK!D1111K$////K #d3333 >>o&'mnnn    ^ :>>: ; ;s B B Oo p p p      Om    M\ ] ] ] OD|! !!rc"tstd|t|}|t|z }|dgz }|r|d|gz }t |t rdd|g}t jjddg|ztgz|zg|Rdd i|S) NzTAttempting to execute a command in podman, but the container isn't running anymore: r2-wsh-crexecrT) container_name RuntimeErrorlistrB isinstancer+r r r )r podman_optscwdr>r3kwargss rexec_cmdrks ywruwwxxx{##K&s+++KD6K #c{" #s T3 ;? 6[(N+;;cA          rct|t|z}|r|d|gz }t|trdd|g}ddg|ztgz|z}t jd|tj|S)Nr`rarbrrc+ ) rfrBrgr+rdr r! subprocessPopen)r rhrir>s rexec_cmd_backgroundrps{##&9#&>&>>K #c{" #s T3 V { *n-= = CC M*s**  C  rc tjdtjddtddgtj}|jrtjddS\#t$rYdSwxYw) NTrrctouchz /tmp/watchdog)stderrz0feed_watchdog_loop: podman container has stopped) timesleeprnr rdDEVNULLr r r!KeyboardInterrupt)ps rfeed_watchdog_looprzs    JqMMM&.'?[dndvwwwA|  PQQQ        sAAA A-,A-ctdD]'}tjdtrdS(t d)Ndg?zPodman failed to start)rangerurv is_runningre)is rwait_until_startedrsK 3ZZ 3 <<  FF  / 0 00rctjtjjd}tj|dtjd|tj |tj ttjt }|dS)NrTrLrm)r>)target)r"r%r&r testdirtestdir_topdirrTr r!rnror r<rmultiprocessingProcessrzstart)r log_dirfeed_watchdog_processs rstart_in_backgroundrsgll7?98DDGK$'''' M*s**Sgk66889999+3;MNNN!!!!!rc6tjj}tj}tjjdt atj tj d}ddddtddd d |d td d |dddddtddtdddddddg}tjjr|ddgz }n |d|d|gz }tjjrtjds&tj dr|ddgz }tj tjr+tjtj}|d|d|dgz }|d|d|dtjjdtjjdtjjdtjjdtjdtjt4tj tj d g z }t7|t9d!d"gtj td#}tj |st9gd$dSdS)%NrEzpodman/seccomp.jsonrr z--rmz--namez --log-driverz json-filez --log-optzpath=z/podman/z.logz--security-opt=seccomp=z--cap-add=NET_ADMINz--cap-add=NET_RAWz--cap-add=SYS_ADMINz--device=/dev/net/tunz--volumez:/var/cache/aptz :/var/lib/aptz--sysctlz"net.ipv4.conf.all.send_redirects=0z&net.ipv4.conf.default.send_redirects=0r:zPODMAN=1zTESTENV_BINARY_REPO=1rDTESTENV_NO_KVMz/dev/kvmz/dev/kvm:/dev/kvmz:rozscripts/testenv-podman-main.shrmz /etc/apt/apt.conf.d/docker-cleanz pkgcache.binzapt-get-qupdate)r rrosmo_devget_osmo_dev_dirprefix restart_countrdr"r%r&r'rRrSr3 binary_repokernelr#r$rislinkcustom_kernel_pathreadlinkrQrUsrc_dirr rrk)r osmo_dev_dirseccompr destpkgcaches rrrs_3N#4466L.@@@@Ngll7+-BCCG  <<<<<<+'++ --- ))),0 1 C6|    #    , ,l , ,   |5z~~.// 5BGNN:4N4N 5 J 34 4C 7>>'4 5 5 5;w9::D J4 3 3$ 3 3 34 4C ,,N,, < 44 244 < 66!466 ?..W_..  W%'GHH  C d6 7888w||-~>>H 7>>( # #.,,,-----..rctj\}}tjddd|gdjsdStj}tj d|d|rtj dntj dtj d dS) Ntestz-dz/opt/eclipse-titan-F)rz# not found in the podman container!z3Consider modifying _testenv/data/podman/Dockerfile.z7Try './testenv.py init podman' to update the container.r) r testenv_cfgget_titan_version_first_cfgr r r rr.r errorsysexit)versionrF up_to_dates rcheck_titan_versionr!s$@@BBJGQ ;??FD*I*I*IJRW? X X c0022J MTTTTUUUQ KLLLL OPPPHQKKKKKrcd}|dz }|tjjddz }|dz }|tjt z }|dz }d}t dd d tj|d |gd }|d z }|dz }d}t dd d tj|d |gt gddS)Nzdeb [signed-by=/obs.key]z( https://downloads.osmocom.org/packages/rDz://z/ ./z$/etc/apt/sources.list.d/osmocom.listrarbzecho z > z Package: * z$Pin: origin "downloads.osmocom.org" zPin-Priority: 1100 z&/etc/apt/preferences.d/osmocom-apt-pinr) r r3rrIdistros_repodirsr6rkshlexquote)configr%s renable_binary_repor/s 'F 88F gl&..sD999F cMF g&v..F fF 1D dD@%+f"5"5@@$@@ ABBBF 55F $$F 3D dD@%+f"5"5@@$@@ ABBB ( ( ()))))rcrtdSdddddtg}tj|ddjsdSdS) NFrpsrz--filterzname=T)rr)rdrnr r)r s rr~r~DsLu T4-E^-E-E FC >#d > > > Eu 4rc*tsdStj|sBtr;t jdtdgdgtjjddda|rdnd}t jd|tr4t t da tj d d tgd d da|rtd z at!dSdS)Nz=Running interactive shell before stopping container (--shell)bashz-iF)ristdinrz (restart)zStopping podman containerrkillT)rrr)r~r coredump get_backtracer\r r5rkrr terminatewaitr r rdrr)restart restart_msgs rrZrZOs  << ""$$$ "(" TUUU &D6w'>dRWXXXX!")1,,rK L:[::;;;%'')))""$$$ $ KOOXv~6$eOTTTN  r)T)F)&rXrrr rr"rrn testenv.cmdr testenv.testdirtestenv.coredumprurr r6rdrRrSrr\rrr.r8rBrJr^rkrprzrrrrrr~rZrrrrs      sss60@@@!!!!!!H!d.*,2 ! ! ! !    111 " " "K.K.K.\   ****######r