SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
Tsung GIS
Rodolphe Quiédeville
Tests de charge des systèmes d’informations géographiques
22 mai 2014
Rodolphe Quiédeville
15 ans d’admin/sys tendance devops
18 ans de libertés dans l’IT
venu aux SIG par freegis
contributeur OpenStreetMap
contributeur Tsung
freelance
Principe du test de performance
Jouer un scénario métier sur un système applicatif, et cela sous
différentes charges afin de mesurer les temps de réponses, de
détecter d’éventuels problèmes, déterminer le point de rupture
...
Principe du test de performance
Jouer un scénario métier sur un système applicatif, et cela sous
différentes charges afin de mesurer les temps de réponses, de
détecter d’éventuels problèmes, déterminer le point de rupture
...
test de charge
Principe du test de performance
Jouer un scénario métier sur un système applicatif, et cela sous
différentes charges afin de mesurer les temps de réponses, de
détecter d’éventuels problèmes, déterminer le point de rupture
...
test de charge
test de performance
Principe du test de performance
Jouer un scénario métier sur un système applicatif, et cela sous
différentes charges afin de mesurer les temps de réponses, de
détecter d’éventuels problèmes, déterminer le point de rupture
...
test de charge
test de performance
test de capacité, montée en charge
Principe du test de performance
Jouer un scénario métier sur un système applicatif, et cela sous
différentes charges afin de mesurer les temps de réponses, de
détecter d’éventuels problèmes, déterminer le point de rupture
...
test de charge
test de performance
test de capacité, montée en charge
test aux limites
Principe du test de performance
Jouer un scénario métier sur un système applicatif, et cela sous
différentes charges afin de mesurer les temps de réponses, de
détecter d’éventuels problèmes, déterminer le point de rupture
...
test de charge
test de performance
test de capacité, montée en charge
test aux limites
test de vieillissement
Tsung
Pourquoi Tsung
multi protocoles
scalable (validé à 10 Millions d’utilisateurs)
extensible par plugins
scenarios XML avec validation XSL
scenario dynamique avec chargement de modules
13 ans de code, un projet robuste
publié sous GNU GPL V2
ouvert à contribution
modèle Stochastic avec distribution de Poisson
Utilisateurs de Tsung
Total
CMA-CGM
Ministère des finances
Dailymotion
Skyrock
LibertySurf
Grid’5000
Scenario
Squelette de scenario
Example
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<clients />
<servers />
<options />
<load />
<sessions>
<session>
<transaction name="foobar"/>
<transaction name="barfoo"/>
</session>
</sessions>
</tsung>
Tsung GIS
Si tsung permet de réaliser des tests de performance, il n’a pas
de dimension géographique.
Tsung GIS
Si tsung permet de réaliser des tests de performance, il n’a pas
de dimension géographique.
Tsung GIS apporte cette dimension géographique à Tsung
Tsung GIS
Si tsung permet de réaliser des tests de performance, il n’a pas
de dimension géographique.
Tsung GIS apporte cette dimension géographique à Tsung
modules de calculs
Tsung GIS
Si tsung permet de réaliser des tests de performance, il n’a pas
de dimension géographique.
Tsung GIS apporte cette dimension géographique à Tsung
modules de calculs
des squelettes de scenario
Spécificité des systèmes SIG
Une carte à base de tuiles dans une page web engendre un
nombre élevé de requête
Example
/tile/france/6/33/21.png
/tile/france/6/31/23.png
/tile/france/6/34/23.png
/tile/france/6/33/24.png
/tile/france/6/30/21.png
/tile/france/6/32/22.png
/tile/france/6/30/24.png
/tile/france/7/63/45.png
/tile/france/7/62/46.png
/tile/france/7/65/46.png
/tile/france/7/66/45.png
/tile/france/7/64/44.png
/tile/france/8/126/90.png
/tile/france/8/129/90.png
/tile/france/8/127/92.png
Spécificité des systèmes SIG
Example
<request>
<http url="/tile/france/6/33/21.png">
</request>
<request>
<http url="/tile/france/6/31/23.png">
</request>
<request>
<http url="/tile/france/6/34/23.png">
</request>
<request>
<http url="/tile/france/6/33/24.png">
</request>
<request>
<http url="/tile/france/6/30/21.png">
</request>
<request>
<http url="/tile/france/6/32/22.png">
</request>
Problématiques
scénarios longs et fastidieux
Problématiques
scénarios longs et fastidieux
scénarios sans approche métier
Problématiques
scénarios longs et fastidieux
scénarios sans approche métier
scénarios difficilement maintenables
Problématiques
scénarios longs et fastidieux
scénarios sans approche métier
scénarios difficilement maintenables
scénarios non réutilisables
Problématiques
scénarios longs et fastidieux
scénarios sans approche métier
scénarios difficilement maintenables
scénarios non réutilisables
Il est possible d’améliorer la situation en utlisant un module.
Réflexions
Qu’est-ce qui caractérise un SIG d’un SI ?
Réflexions
Qu’est-ce qui caractérise un SIG d’un SI ?
les actions sont limitées
Réflexions
Qu’est-ce qui caractérise un SIG d’un SI ?
les actions sont limitées
appels HTTP sont prédictifs
Mouvements
Les actions utilisateurs sont au nombre de 6.
4 mouvements de base, un par direction.
déplacement vers le nord
déplacement vers le sud
déplacement vers l’ouest
déplacement vers l’est
Plus 2 actions de zoom
zoom_more
zoom_less
Fonctions spéciales
Ces 6 actions de bases sont complétées avec 1 action
d’initialisation.
Et 3 actions aléatoires pour augmenter l’interactivité du
scénario.
move_first : initialisation de la carte
action_random : action aléatoire
move_random : déplacement aléatoire
zoom_random : zoom aléatoire
Modules
Les différents modules qui composent Tsung GIS
Des modules utilitaires
map
randomcoord
slippymap
reproj
Les modules de protocoles
tms
wfs
wkb
wms
xyz
randomcoord
Génération de données géographiques aléatoires.
rcoord_array
url
rcoord_array/1
rcoord_array/1 retourne un tableau de coordonées lat,lon
Example
10> randomcoord:rcoord_array({Pid, Dynvars}).
["70.205974","33.121879"]
rcoord_array/1
rcoord_array/1 retourne un tableau de coordonées lat,lon
Example
10> randomcoord:rcoord_array({Pid, Dynvars}).
["70.205974","33.121879"]
rcoord_array/1 peut être configuré pour renvoyer des données
au sein d’une bbox donnée.
randomcoord
url/1 retourne une url de base pour générer des données
géographiques aléatoires
url/1
4> randomcoord:url({Pid, Dynvars}).
"lat=88.969257&lon=47.267150"
slippymap
slippymap rassemble des fonctions de conversions
essentiellement utilisées par les modules plus orientés
fonctionnels.
slippymap
slippymap rassemble des fonctions de conversions
essentiellement utilisées par les modules plus orientés
fonctionnels.
deg2num/3
num2deg/3
num2bbox/3
tile2lat/2
tile2lon/2
slippymap
deg2num/3 conversion d’une coordonnées lon,lat en un
numéro de tuile contenant cette coordonnées à un niveau de
zoom donné.
deg2num/3
10> slippymap:deg2num(48.84098,2.58741,18).
{132956,90202}
reproj
reproj permet de faire les conversions entre systèmes de
coordonnées.
tmstowms/1
reproj/3
reproj utilise proj4erl qui est un bindings erlang de la librairie
PROJ.4
wkb
wkb est plus orienté Postgis que web, il regroupe les fonctions
de manipulations d’objet encodé en Well Known Binary
wkb_point/1
wkb_linestring/1
Module encore au stage alpha
xyz
xyz est constitué de toutes les actions de base relatives à une
carte implémentée dans un contexte web avec par exemple
OpenLayers ou Leaflet.
xyz
xyz est constitué de toutes les actions de base relatives à une
carte implémentée dans un contexte web avec par exemple
OpenLayers ou Leaflet.
move_first
move_north
move_south
move_east
move_west
move_random
zoom_more
zoom_less
zoom_random
action_random
Initialisation
L’initialisation d’un scenario consiste à définir la taille de la
carte, le point central et les différentes couches.
Initialisation
L’initialisation d’un scenario consiste à définir la taille de la
carte, le point central et les différentes couches.
dimensions
<setdynvars sourcetype="value" value="960">
<var name="map_width" />
</setdynvars>
<setdynvars sourcetype="value" value="640">
<var name="map_height" />
</setdynvars>
Initialisation
L’initialisation d’un scenario consiste à définir la taille de la
carte, le point central et les différentes couches.
dimensions
<setdynvars sourcetype="value" value="960">
<var name="map_width" />
</setdynvars>
<setdynvars sourcetype="value" value="640">
<var name="map_height" />
</setdynvars>
centre
<setdynvars sourcetype="value" value="8/109/121">
<var name="first_url" />
</setdynvars>
Initialisation
La dernière étape est l’utilisation de move_first qui correspond
à l’arrivée sur le site.
Example
<setdynvars sourcetype="erlang" callback="xyz:move_first
<var name="list_url" />
</setdynvars>
<transaction name="move_first">
<foreach name="url" in="list_url">
<request subst="true">
<http url="/%%_url%%.png" />
</request>
</foreach>
</transaction>
Mouvement de base
Une fois la carte initialisée on peut utiliser les toutes les autres
actions un déplacement vers l’est se fera en utilisant ...
Mouvement de base
Une fois la carte initialisée on peut utiliser les toutes les autres
actions un déplacement vers l’est se fera en utilisant
xyz:move_east
Example
<setdynvars callback="xyz:move_east" sourcetype="erlang"
<var name="list_url" />
</setdynvars>
<foreach name="element" in="list_url">
<request subst="true">
<http url="/%%_element%%.png" />
</request>
</foreach>
ENTITY
Comme XML et Tsung le permettent on va factoriser un peu le
scenario pour le rendre plus lisible.
ENTITY
On va définir en début de scénario des entités xml pour chaque
action de base
ENTITY
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"
[
<!ENTITY move_first SYSTEM "xyz_move_first.xml">
<!ENTITY move_east SYSTEM "xyz_move_east.xml">
<!ENTITY move_north SYSTEM "xyz_move_north.xml">
<!ENTITY move_south SYSTEM "xyz_move_south.xml">
<!ENTITY move_west SYSTEM "xyz_move_west.xml">
<!ENTITY zoom_more SYSTEM "xyz_zoom_more.xml">
<!ENTITY zoom_less SYSTEM "xyz_zoom_less.xml">
]
>
<tsung loglevel="notice" version="1.0">
Scénario initial
Pour rappel le scénario initial était :
Example
<transaction>
<request>
<http url="/tile/france/6/33/21.png">
</request>
<request>
<http url="/tile/france/6/31/23.png">
</request>
<request>
<http url="/tile/france/6/34/23.png">
</request>
<request>
<http url="/tile/france/6/33/24.png">
</request>
<request>
<http url="/tile/france/6/30/21.png">
</request>
Scénario initial
Va dorénavant pouvoir s’écrire
Example
<transaction>
&zoom_more;
&zoom_more;
&move_east;
&move_west;
</transaction>
Scénario initial
Un scénario complet devient un ensemble de règle métier
Example
<session name="sess1" probability="100">
&init_map;
<transaction name="start">
&move_first;
</transaction>
<transaction name="nav">
&move_random;
&zoom_more;
&move_north;
</transaction>
</session>
Analyse des résultats
Analyse des résultats
Analyse des résultats
Scénario initial
Ce qui n’a pas été abordé
support wms
support tms
support wfs
la gestion des couches
carte composite multi-protocoles
Contribuer
Code sous licence GPL ouvert à contribution.
Docs, http://tsung-gis.readthedocs.org/en/
latest/index.html/
Code, https://github.com/rodo/tsung-gis/
CI, http:
//jenkins.quiedeville.org/view/TsungGIS/
Contribuer
Code sous licence GPL ouvert à contribution.
Docs, http://tsung-gis.readthedocs.org/en/
latest/index.html/
Code, https://github.com/rodo/tsung-gis/
CI, http:
//jenkins.quiedeville.org/view/TsungGIS/
Si vous ne savez pas coder vous pouvez me payer pour le faire
à votre place !
Questions ?
Rodolphe Quiédeville
rodolphe@quiedeville.org
http://blog.rodolphe.quiedeville.org/
Document publié sous Licence Creative Commons BY-SA 2.0

Contenu connexe

En vedette

Comment démarrer sur Storify (et ses successeurs).
Comment démarrer sur Storify (et ses successeurs).Comment démarrer sur Storify (et ses successeurs).
Comment démarrer sur Storify (et ses successeurs).Anto Rfk
 
Aides sociales régionales
 Aides sociales régionales Aides sociales régionales
Aides sociales régionalesJo Anis
 
Résultats sondages étudiants dernière version 26 mai
Résultats sondages étudiants dernière version 26 maiRésultats sondages étudiants dernière version 26 mai
Résultats sondages étudiants dernière version 26 maijaveldoz
 
François Martin, Pixels Award 2014 - Pixels Festival S01E01
François Martin, Pixels Award 2014 - Pixels Festival S01E01François Martin, Pixels Award 2014 - Pixels Festival S01E01
François Martin, Pixels Award 2014 - Pixels Festival S01E01Pixelsfestival
 
Plaquette Babel31
Plaquette Babel31Plaquette Babel31
Plaquette Babel31Babel 31
 
Programmation
ProgrammationProgrammation
ProgrammationAteliers
 
Édition de fichiers ePub et autres outils de création
Édition de fichiers ePub et autres outils de créationÉdition de fichiers ePub et autres outils de création
Édition de fichiers ePub et autres outils de créationVitrine Technologie Éducation
 
Droits et devoirs du locataire
Droits et devoirs du locataireDroits et devoirs du locataire
Droits et devoirs du locataireGeoffroy Nasset
 
Afrique de l’ouest:eau douce
Afrique de l’ouest:eau douceAfrique de l’ouest:eau douce
Afrique de l’ouest:eau doucesylvestm08
 
Extract Séminaire Teacher Tools
Extract Séminaire Teacher ToolsExtract Séminaire Teacher Tools
Extract Séminaire Teacher ToolsAiM Services
 
La prière contemplative dans la vie normale d’un chrétien
La prière contemplative dans la vie normale d’un chrétienLa prière contemplative dans la vie normale d’un chrétien
La prière contemplative dans la vie normale d’un chrétienGnazalé Stéphane
 

En vedette (16)

Comment démarrer sur Storify (et ses successeurs).
Comment démarrer sur Storify (et ses successeurs).Comment démarrer sur Storify (et ses successeurs).
Comment démarrer sur Storify (et ses successeurs).
 
Prueba I
Prueba IPrueba I
Prueba I
 
Dossier pédagogique UBU ROI
Dossier pédagogique UBU ROIDossier pédagogique UBU ROI
Dossier pédagogique UBU ROI
 
Aides sociales régionales
 Aides sociales régionales Aides sociales régionales
Aides sociales régionales
 
Résultats sondages étudiants dernière version 26 mai
Résultats sondages étudiants dernière version 26 maiRésultats sondages étudiants dernière version 26 mai
Résultats sondages étudiants dernière version 26 mai
 
François Martin, Pixels Award 2014 - Pixels Festival S01E01
François Martin, Pixels Award 2014 - Pixels Festival S01E01François Martin, Pixels Award 2014 - Pixels Festival S01E01
François Martin, Pixels Award 2014 - Pixels Festival S01E01
 
Plaquette Babel31
Plaquette Babel31Plaquette Babel31
Plaquette Babel31
 
Programmation
ProgrammationProgrammation
Programmation
 
Édition de fichiers ePub et autres outils de création
Édition de fichiers ePub et autres outils de créationÉdition de fichiers ePub et autres outils de création
Édition de fichiers ePub et autres outils de création
 
Droits et devoirs du locataire
Droits et devoirs du locataireDroits et devoirs du locataire
Droits et devoirs du locataire
 
Pr rooms
Pr roomsPr rooms
Pr rooms
 
Joue avec m'oie
Joue avec m'oieJoue avec m'oie
Joue avec m'oie
 
Afrique de l’ouest:eau douce
Afrique de l’ouest:eau douceAfrique de l’ouest:eau douce
Afrique de l’ouest:eau douce
 
Extract Séminaire Teacher Tools
Extract Séminaire Teacher ToolsExtract Séminaire Teacher Tools
Extract Séminaire Teacher Tools
 
La prière contemplative dans la vie normale d’un chrétien
La prière contemplative dans la vie normale d’un chrétienLa prière contemplative dans la vie normale d’un chrétien
La prière contemplative dans la vie normale d’un chrétien
 
ESI TU DONNAIS
ESI TU DONNAISESI TU DONNAIS
ESI TU DONNAIS
 

Similaire à Tsung GIS

BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyribaOlivier BAZOUD
 
L’atout cartographie en mobilité : implémentation pratique et cas concrets
L’atout cartographie en mobilité : implémentation pratique et cas concretsL’atout cartographie en mobilité : implémentation pratique et cas concrets
L’atout cartographie en mobilité : implémentation pratique et cas concretsMicrosoft
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?Marc Bojoly
 
System Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la mainSystem Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la mainMicrosoft Technet France
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesGeeks Anonymes
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1Marc Bojoly
 
Cas d'étude - Zabbix Toulouse #1 - ZUG
Cas d'étude - Zabbix Toulouse #1 - ZUGCas d'étude - Zabbix Toulouse #1 - ZUG
Cas d'étude - Zabbix Toulouse #1 - ZUGZabbix User Group
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Kenny Dits
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...Publicis Sapient Engineering
 

Similaire à Tsung GIS (20)

BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
L’atout cartographie en mobilité : implémentation pratique et cas concrets
L’atout cartographie en mobilité : implémentation pratique et cas concretsL’atout cartographie en mobilité : implémentation pratique et cas concrets
L’atout cartographie en mobilité : implémentation pratique et cas concrets
 
Event-sourcing avancé avec Scala
Event-sourcing avancé avec ScalaEvent-sourcing avancé avec Scala
Event-sourcing avancé avec Scala
 
ParisJUG-2022-v0.4.pdf
ParisJUG-2022-v0.4.pdfParisJUG-2022-v0.4.pdf
ParisJUG-2022-v0.4.pdf
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?
 
System Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la mainSystem Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la main
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexes
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
PresentationMéthodologie SCRUM-2021.pptx
PresentationMéthodologie SCRUM-2021.pptxPresentationMéthodologie SCRUM-2021.pptx
PresentationMéthodologie SCRUM-2021.pptx
 
Cas d'étude - Zabbix Toulouse #1 - ZUG
Cas d'étude - Zabbix Toulouse #1 - ZUGCas d'étude - Zabbix Toulouse #1 - ZUG
Cas d'étude - Zabbix Toulouse #1 - ZUG
 
Perf university
Perf universityPerf university
Perf university
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
 

Plus de Rodolphe Quiédeville

Plus de Rodolphe Quiédeville (16)

Tests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTapTests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTap
 
PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2
 
SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015
 
Pytong2015
Pytong2015Pytong2015
Pytong2015
 
Tsung de 1 à 1 million / Confoo Montréal 2015
Tsung de 1 à 1 million / Confoo Montréal 2015Tsung de 1 à 1 million / Confoo Montréal 2015
Tsung de 1 à 1 million / Confoo Montréal 2015
 
Confoo django
Confoo djangoConfoo django
Confoo django
 
BBL Données gégraphiques libres chez Work4labs
BBL Données gégraphiques libres chez Work4labsBBL Données gégraphiques libres chez Work4labs
BBL Données gégraphiques libres chez Work4labs
 
BBL autour de PostgreSQL @Novapost
BBL autour de PostgreSQL @NovapostBBL autour de PostgreSQL @Novapost
BBL autour de PostgreSQL @Novapost
 
BBL chez Mappy autour de Tsung
BBL chez Mappy autour de TsungBBL chez Mappy autour de Tsung
BBL chez Mappy autour de Tsung
 
Un Tsung vaut mieux que 2 "croisons les doigts"
Un Tsung vaut mieux que 2 "croisons les doigts"Un Tsung vaut mieux que 2 "croisons les doigts"
Un Tsung vaut mieux que 2 "croisons les doigts"
 
OpenStreetMap Realtime Check
OpenStreetMap Realtime CheckOpenStreetMap Realtime Check
OpenStreetMap Realtime Check
 
Présentation de Tsung chez Leboncoin
Présentation de Tsung chez LeboncoinPrésentation de Tsung chez Leboncoin
Présentation de Tsung chez Leboncoin
 
de 1 à 1 million avec Tsung
de 1 à 1 million avec Tsungde 1 à 1 million avec Tsung
de 1 à 1 million avec Tsung
 
Tests de performance avec Tsung
Tests de performance avec TsungTests de performance avec Tsung
Tests de performance avec Tsung
 
Asterisk
AsteriskAsterisk
Asterisk
 
Tests de montée en charge avec Tsung
Tests de montée en charge avec TsungTests de montée en charge avec Tsung
Tests de montée en charge avec Tsung
 

Tsung GIS

  • 1. Tsung GIS Rodolphe Quiédeville Tests de charge des systèmes d’informations géographiques 22 mai 2014
  • 2. Rodolphe Quiédeville 15 ans d’admin/sys tendance devops 18 ans de libertés dans l’IT venu aux SIG par freegis contributeur OpenStreetMap contributeur Tsung freelance
  • 3. Principe du test de performance Jouer un scénario métier sur un système applicatif, et cela sous différentes charges afin de mesurer les temps de réponses, de détecter d’éventuels problèmes, déterminer le point de rupture ...
  • 4. Principe du test de performance Jouer un scénario métier sur un système applicatif, et cela sous différentes charges afin de mesurer les temps de réponses, de détecter d’éventuels problèmes, déterminer le point de rupture ... test de charge
  • 5. Principe du test de performance Jouer un scénario métier sur un système applicatif, et cela sous différentes charges afin de mesurer les temps de réponses, de détecter d’éventuels problèmes, déterminer le point de rupture ... test de charge test de performance
  • 6. Principe du test de performance Jouer un scénario métier sur un système applicatif, et cela sous différentes charges afin de mesurer les temps de réponses, de détecter d’éventuels problèmes, déterminer le point de rupture ... test de charge test de performance test de capacité, montée en charge
  • 7. Principe du test de performance Jouer un scénario métier sur un système applicatif, et cela sous différentes charges afin de mesurer les temps de réponses, de détecter d’éventuels problèmes, déterminer le point de rupture ... test de charge test de performance test de capacité, montée en charge test aux limites
  • 8. Principe du test de performance Jouer un scénario métier sur un système applicatif, et cela sous différentes charges afin de mesurer les temps de réponses, de détecter d’éventuels problèmes, déterminer le point de rupture ... test de charge test de performance test de capacité, montée en charge test aux limites test de vieillissement
  • 10. Pourquoi Tsung multi protocoles scalable (validé à 10 Millions d’utilisateurs) extensible par plugins scenarios XML avec validation XSL scenario dynamique avec chargement de modules 13 ans de code, un projet robuste publié sous GNU GPL V2 ouvert à contribution modèle Stochastic avec distribution de Poisson
  • 11. Utilisateurs de Tsung Total CMA-CGM Ministère des finances Dailymotion Skyrock LibertySurf Grid’5000
  • 12. Scenario Squelette de scenario Example <?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung loglevel="notice" version="1.0"> <clients /> <servers /> <options /> <load /> <sessions> <session> <transaction name="foobar"/> <transaction name="barfoo"/> </session> </sessions> </tsung>
  • 13. Tsung GIS Si tsung permet de réaliser des tests de performance, il n’a pas de dimension géographique.
  • 14. Tsung GIS Si tsung permet de réaliser des tests de performance, il n’a pas de dimension géographique. Tsung GIS apporte cette dimension géographique à Tsung
  • 15. Tsung GIS Si tsung permet de réaliser des tests de performance, il n’a pas de dimension géographique. Tsung GIS apporte cette dimension géographique à Tsung modules de calculs
  • 16. Tsung GIS Si tsung permet de réaliser des tests de performance, il n’a pas de dimension géographique. Tsung GIS apporte cette dimension géographique à Tsung modules de calculs des squelettes de scenario
  • 17. Spécificité des systèmes SIG Une carte à base de tuiles dans une page web engendre un nombre élevé de requête Example /tile/france/6/33/21.png /tile/france/6/31/23.png /tile/france/6/34/23.png /tile/france/6/33/24.png /tile/france/6/30/21.png /tile/france/6/32/22.png /tile/france/6/30/24.png /tile/france/7/63/45.png /tile/france/7/62/46.png /tile/france/7/65/46.png /tile/france/7/66/45.png /tile/france/7/64/44.png /tile/france/8/126/90.png /tile/france/8/129/90.png /tile/france/8/127/92.png
  • 18. Spécificité des systèmes SIG Example <request> <http url="/tile/france/6/33/21.png"> </request> <request> <http url="/tile/france/6/31/23.png"> </request> <request> <http url="/tile/france/6/34/23.png"> </request> <request> <http url="/tile/france/6/33/24.png"> </request> <request> <http url="/tile/france/6/30/21.png"> </request> <request> <http url="/tile/france/6/32/22.png"> </request>
  • 20. Problématiques scénarios longs et fastidieux scénarios sans approche métier
  • 21. Problématiques scénarios longs et fastidieux scénarios sans approche métier scénarios difficilement maintenables
  • 22. Problématiques scénarios longs et fastidieux scénarios sans approche métier scénarios difficilement maintenables scénarios non réutilisables
  • 23. Problématiques scénarios longs et fastidieux scénarios sans approche métier scénarios difficilement maintenables scénarios non réutilisables Il est possible d’améliorer la situation en utlisant un module.
  • 25. Réflexions Qu’est-ce qui caractérise un SIG d’un SI ? les actions sont limitées
  • 26. Réflexions Qu’est-ce qui caractérise un SIG d’un SI ? les actions sont limitées appels HTTP sont prédictifs
  • 27. Mouvements Les actions utilisateurs sont au nombre de 6. 4 mouvements de base, un par direction. déplacement vers le nord déplacement vers le sud déplacement vers l’ouest déplacement vers l’est Plus 2 actions de zoom zoom_more zoom_less
  • 28. Fonctions spéciales Ces 6 actions de bases sont complétées avec 1 action d’initialisation. Et 3 actions aléatoires pour augmenter l’interactivité du scénario. move_first : initialisation de la carte action_random : action aléatoire move_random : déplacement aléatoire zoom_random : zoom aléatoire
  • 29. Modules Les différents modules qui composent Tsung GIS Des modules utilitaires map randomcoord slippymap reproj Les modules de protocoles tms wfs wkb wms xyz
  • 30. randomcoord Génération de données géographiques aléatoires. rcoord_array url
  • 31. rcoord_array/1 rcoord_array/1 retourne un tableau de coordonées lat,lon Example 10> randomcoord:rcoord_array({Pid, Dynvars}). ["70.205974","33.121879"]
  • 32. rcoord_array/1 rcoord_array/1 retourne un tableau de coordonées lat,lon Example 10> randomcoord:rcoord_array({Pid, Dynvars}). ["70.205974","33.121879"] rcoord_array/1 peut être configuré pour renvoyer des données au sein d’une bbox donnée.
  • 33. randomcoord url/1 retourne une url de base pour générer des données géographiques aléatoires url/1 4> randomcoord:url({Pid, Dynvars}). "lat=88.969257&lon=47.267150"
  • 34. slippymap slippymap rassemble des fonctions de conversions essentiellement utilisées par les modules plus orientés fonctionnels.
  • 35. slippymap slippymap rassemble des fonctions de conversions essentiellement utilisées par les modules plus orientés fonctionnels. deg2num/3 num2deg/3 num2bbox/3 tile2lat/2 tile2lon/2
  • 36. slippymap deg2num/3 conversion d’une coordonnées lon,lat en un numéro de tuile contenant cette coordonnées à un niveau de zoom donné. deg2num/3 10> slippymap:deg2num(48.84098,2.58741,18). {132956,90202}
  • 37. reproj reproj permet de faire les conversions entre systèmes de coordonnées. tmstowms/1 reproj/3 reproj utilise proj4erl qui est un bindings erlang de la librairie PROJ.4
  • 38. wkb wkb est plus orienté Postgis que web, il regroupe les fonctions de manipulations d’objet encodé en Well Known Binary wkb_point/1 wkb_linestring/1 Module encore au stage alpha
  • 39. xyz xyz est constitué de toutes les actions de base relatives à une carte implémentée dans un contexte web avec par exemple OpenLayers ou Leaflet.
  • 40. xyz xyz est constitué de toutes les actions de base relatives à une carte implémentée dans un contexte web avec par exemple OpenLayers ou Leaflet. move_first move_north move_south move_east move_west move_random zoom_more zoom_less zoom_random action_random
  • 41. Initialisation L’initialisation d’un scenario consiste à définir la taille de la carte, le point central et les différentes couches.
  • 42. Initialisation L’initialisation d’un scenario consiste à définir la taille de la carte, le point central et les différentes couches. dimensions <setdynvars sourcetype="value" value="960"> <var name="map_width" /> </setdynvars> <setdynvars sourcetype="value" value="640"> <var name="map_height" /> </setdynvars>
  • 43. Initialisation L’initialisation d’un scenario consiste à définir la taille de la carte, le point central et les différentes couches. dimensions <setdynvars sourcetype="value" value="960"> <var name="map_width" /> </setdynvars> <setdynvars sourcetype="value" value="640"> <var name="map_height" /> </setdynvars> centre <setdynvars sourcetype="value" value="8/109/121"> <var name="first_url" /> </setdynvars>
  • 44. Initialisation La dernière étape est l’utilisation de move_first qui correspond à l’arrivée sur le site. Example <setdynvars sourcetype="erlang" callback="xyz:move_first <var name="list_url" /> </setdynvars> <transaction name="move_first"> <foreach name="url" in="list_url"> <request subst="true"> <http url="/%%_url%%.png" /> </request> </foreach> </transaction>
  • 45. Mouvement de base Une fois la carte initialisée on peut utiliser les toutes les autres actions un déplacement vers l’est se fera en utilisant ...
  • 46. Mouvement de base Une fois la carte initialisée on peut utiliser les toutes les autres actions un déplacement vers l’est se fera en utilisant xyz:move_east Example <setdynvars callback="xyz:move_east" sourcetype="erlang" <var name="list_url" /> </setdynvars> <foreach name="element" in="list_url"> <request subst="true"> <http url="/%%_element%%.png" /> </request> </foreach>
  • 47. ENTITY Comme XML et Tsung le permettent on va factoriser un peu le scenario pour le rendre plus lisible.
  • 48. ENTITY On va définir en début de scénario des entités xml pour chaque action de base ENTITY <?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd" [ <!ENTITY move_first SYSTEM "xyz_move_first.xml"> <!ENTITY move_east SYSTEM "xyz_move_east.xml"> <!ENTITY move_north SYSTEM "xyz_move_north.xml"> <!ENTITY move_south SYSTEM "xyz_move_south.xml"> <!ENTITY move_west SYSTEM "xyz_move_west.xml"> <!ENTITY zoom_more SYSTEM "xyz_zoom_more.xml"> <!ENTITY zoom_less SYSTEM "xyz_zoom_less.xml"> ] > <tsung loglevel="notice" version="1.0">
  • 49. Scénario initial Pour rappel le scénario initial était : Example <transaction> <request> <http url="/tile/france/6/33/21.png"> </request> <request> <http url="/tile/france/6/31/23.png"> </request> <request> <http url="/tile/france/6/34/23.png"> </request> <request> <http url="/tile/france/6/33/24.png"> </request> <request> <http url="/tile/france/6/30/21.png"> </request>
  • 50. Scénario initial Va dorénavant pouvoir s’écrire Example <transaction> &zoom_more; &zoom_more; &move_east; &move_west; </transaction>
  • 51. Scénario initial Un scénario complet devient un ensemble de règle métier Example <session name="sess1" probability="100"> &init_map; <transaction name="start"> &move_first; </transaction> <transaction name="nav"> &move_random; &zoom_more; &move_north; </transaction> </session>
  • 55. Scénario initial Ce qui n’a pas été abordé support wms support tms support wfs la gestion des couches carte composite multi-protocoles
  • 56. Contribuer Code sous licence GPL ouvert à contribution. Docs, http://tsung-gis.readthedocs.org/en/ latest/index.html/ Code, https://github.com/rodo/tsung-gis/ CI, http: //jenkins.quiedeville.org/view/TsungGIS/
  • 57. Contribuer Code sous licence GPL ouvert à contribution. Docs, http://tsung-gis.readthedocs.org/en/ latest/index.html/ Code, https://github.com/rodo/tsung-gis/ CI, http: //jenkins.quiedeville.org/view/TsungGIS/ Si vous ne savez pas coder vous pouvez me payer pour le faire à votre place !