• Aucun résultat trouvé

Réalisation des tests ave les diérents prototypes

6.3 Implémentation

6.3.4 Réalisation des tests ave les diérents prototypes

J'ai ommen é par réaliser ha un des servi es Web né essaires pour la réalisation detousless énariosenutilisantXML-RPC, ommejevaislemontrer. Ensuite, j'ai rééuns riptqui,pour haques énario,lan elesservi esWebné essaires.Demême, pour haques énario,j'ai réalisédes s riptsexé utantles requêtes. Enn uns ript réalise l'ensemble des s énarios pour un prototype donné. Chaque prototype étant diérent, haques ript est diérent. Lesrésultats sontenregistrés dans des  hiers queje omparemanuellementauxrésultatsattendus.

6.3.4.1 XML-RPC pour lesservi es Web

Les servi es Web utilisés ne suivent pas le proto ole standard habituel qui est SOAP. La prin ipale raison est d'ordre pratique : en eet il existe en Python une

librairie implémentantXML-RPC qui présente l'avantaged'être simple àmettre en ÷uvre.

XML-RPCest unespé i ationetunensembled'implémentationqui permettent auxprogrammess'exé utantsurdiérentes ombinaisonsdesystèmesd'exploitation, d'ar hite turesetd'environnementsdes'appelerentreeuxàtraversInternet[20,114℄. L'appel à un programme extérieur est réalisé grâ e àune requête HTTP, de la même façon quepeut le faire SOAP. La requête HTTP transporte unux de don- néesenXML.XML-RPC aété bâtidemanièreàêtresimpletouten permettantde transmettre,traiteret renvoyerdesstru turesdedonnées omplexes[114℄.

Lestypesdesdonnéesdebasetransmisesàl'aidedeXML-RPCsont:

<i4>ou<int>quisontdesentiers de4o tets,

<boolean>quisontsoit vraisoufaux,

<string>quisontdes haînesde ara tères

<double>quisontlesnombresàvirguleottante àdoublepré ision,

<dateTime.iso8601>quisontlesdatesauformatiso8601,

<base64>quisontlesdonnéesbinairesen odéesenbase 64.

A partir de es types de base,XML-RPC dénit des types omplexes qui les om- binent.Ildénitles<stru t>etles<array>quisontrespe tivementdesdi tionnaires asso iatifs,quiasso ientunnomàunevaleuretdeslistesdevaleurs.

La spé i ation de XML-RPC est pro he de elle de SOAP dans son but d'in- teropérabilité,et dansleste hnologiesmisesen ÷uvre ommeleHTTPouleXML. Ils sediéren ient, en parti uliersur lagestion des espa es de nom, omplètement absentedansXML-RPCetsurlefaitqueSOAPn'estpasspé iquementdénipour êtreutilisésurleproto oleHTTP.

Cha un des servi esdénisutilise undi tionnaire asso iatif pour représenterun messageSOAP.Cha unde esmessages omportelesparamètresd'appelouderetour duservi eWeb.Bienque ettedénitionsoitdiérentede elledeSOAP,l'appro he est la même qu'ave les servi es Web standards : haque servi e Web est déni à l'aide d'unesignature typée. La réalisationde servi es Web utilisant des proto oles habituels tels que SOAP n'est pas simple te hniquement mais ne présente au une di ultés ientique.

Pourillustrer,prenonsl'exempleduservi eNCEP.Leservi eNCEPprend omme entréeunmessage omportantungeopoint etuneperiod etrenvoieunmessage om- portant une liste appelée temperatures. La requête XML-RPC orrespondantà une latitudede

48.86

,unelongitudede

2.33

etunepériodeentre2005-05-05et2005-05-15, est:

send: 'POST / HTTP/1.0 Host: lo alhost:8888

User-Agent: xmlrp lib.py/1.0.1 (by www.pythonware. om) Content-Type: text/xml Content-Length: 575 'send: "<?xml version='1.0'?> <methodCall> <methodName>servi e1</methodName> <params> <param> <value><stru t>

<member> <name>geopoint</name> <value><stru t> <member> <name>lat</name> <value><double>48.86</double></value> </member> <member> <name>lon</name> <value><double>2.33</double></value> </member> </stru t></value> </member> <member> <name>period</name> <value><stru t> <member> <name>begin</name> <value><int>20050505</int></value> </member> <member> <name>end</name> <value><int>20050515</int></value> </member> </stru t></value> </member> </stru t></value> </param> </params> </methodCall>"

Laréponse orrespondantàl'appelde eservi eWebest: reply: 'HTTP/1.0 200 OK\r\n'

header: Server: BaseHTTP/0.3 Python/2.6.2 header: Date: Mon, 18 May 2009 15:09:52 GMT header: Content-type: text/xml

header: Content-length: 6311 body: "<?xml version='1.0'?> <methodResponse> <params> <param> <value> <stru t> <member> <name>temperatures</name> <value> <array><data> <value><stru t> <member>

<name>date</name> <value><int>20050505</int></value> </member> <member> <name>geopoint</name> <value><stru t> <member> <name>lat</name> <value><double>48.86</double></value> </member> <member> <name>lon</name> <value><double>2.33</double></value> </member> </stru t> </value> </member> <member> <name>quality</name> <value><double>0.90000000000000002</double></value> </member> <member> <name>unit</name> <value><string>Celsius</string></value> </member> <member> <name>value</name> <value><int>19</int></value> </member> </stru t> </value> <value><stru t> <member> <name>date</name> <value><int>20050506</int></value> </member> [.../...℄ </value> [.../...℄ </data> </array> </value> </member> </stru t> </value> </param> </params> </methodResponse>'

6.3.4.2 Exé ution des s énarios

L'exé ution dess énariosestréaliséeprin ipalementpartroiss riptsdiérents. Le premier s ripta pourobje tif de démarrer un serveur ontenantles servi es Web. Ce s ript dénit quels servi es Web doivent être démarrés et quels servi es Webdoiventêtrearrêtés,ainsiqueleurstatut:normalouparfait.Lesservi esWeb normauxsontréalisésàpartirdesservi esWebparfaits.Leservi eWebparfaitfour- nissanttouteslesdonnées,jeretirelamoitiédesdonnéesqu'ilafourniespourréaliser leservi eWebnormal orrespondant.Deplusjeneretirepas ettemoitiéauhasard, je laretiredefaçonà e qu'aumoins une valeurpuisseêtre omplétéeparunautre servi eWebnormaldans haques énariooù 'estné essaire.Leserveurresteenroute tout aulongdudéroulementd'un s énariopuis ilest arrêtéunefois les énarioter- miné.Less énariossontexé utéssurunemêmema hinemaisilsnepeuventpasêtre exé utésenmêmetemps.

Le deuxièmes riptse harged'exé uter larequêtedel'utilisateur, and'obtenir le résultat de la omposition.Ces s riptssont spé iques à ha une des méthodes, maissuiventlemêmes hémad'initialisationet d'exé ution.D'abordles riptdénit les données onnues parla méthode au moment dela requête, puis laméthode est exé utéeave lesparamètresetlarequêtedel'utilisateur.

Lederniers riptapourbutderéalisertousless énarios,lesunsaprèslesautres. Il ommen e pardémarrer le serveur du premier s énario, puis exé ute la requête. Ensuite il enregistre le résultat dans un  hier qui servira pour l'analyse. Enn, il arrêteleserveurpourdémarrerleserveurdus énariosuivant.