Project:
Charge : LDAP load testing
Code Location:
https://loadtesting.svn.sourceforge.net/svnroot/loadtesting/trunk/trunk
README.fr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
Sommaire 1. Résumé 2. Documentation 3. Installation 4. Configuration 5. Utilisation 6. Contact 1. Résumé Charge est un programme de test de charge. Il permet de tester la charge qu'un annuaire LDAP peut recevoir. Un fichier de configuration en XML permet de définir quelles sont les opérations à exécuter, dans quel ordre, et éventuellement de générer des opérations LDAP à partir de règles simples. En particulier, il est possible de définir : - une ou plusieurs séquences d'opérations, qui s'exécuteront simultanément ; - pour chaque opération, une liste d'ensembles de paramètres. Un des ensembles de paramètres sera choisi aléatoirement ; - chaque liste d'ensembles de paramètres peut être générée à partir de variables. Orienté LDAP à l'origine, Charge pourra facilement être amélioré afin de gérer d'autres protocoles et types de serveurs. 2. Documentation De nombreuses informations peuvent être trouvées dans ce fichier, ainsi que dans les fichiers suivants : - INSTALL.fr : ce qu'il faut et comment installer le programme - FAQ.fr : foire aux questions - FAQ_DEVOLOPERS.fr : foire aux questions spécialement pour les développeurs - TODO.fr : liste de choses à faire, plutôt pour les développeurs - COPYING : licence d'utilisation (GPL v2) Ces informations ainsi que d'autres peuvent être trouvées sur le site http://loadtesting.sourceforge.net 3. Installation Voir le fichier INSTALL.fr 4. Configuration Le fichier de configuration de Charge est un fichier XML. Il se base sur la DTD charge.dtd. Il commencera généralement par les lignes : <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE charge SYSTEM "charge.dtd"> <charge> et finira par la ligne : </charge> Lors d'un test de charge, vous aurez probablement besoin de définir un serveur, une séquence d'opérations et différents paramètres pour ces opérations. 4.1 Définition d'un serveur La balise <server> permet de définir un nouveau serveur. Elle prend comme paramètres : - name : l'identifiant du serveur. Si ce nom est "default", ce serveur sera considéré comme le serveur par défaut. - host : l'adresse IP ou le nom d'hôte du serveur - port : le port TCP/IP du serveur - ldapversion : version du protocole LDAP à utiliser (2 par défaut) - protocol : protocole utilisé (ldap par défaut, peut également être ldaps ou ldap+tls) Exemple : <server name="default" host="myldap.mydomain" port="389"/> 4.2 Définition de paramètres Les paramètres sont créés par des listes d'ensembles de paramètres. En effet, chaque opération peut prendre plusieurs paramètres (par exemple une authentification LDAP prend comme paramètre l'identifiant de l'utilisateur et son mot de passe). C'est ce qu'on appelera un ensemble de paramètres. Les listes d'ensemble de paramètres permettent de définir plusieurs ensembles de paramètres dont l'un sera choisi aléatoirement lors de l'exécution de l'opération. La balise <list> permet de définir une liste d'ensembles de paramètres. Elle prend comme paramètre : - name : l'identifiant de la liste. À l'intérieur de la balise <list>, il est possible de définir un ensemble de paramètres à l'aide de la balise <items>. À l'intérieur de la balise <items>, il est possible de définir chaque paramètre à l'aide d'une balise <item>. <item> prend comme paramètre : - value : valeur du paramètre. Exemple : <list name="connection"> <items> <item value="uid=user,o=example,c=country"/> <item value="secret"/> </items> </list> Il est également possible de générer plusieurs ensembles de paramètres à l'aide des options de la balise <items> : - var : caractère à remplacer - from : valeur de départ (1 par défaut) - to : valeur de fin (1 par défaut) - step : incrément (1 par défaut) Exemple : <list name="connections"> <items var="@" from="1" to="3"> <item value="uid=user@,o=example,c=country"/> <item value="secret"/> </items> </list> est équivalent à : <list name="connections"> <items> <item value="uid=user1,o=example,c=country"/> <item value="secret"/> </items> <items> <item value="uid=user2,o=example,c=country"/> <item value="secret"/> </items> <items> <item value="uid=user3,o=example,c=country"/> <item value="secret"/> </items> </list> À l'intérieur de la balise <list>, il est également possible d'utiliser la balise <reflist>, permettant d'inclure une liste. Elle a pour paramètres : - name : l'identifiant de la liste - var : caractère à remplacer - from : valeur de départ (1 par défaut) - to : valeur de fin (1 par défaut) - step : incrément (1 par défaut) De même que pour une balise <items>, il est donc possible de générer une liste à partir d'une autre liste en fonction d'une variable. Exemple : Voir charge.conf.complicated pour des exemples d'utilisation des <reflist> (concaténation de listes, générations à plusieurs variables,...). 4.3 Définition de séquences d'opérations Les séquences d'opérations sont définies par la balise <seq>. Celle-ci a pour paramètres : - nb : le nombre de sequences simultanées à créer (1 par défaut). Pour chaque séquence, un thread est créé. - it : le nombre d'itérations d'une séquence (1 par défaut). Chaque séquence créée s'exécutera le nombre de fois indiqué ici. - server : le serveur sur lequel ouvrir la connexion (par défaut le serveur désigné par "default", voir 4.1). Si plusieurs balise <seq> sont définies, elles seront exécutées en même temps (dans différents threads). Dans chaque balise <seq>, on peut définir des balises <op> correspondant aux opérations à exécuter. Les paramètres de celles-ci sont les suivants : - type : l'opération a exécuter (voir 4.4) - nb : le nombre d'exécutions de cette opération (1 par défaut) ; si la valeur "all" est spécifiée, tous les ensembles de paramètres seront pris successivement - name : l'identifiant d'une liste d'ensemble de paramètres précédemment définie (facultatif, voir 4.2) À l'intérieur de la balise <seq>, on pourra éventuellement utiliser des balises <items> et/ou <reflist> comme défini au 4.2. Exemple : <seq nb="10" it="100" server="myserver"> <op type="bind" nb="1" name="connection"/> <op type="unbind"/> </seq> Cette séquence créera 10 threads, chacun exécutant 100 opérations de bind/unbind. 4.4 Opérations disponibles Les opérations suivantes sont actuellement implémentées. - bind (2 paramètres) : authentification LDAP - identifiant (dn) de l'utilisateur - mot de passe de l'utilisateur - search (4 paramètres) : recherche LDAP - base de recherche (ex : "o=example,c=country") - étendue de la recherche (scope : "base", "one" ou "sub") - filtre de recherche ("" pour "*") - liste d'attributs séparés par des virgules ("" ou "" pour tous les attributs) - modify (3 paramètres) : modification LDAP - dn de l'entrée à modifier - attribut à modifier - nouvelle valeur ("" pour supprimer l'attribut) - add (2 paramètres) : ajout d'une entrée LDAP - branche dans laquelle sera fait l'ajout - identifiant de la personne à ajouter L'ajout sera une entrée LDAP du type : dn: uid=<identifiant>,<branche> objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: extensibleObject sn: <identifiant> cn: <identifiant> uid: <identifiant> userPassword: <identifiant> - delete (1 paramètre) : suppression LDAP - dn de l'entrée à supprimer - unbind (pas de paramètre) : déconnexion LDAP - delay (1 paramètre) : pause - temps en nanosecondes de la pause 5. Utilisation L'exécutable charge prend un seul paramètre optionnel, le nom du fichier de configuration XML. S'il n'est pas précisé, le paramètre par défaut est "charge.conf". 6. Contact Vous pouvez me contacter à l'adresse suivante en français (de préférence) ou en anglais : raphael.ouazana@linagora.com
