0i/dZddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZdd lm Z dd lm Z dd lm Z dd l m Z dd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZGddeZGddeZGddeZGdd eZGd!d"eZy)#zContracts tests. These tests mainly check API sanity in terms of returned types and APIs availability. Some of these are duplicates of tests test_system.py and test_process.py. N)AIX)FREEBSD)LINUX)MACOS)NETBSD)OPENBSD)POSIX)SUNOS)WINDOWS)AARCH64)GITHUB_ACTIONS) HAS_CPU_FREQ)HAS_NET_IO_COUNTERS)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES) SKIP_SYSCONS)PsutilTestCase)create_sockets)enum) is_namedtuple)kernel_version)pytestcreZdZdZdZdZdZejje xre ddZ y) TestAvailConstantsAPIscVttdtxstxstk(sJy)N PROCFS_PATH)hasattrpsutilrr rselfs L/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/test_contracts.pytest_PROCFS_PATHz'TestAvailConstantsAPIs.test_PROCFS_PATH/s!v}-%2G52GCHHHc0ttdtk(sJttdtk(sJttdtk(sJttdtk(sJttdtk(sJttdtk(sJy)NABOVE_NORMAL_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSIDLE_PRIORITY_CLASSNORMAL_PRIORITY_CLASSREALTIME_PRIORITY_CLASSrrr rs r!test_win_priorityz(TestAvailConstantsAPIs.test_win_priority2sv<=HHHv<=HHHv45@@@v45@@@v677BBBv89WDDDr#cttdtk(sJttdtk(sJttdtk(sJttdtk(sJy)NIOPRIO_CLASS_NONEIOPRIO_CLASS_RTIOPRIO_CLASS_BEIOPRIO_CLASS_IDLErrrrs r!test_linux_ioprio_linuxz.TestAvailConstantsAPIs.test_linux_ioprio_linux:sZv23u<<<v01U:::v01U:::v23u<<>>:-v75@@@:-v75@@@9,v':;uDDDv}-888v/7:::v}-888r#N) __name__ __module__ __qualname__r"r,r3r9rmarkskipifr rrWr#r!rr.sKIE= <  [[ 569 9r#rcxeZdZdZdZej jexre ddZ dZ dZ dZ y ) TestAvailSystemAPIsc6ttdtk(sJy)Nwin_service_iterr+rs r!test_win_service_iterz)TestAvailSystemAPIs.test_win_service_iterjsv12g===r#c6ttdtk(sJy)Nwin_service_getr+rs r!test_win_service_getz(TestAvailSystemAPIs.test_win_service_getmsv01W<<= [[)'2HI J M8 r#r_ceZdZdZdZdZdZdZejje xre ddZ d Zd Zd Zd Zd ZdZy)TestAvailProcessAPIscttjdtxs6txs.t xs&t xstxstxstxstk(sJy)Nenviron) rrProcessrrr rr rrrrs r! test_environz!TestAvailProcessAPIs.test_environsdv~~y1                r#cJttjdtk(sJyNuidsrrrwr rs r! test_uidszTestAvailProcessAPIs.test_uidsv~~v.%777r#cJttjdtk(sJyrzr|rs r! test_gidszTestAvailProcessAPIs.test_gidsr~r#cJttjdtk(sJy)Nterminalr|rs r! test_terminalz"TestAvailProcessAPIs.test_terminalsv~~z2e;;;r#cZttjdtxstk(sJy)Nionice)rrrwrr rs r! test_ionicez TestAvailProcessAPIs.test_ionices v~~x0U5EgFFFr#r:r;cZttjdtxstk(sJy)Nrlimit)rrrwrrrs r!rWz TestAvailProcessAPIs.test_rlimits" v~~x0U5EgFFFr#c`ttjd}|txst k(sJy)N io_counters)rrrwrr r hasits r!test_io_countersz%TestAvailProcessAPIs.test_io_counterss' 6enu-...r#cJttjdtk(sJy)Nnum_fdsr|rs r! test_num_fdsz!TestAvailProcessAPIs.test_num_fdssv~~y1U:::r#cJttjdtk(sJy)N num_handles)rrrwr rs r!test_num_handlesz%TestAvailProcessAPIs.test_num_handlessv~~}5@@@r#cjttjdtxstxst k(sJy)N cpu_affinity)rrrwrr rrs r!test_cpu_affinityz&TestAvailProcessAPIs.test_cpu_affinitys,v~~~6  'W '   r#cjttjdtxstxst k(sJy)Ncpu_num)rrrwrrr rs r! test_cpu_numz!TestAvailProcessAPIs.test_cpu_nums,v~~y1  %W %   r#cttjd}|txstxst xst k(sJy)N memory_maps)rrrwrrrrrs r!test_memory_mapsz%TestAvailProcessAPIs.test_memory_mapss2 6g??3?%@AAAr#N)rXrYrZrxr}rrrrr[r\r rrWrrrrrrr]r#r!rtrtsq  88<G [[ 56G G/;A  Br#rtceZdZdZedZedfdZdZdZ dZ dZ e jjexred e jje d d Zd ZdZe jjed dZdZdZe jje d dZe jje d dZe jje d dZdZdZ y)TestSystemAPITypeszhCheck the return types of system related APIs. https://github.com/giampaolo/psutil/issues/1039. c6tj|_yN)rrwproc)clss r! setUpClasszTestSystemAPITypes.setUpClasss>>#r#Tc\t|sJ|D]}t||sJ|s|dk\rJyNr)r isinstance)r nttype_gezerons r!assert_ntuple_of_numsz(TestSystemAPITypes.assert_ntuple_of_numss8R   Aa' ''Av vr#c|jtjtjdD]}|j|y)NT)percpu)rr cpu_times)r rs r!test_cpu_timesz!TestSystemAPITypes.test_cpu_timess< ""6#3#3#56""$/B  & &r *0r#cttjdtsJttjdtsJy)Nintervalgh㈵>)rr cpu_percentfloatrs r!test_cpu_percentz#TestSystemAPITypes.test_cpu_percents8&,,d;UCCC&,,g>FFFr#c|jtjd|jtjdy)Nrg-C6?)rrcpu_times_percentrs r!test_cpu_times_percentz)TestSystemAPITypes.test_cpu_times_percents4 ""6#;#;T#JK ""6#;#;V#LMr#cLttjtsJyr)rr cpu_countintrs r!test_cpu_countz!TestSystemAPITypes.test_cpu_counts&**,c222r#rfr;z not supportedctjtjdS|j tjt t fy)Nzcpu_freq() returns Noner)rrhrskiprrrrs r!riz TestSystemAPITypes.test_cpu_freqs? ??  $;;89 9 ""6??#4UCL"Ir#ctjdjD].\}}t|tsJ|j |t 0y)NT)perdiskr)rdisk_io_countersitemsrstrrr)r kvs r!test_disk_io_countersz(TestSystemAPITypes.test_disk_io_counterssH++D9??ADAqa% %%  & &q & 4Br#ctjD]r}t|jtsJt|j tsJt|j tsJt|jtrrJyr)rdisk_partitionsrdevicer mountpointfstypeopts)r disks r!test_disk_partitionsz'TestSystemAPITypes.test_disk_partitionsse**,Ddkk3/ //doos3 33dkk3/ //dii- -- -r#z requires rootct5tjd}t|tt |k(sJ|D]}t |rJ dddy#1swYyxYw)Nall)rrnet_connectionslensetr)r retconns r!test_net_connectionsz'TestSystemAPITypes.test_net_connectionssV  ((/Cs8s3s8}, ,,$T***  sAA!A!!A*c tjjD]\}}t|tsJ|D]}t|j t jsJt|jtsJt|jttdfsJt|jttdfrJyr) r net_if_addrsrrrfamilyrIntEnumaddressnetmasktype broadcast)r ifnameaddrsaddrs r!test_net_if_addrsz$TestSystemAPITypes.test_net_if_addrss#00288:MFEfc* **!$++t||<<<!$,,444!$,,d4j0ABBB!$..3T 2CDDD ;r#cptjjD]\}}t|tsJt|j t sJt|jtjsJt|jtsJt|jtrJyr) r net_if_statsrrrisupboolduplexrrspeedrmtu)r rinfos r!test_net_if_statsz$TestSystemAPITypes.test_net_if_statss"//1779LFDfc* **dii. ..dkk4<<8 88djj#. ..dhh, ,, :r#c^tjdD]}t|trJy)NT)pernic)rnet_io_countersrr)r rs r!test_net_io_countersz'TestSystemAPITypes.test_net_io_counterss),,D9Ffc* **:r#c tjjD]f\}}t|tsJ|D]J}t|j tsJt|j tttdfrJJhyr) rrnrrrlabelcurrentrrrr nameunitsunits r!roz$TestSystemAPITypes.test_sensors_fanssq"..0668KD%dC( ((!$**c222!$,,T$Z0HIII9r#c tjjD]\}}t|tsJ|D]}t|j tsJt|j tttdfsJt|jtttdfsJt|jtttdfrJyr) rrkrrrrrrrrhighcriticalrs r!rlz,TestSystemAPITypes.test_sensors_temperatures s"668>>@KD%dC( ((!$**c222!$,,T$Z0HIII!$))eS$t*-EFFF!$--%d4j1IJJJ Ar#cLttjtsJyr)rr boot_timerrs r!test_boot_timez!TestSystemAPITypes.test_boot_time+s&**,e444r#ctjD]}t|jtsJt|j tt dfsJt|jtt dfsJt|jtt dfsJt|jts|jdkDrJyr) rusersrrrrrhostpidr)r users r! test_userszTestSystemAPITypes.test_users/sLLNDdii- --dmmc4:->? ??dii#tDz):; ;;dhhd4j(9: ::$((C(xx!|#| #r#N)!rXrYrZ__doc__ classmethodrrrrrrrrr[r\rr rrirrrrrrrrrrorrlrrr]r#r!rrs`$$/4D+ GN3 [[)'2HI [[L(AJBJJ 5 . [[ _=+>+E- [[//H+I+  [[,,_EJFJ [[44_MKNK5$r#rcTeZdZejj e ddZy)TestProcessWaitTypez not POSIXr;ctj|jj}|j |j }|t j k(sJt|tjsJyr) rrw spawn_subprocr terminatewaitsignalSIGTERMrrr)r pcodes r!test_negative_signalz(TestProcessWaitType.test_negative_signal;s[ NN4--/33 4 vvx&&&$ ---r#N)rXrYrZrr[r\r rr]r#r!rr:s* [[E +6.7.r#r)rr rrrrrrrr r r psutil.testsr r rrrrrrrrrrrrr_rtrrr]r#r!rs   '%,)1%''&'89^89v . 26B>6B|w$w$t...r#