Files
komodo-mcp-server/scripts/__pycache__/test_all_tools.cpython-314.pyc
T

241 lines
47 KiB
Plaintext
Raw Normal View History

+
l% j`†ãó¼aR<t60tRt^RIt^RIt^RIt^RIt^RIt^RIt^RI H t H
t
]PPRR4t
]
R2t]
R2t] P !]
P"4P%R4tR] 2t/t]^k/t]^k/t]^k0R=mt]!4t]^kR>R R
llt!R R 4tR
RltRRltRRltRRlt RRlt!RRlt"RRlt#RRlt$RRlt%RR lt&R!R"lt'R#R$lt(R%R&lt)R'R(lt*R)R*lt+R+R,lt,R-R.lt-R/R0lt.R1R2lt/R3R4lt0R5R6lt1R7R8lt2R9R:lt3]4R;8Xd]Pj!]3!44R#R#)?u]
Komodo MCP Server — Comprehensive Tool Test
Tests ALL 13 MCP tools: komodo_list, komodo_get, komodo_create, komodo_update,
komodo_delete, komodo_execute, komodo_logs, komodo_summary, komodo_inspect,
komodo_search_logs, komodo_list_detail, komodo_copy, komodo_rename.
Phases:
1. Health + Session init
2. Read operations (safe, no side effects)
3. Write lifecycle (create -> get -> update -> copy -> rename -> delete)
4. Execute operations (safe ones only)
5. Summary report
Usage:
KOMODO_MCP_URL=http://10.10.2.114:9800 python3 scripts/test_all_tools.py
No external deps — stdlib only.
N)ÚdatetimeÚtimezoneÚKOMODO_MCP_URLzhttp://10.10.2.114:9800z/mcpz/healthz %Y%m%d-%H%Mzmcp-at-c ózV^8„dQhR\R\R,R\\\R,3,/#)éÚbodyÚ
session_idNÚreturn)ÚdictÚstrÚtuple)Úformats"ÚC/home/matt/projects/dev/komodo-mcp-server/scripts/test_all_tools.pyÚ __annotate__r@s8÷)Añ)Að)A¤#¨¥*ð)A¼¼dÄCÈ$ÅJÐ>NÕ8Oñ)AócóB\P!V4P4pRRRR/pV'dWR&\PP \ W#RR7p\PPV^R7;_uu_4pVPPR4;'gTpVPPRR 4pVP4P4pV'g/V3uuR
R
R
4#R V9VPR 4Fup V P4p V PR
4'gK,V \R
4R
P4p
V
'gKR\P !V
4V3uuuR
R
R
4# \P !V4V3uuR
R
R
4#\P !V4V3uuR
R
R
4# \P"di;i \P"d/T3uuuR
R
R
4#i;i +'giR
#;i \P$P&dTp T P('dT P4P4MR p \+RT P, RT 24T hR
p ? ii;i)z®POST JSON-RPC to the MCP server. Returns (response_body, new_session_id).
Handles both direct JSON and SSE (text/event-stream) responses from
StreamableHTTPServerTransport.
z Content-Typezapplication/jsonÚAcceptz#application/json, text/event-streamzmcp-session-idÚPOST)ÚdataÚheadersÚmethod©ÚtimeoutÚNztext/event-streamÚ
zdata:zHTTP ú: )ÚjsonÚdumpsÚencodeÚurllibÚrequestÚRequestÚ MCP_ENDPOINTÚurlopenrÚgetÚreadÚdecodeÚsplitÚstripÚ
startswithÚlenÚloadsÚJSONDecodeErrorÚerrorÚ HTTPErrorÚfpÚ RuntimeErrorÚcode)
rrrrÚreqÚrespÚnew_sidÚctÚrawÚlineÚpayloadÚeÚ body_texts
&& rÚ_postr;@s$ô :Š: × $€DàÐЀG÷Ø$.Ð Ñ
.‰.×
Ñ
¤°DÐRXÐ
Ó
Y€CðAÜ
^‰^×
# Ð
#×
4¸Ø—ll×&Ð'7Ó8×F¸Jˆ×! .°"Ó5ˆ—))“+×&ˆØ˜7 
# ŸI™I džOŸ:™:< w×/Ø"&¤s¨7£| }Ð"5×";Ñ";Ó"=˜ß"™7ð)Ü'+§z¢z°'Ó':¸GÐ'CÑ C÷
Ÿ:š: c?¨GÐ3÷'
4ô.—::˜c“? +÷/
4øô$(×#7Ñ#7ô)Ú (ð)ûô
טw˜&÷+
4ð('ú÷)5×
4ûô0 <‰<× AØ)*¯¯¨A—F‘F“H—O‘OÔ%°2ˆ ܘU 1§6¡6 (¨"¨Y¨KÐ9¸@ûðAús°Á)H,ÂA'HÃ/HÃ2
H,Ã=?HÅ!HÅ(GÅ?HÆ
H,Æ HÆG/Æ&
H,Æ1HÇ
H,ÇG, Ç(HÇ+G, Ç,HÇ/HÈHÈ
H,ÈHÈHÈ H) È#H,È)H,È,JÉ AJÊJcóha]tRt^ltoV3RlRltV3RlRltV3RlRltV3RlRltR tVt R
#) Ú McpClientcó<V^8„dQhRR/#©rr )r
Ú
__classdict__s"€rrÚMcpClient.__annotate__msø€÷ñ˜$ñrcó"RVn^VnR#©N)rÚ_req_id©Úselfs&rÚ__init__ÚMcpClient.__init__msØ&*ˆŒØˆŽ rcó <V^8„dQhRS[/#©rr ©Úint)r
rAs"€rrrBqsø€÷ñ™#ñrcóLV;P^,
unVP#)é)rErFs&rÚ_next_idÚMcpClient._next_idqsØ Š ˜Õ Ø|‰|Ðrcó<V^8„dQhRR/#r?r@)r
rAs"€rrrBusø€÷ñ˜Dñrcó¢\RRRVP4RRRRRR/R R
R R R
///R4wrW n\RRRR/VP4R#)Újsonrpcú2.0ÚidrÚ
initializeÚparamsÚprotocolVersionz
2025-03-26Ú capabilitiesÚ
clientInfoÚnamezall-tools-testÚversionz1.0.0Nznotifications/initialized)r;rPr)rGr3Úsids& rrWÚMcpClient.initializeusvÜØ  $—--“/Ø  Ø!  Ø˜vÐ'7¸ÀGÐð 
ð ó ‰ ˆðŒÜ
Ø  Ð
ð ?‰?ö rcó&<V^8„dQhRS[RS[/#)rr\Ú arguments)r r
)r
rAs"€rrrBsø€÷ñ™cð©dñrc
ó–\PV4\RRRVP4RRRRVRV//VP4wq0nRV9d\ R VR, 24hVP
R
/4pVP
R 4'dAVP
R .4pV'dV^,P
R
R4MRp\ V4hVP
R .4pV'gR#V^,P
R
R4pV'gR#\P!V4# \P\3dTu#i;i)rTrUrVrz
tools/callrXr\rar-z MCP error: ÚresultÚisErrorÚcontentÚtextz
unknown errorNr) Ú
TOOLS_INVOKEDÚaddr;rPrr0r$rr+r,Ú TypeError)rGr\rar3rcÚcontentsÚerr_textrfs&&& rÚ call_toolÚMcpClient.call_tool†s%Ü×ј$ÔÜ %Ø  $—-‘-“/Ø  v˜t [°)Ð'
ð
?‰?ó !шŒoð dŒ?Ü ¨T°'­]¨OÐ ˜( Ø :‰:i× Ò Ø—zz )¨RÓ0ˆHßCKx •{— v¨Ô?ÐQ`ˆHܘxÓ —:‘:˜i¨ÓßÙØ˜{˜v rÓßÙð Ü—:’:˜dÓ #øÜ×$¤iÐ ØŠKð úsÄD(Ä(EÅE)rErN)
Ú__name__Ú
__module__Ú __qualname__Ú__firstlineno__rHrPrWrlÚ__static_attributes__Ú__classdictcell__)rAs@rr=r=ls-ø‡÷ð÷ð÷ð÷"örr=có0V^8„dQhR\R\/#©rÚexcr ©Ú ExceptionÚbool)r
s"rrr¥s÷ñœ ð¤dñrcóªa\V4P4o\;QJdV3RlR4F 'gK R# R#!V3RlR44#)z?Return True if the error is a permission / authorization error.c3ó,<"TF qS9xK R#5irDr@©Ú.0ÚkwÚss& €rÚ <genexpr>Ú!_is_perm_error.<locals>.<genexpr>¨søéðñ"˜2QŽwó"ùóƒTF)Ú
permissionÚ forbiddenÚ unauthorizedz not allowedÚ insufficientz
not permitted©r ÚlowerÚany©rvrs&@rÚ_is_perm_errorr¥sRø€ä ˆC‹Ó€Aß ‹3ôñ"ó3Œ3ðŠ3ðˆñ"óó ðrcó0V^8„dQhR\R\/#rurw)r
s"rrr®s÷ñ”yð¤Tñrcóªa\V4P4o\;QJdV3RlR4F 'gK R# R#!V3RlR44#)c3ó,<"TF qS9xK R#5irDr@r|s& €rr€Ú _is_not_found.<locals>.<genexpr>°søéðñ"˜2QŽwó"ùrTF)Ú404z not foundzdoes not existzno suchr‡s&@rÚ
_is_not_foundr®sRø€Ü ˆC‹Ó€Aß ‹3ôñ"ó3Œ3ðŠ3ðˆñ"óó ðrcó4V^8„dQhR\R\RR/#)rÚtoolÚmsgr r )r
s"rrrµs!÷ñŒcðœð ñrcól\PV.4PV4\RV 24R#)z N)ÚDETAILSÚ
setdefaultÚappendÚprint)r“r”s&&rÚlogrµs+Ü ×Ñt˜ ×Ô ˆBˆsˆeˆrcó4V^8„dQhR\R\RR/#)rr“Ústatusr Nr•)r
s"rrrºs!÷ñðœcð dñrcóV\V&R#rD)ÚRESULTS)r“rs&&rrcrcºs Ø„GˆDƒMrcóJV^8„dQhR\R\R\R,/#©rÚclientÚ
resource_typer r=r )r
s"rrr¾s%÷ ñ œ9ð ´Sð ¼SÀ4½Zñ rcónVPRRV/4p\T\4'd\ T4^8XdR#T^,p\T\
4'd>TP
R4;'g%TP
R4;'g \T4#\T4# \dR#i;i)zGList a resource type and return the id/name of the first item, or None.Ú komodo_listr£NrVr\)rlrxÚ
isinstanceÚlistr*r
r$r )ÚitemsÚfirsts&& rÚ_first_item_idr«¾s™ðØ× Ñ  °À-Ð0PÓô eœT× "¤c¨%£j°A¤oÙØ !H€EÜ×ÒØy‰y˜×A %§)¡)¨FÓ"3×A´s¸5³zÐ ˆu‹:Ðøô ôÚðúsB%Â% B4Â3B4có>V^8„dQhR\R\R,/#©rr Nr¤)r
s"rrrÌs÷,œyð,¬S°4­,rcó\VR4#)Úserver)©s&rÚ_first_server_namer±ÌsÜ ˜&  +rcóFV^8„dQhR\\\3,/#rK)r ryr=)r
s"rrrÔs÷ñ¤5¬¬y¨Õ#9ñrcó¶\RR 24\R4\R 4\R\ 24\PP \RR7p\PP V^R7;_uu_4p\RVP R24RRR4\R 4\4pTP4\R TP R24RT3# +'giLS;i \d%p\R T 24R
\43uRp?#Rp?ii;i \dp\R
T 24R
T3uRp?#Rp?ii;i)rzPhase 1: Health + Session initz
Health check: ÚGET)rru ✓ MCP server is up (HTTP Ú)Nu ✗ MCP server unreachable: Fz
Initializing MCP session...u ✓ Session established (id=u ✗ Failed to initialize: Tú<============================================================) ÚHEALTH_ENDPOINTrr r!r#rrxr=rWr)r2r3r9s rÚphase1_health_and_sessionr¸Ôs1Ü ˆBˆxˆjˆ/ÔÜ Ð  ˆXˆJÔä Ð œ_Ð
n‰n×$¤_¸Ü
^‰^×
# Ð
#×
3°tÜ Ð4°T·[±[°MÀÐ  
Ð 
‹[€FðØ×ÑÔÜ
Ð1°&×2CÑ2CÐ1DÀAÐ
ˆ÷4×
3ûä ô
Ð1°!°Ð”i“kÐ!ûð"ûô ôÜ
ШsÐfˆ}ÕûðúsZ¹AC?ÂC,Â!C?Â?)D1Ã, C< Ã7C?Ã<C?Ã? D.Ä
D)Ä#D.Ä)D.Ä1 EÄ<EÅ
EÅEcó(V^8„dQhR\RR/#r­©r=)r
s"rrròs÷ ñ ¤9ð °ñ rcóê\RR 24\R4\R 4\V4\V4\V4\ V4\ V4\
V4\V4R#)rzPhase 2: Read operationsNr¶)Ú_test_list_allÚ_test_get_knownÚ_test_summary_allÚ_test_list_detailÚ
_test_inspectÚ
_test_logsÚ_test_search_logsr°s&rÚphase2_read_operationsrÃòs[Ü ˆBˆxˆjˆÜ Ð  ˆXˆäÜÜÜÜ܈Ürcó(V^8„dQhR\RR/#r­)r
s"rrrs÷ ñ œ9ð ¨ñ rc ó,\R4.ROpVF`pRV R2pVPRRV/4p\V\4'd \ V4M^p\ VRV RV R24\
VR4Kb R# \d_p\T4'd%\ TR T R
T 24\
TR 4Rp?\ TR T R
T 24\
TR4Rp?Rp?i\d*p\ TR T R
T 24\
TR4Rp?Rp?ii;i)z,
--- komodo_list (all 17 resource types) ---z komodo_list(rµu✓ komodo_list õ → ú itemsÚPASSu⊘ komodo_list u → PERM: ÚPERMu✗ komodo_list u → FAIL: ÚFAILN)ÚstackÚbuildr¯Ú procedureÚ
deploymentÚalerterÚimage_registry_accountÚ
sync_resourceÚuserÚtagÚactionÚrepoÚbuilderÚswarmÚvariableÚ
user_groupÚgit_provider_account)
rlr*rrcr0rrx)Ú all_typesÚrtÚkeyr©Úcountr9s& rsÜ Ð €Ió ˆØ˜R˜D Ð"ˆð Ø×$ ]°_ÀbÐ4IÓJˆEÜ",¨U´D×"9Ò"9”C˜”J¸qˆ Ð*¨2¨$¨h°u°g¸VÐ Ö ó
øôô˜a× Ò Ü.¨r¨d°.ÀÀÐs˜F×.¨r¨d°.ÀÀÐs˜F×#ûÜô Ü Ð*¨2¨$¨n¸Q¸CÐ × Ò ûð ús0œAA8Á8 DÂ/CÂ8CÃ DÃ)DÃ*DÄDcó(V^8„dQhR\RR/#r­)r
s"rrrs÷ ñ œIð ¨$ñ rc ó>\R4.ROpVFqwr#RV R2p\W4pVf"\VRV RV R24\VR4K;VP RR VR
V/4p\VR V R V R
24\VR4Ks R# \
dYp\
T4'd"\TRT 24\TR4Rp?K´\TRT 24\TR4Rp?Rp?i\d(p\TRT 24\TR4Rp?EKRp?ii;i)z%
--- komodo_get (known resources) ---z komodo_get(rµNu⊘ komodo_get u → SKIP: no z foundÚSKIPÚ
komodo_getr£rVu✓ komodo_get Ú returned datarÈõ⊘ → PERM: rÉõ✗ → FAIL: rÊ))z first stack)z first build)z first server)z first tag)zfirst procedure©rrcrlr0rrx)ÚtargetsrÜÚlabelrÝÚridrr9s& rs,Ü Ð €Gó‰ ˆØ˜B˜4˜qÐܘVÓØ Š;Ü Ð)¨"¨Ð->¸u¸gÀVÐ Ô Ù ð
Ø×# L°?ÀBÈÈcÐ2RÓSˆ Ð)¨"¨¨Q¨s¨e°>Ð Ö óøôô˜a× Ò Ü¨sÐs˜FרsÐs˜F×#ûÜô Ü Ð+¨A¨3Ð × Ó ûð ús0Á5B  DÂ,C'ÃC'Ã' DÃ4DÃ5DÄDcó(V^8„dQhR\RR/#r­)r
s"rrrAs÷ ñ œið ¨Dñ rcóÎ\R4.R
OpVF:pRV R2pVPRRV/4p\VRV R24\VR4K< R # \dYp\ T4'd"\TRT 24\TR 4R p?K}\TR
T 24\TR 4R p?R p?i\ d'p\TR
T 24\TR 4R p?R p?ii;i)z+
--- komodo_summary (11 resource types) ---zkomodo_summary(rµÚkomodo_summaryr£u✓ komodo_summary räN) r×)rlrrcr0rrx)Ú
summary_typesrÜrr9s& rAÜ Ð €MóˆØ ˜t 1Ðð
Ø×#Ð$4°ÈÐ6KÓLˆDÜ Ð-¨b¨T°Ð Ö ó øô ô˜a× Ò Ü¨sÐs˜FרsÐs˜F×#ûÜô Ü Ð+¨A¨3Ð × Ò ûð ús/œ0AÁ C$Á,B0ÂB0Â0 C$Â=C$Â>CÃC$có(V^8„dQhR\RR/#r­)r
s"rrr[s÷.ñ.œið.¨Dñ.rc óR\R4.ROpVF`pRV R2pVPRRV/4p\V\4'd \ V4M^p\ VRV RV R24\
VR4Kb Rp\V4pVf\ VR4\
VR4R
#VPRRRRV/4p\V\4'd \ V4M^p\ VRV RV R24\
VR4R
# \d[p\T4'd#\ TR T 24\
TR
4R
p?EK(\ TR T 24\
TR 4R
p?EKJR
p?i\d(p\ TR T 24\
TR 4R
p?EKzR
p?ii;i \dYp\T4'd"\ TR T 24\
TR
4R
p?R
#\ TR T 24\
TR 4R
p?R
#R
p?i\d'p\ TR T 24\
TR 4R
p?R
#R
p?ii;i)z
--- komodo_list_detail ---zkomodo_list_detail(rµÚkomodo_list_detailÚ list_typeu✓ komodo_list_detail rÆNzkomodo_list_detail(containers)u⊘ → SKIP: no servers foundráÚ
containersr¯u#✓ komodo_list_detail containers (u) → )Ú full_stacksÚ full_buildsÚ full_serversÚ schedulesÚapi_keys) rlr*rrcr0rrx)Ú simple_typesÚltrÝrr9Ú server_names& rr¿r¿[sÜ Ð [€LÛˆØ# B 4 qÐð Ø×#Ð$8¸;ÈÐ:KÓLˆDÜ!+¨D´$×!7Ò!7”C˜”I¸Qˆ Ð1°"°°X¸e¸WÀFÐ Ö ñ
ð& +€CðÜÓ Ø Ò Ü Ð Ô Ù Ø×ÑÐ 4Ø ˜ x°ð7
ó ˆô¬d×3”D” ¸ˆÜ ˆCÐ9¸+¸ÀiÐPUÈwÐV\Јsøô1ô˜a× Ò Ü¨sÐs˜FרsÐs˜F×#ûÜô Ü Ð+¨A¨3Ð × Ó ûð ûô$ ô Ü ˜!× Ò Ü Ð+¨A¨3Ð × Ò ä Ð+¨A¨3Ð × Ò ûÜ ôÜ ˆCРsЈsÒûðúsgœAC<Á9'FÂ"AFÃ< FÄ,EÄ:EÅ FÅ)FÅ*F Æ FÆ H&Æ,G2ÇG2Ç2 H&Ç?H&ÈH!È!H&có(V^8„dQhR\RR/#r­)r
s"rrrŽs÷`ñ`œ)ð`¨ñ`rc ój
\R4Rp\V4pVf\VR4\VR4R#VP RRRRV/4p\ V\ 4'd\V4^8Xd\VR V 24\VR4R#V^,p\ V\4'd#VPR
VPR R 44M
\V4pV'g\VR
4\VR4R#VP RRRR VRV/4p\VRVR, RV 24\VR4RpVP RRR/4p\ V\ 4'd\V4^8Xd\VR4\VR4R#V^,p \ V \4'd,V PRV PR \V 444M
\V 4p
VP RRRR V
/4p\VR V
24\VR4R#pVP RRR$/4p \ V \ 4'd\V 4^8Xd\VR%4\VR4R#V ^,p \ V \4'd,V PRV PR \V 444M
\V 4p VP RRR&R V /4p\VR'V 24\VR4R# \dYp\T4'd"\TRT 24\TR4Rp?ELù\TRT 24\TR4Rp?ELRp?i\d'p\TRT 24\TR4Rp?ELIRp?ii;i \d˜pR!\T4P49d"\TR"T 24\TR4Rp?EL¾\T4'd"\TRT 24\TR4Rp?ELð\TRT 24\TR4Rp?ELRp?i\d'p\TRT 24\TR4Rp?EL@Rp?ii;i \d˜pR!\T4P49d"\TR"T 24\TR4Rp?R#\T4'd"\TRT 24\TR4Rp?R#\TRT 24\TR4Rp?R#Rp?i\d'p\TRT 24\TR4Rp?R#Rp?ii;i)(z
--- komodo_inspect ---zkomodo_inspect(container)Nõ⊘ → SKIP: no serversráu⊘ → SKIP: no containers on ÚIdrVru.⊘ → SKIP: could not determine container idÚkomodo_inspectÚ inspect_typeÚ containeru✓ komodo_inspect container/ºNé on rÈz$komodo_inspect(deployment_container)r¦õ⊘ → SKIP: no deploymentsr\Údeployment_containeru(✓ komodo_inspect deployment_container/ú
missing fieldõ⊘ → API_LIMIT: zkomodo_inspect(stack_container)rËõ⊘ → SKIP: no stacksÚstack_containeru#✓ komodo_inspect stack_container/)rrcrlr*r
r$r r0rrxrˆ)
Úfirst_cÚcidrr9Ú deploymentsrªÚdep_nameÚstacksÚ
stack_names
& rŽÜ Ð  &€Cð!ÜÓ Ø Ò Ü Ð Ô Ù Ø×%Ð&:Ø ˜ ð=
ó ˆ
ô˜*¤d×+¬s°:«À!Ô/CÜ Ð<¸[¸MÐ Ô Ù Ø˜Q•-ˆÜ:DÀWÌd×:SÒ:Sˆgk‰k˜$ § ¡ ¨D°"Ó 5Ô6ÔY\Ð]dÓYeˆßÜ Ð Ô Ù Ø×ÑÐ 0Ø ˜K¨¨s°H¸kð3
ó ˆô ˆCÐ3°C¸µH°:¸TÀ+ÀЈsð 1€CðØ×& È Ð6UÓVˆ ܘ+¤t×°KÓ0@ÀAÔ0EÜ Ð Ô Ù Ø˜A•ˆÜEOÐPUÔW[×E\ÒE\5—99˜V U§Y¡Y¨t´S¸³ZÓ%@ÔAÔbeÐfkÓblˆØ×ÑÐ 0Ø Ð2°D¸(ð3
ó ˆô ˆCÐ>¸x¸jЈsð ,€CðØ×! -°/À7Ð1KÓLˆÜ˜&¤$×'¬3¨v«;¸!Ô+;Ü Ð Ô Ù Øq• ˆÜGQÐRWÔY]×G^ÒG^U—YY˜v u§y¡y°´s¸5³zÓ'BÔCÔdgÐhmÓdnˆ
Ø×ÑÐ 0Ø Ð-¨t°Zð3
ó ˆô ˆCÐ9¸*¸Ðˆsøôm ô Ü ˜!× Ò Ü Ð+¨A¨3Ð × Ò ä Ð+¨A¨3Ð × Ò ûÜ ôÜ ˆCРsЈsF×Òûðûô& ô  Ø œc !fŸl™l›nÔ Ð°Ð × Ò Ü
˜A×