Pour rappel le principe, si vous cherchez par exemple dans un outil de localisation la Place des Droits de l'Homme à Béziers, vous devrez taper un P, puis un l suivi d'un a, je ne vais pas faire toutes les lettres vous avez compris. Votre navigateur (sans DRM j'espère) associé avec le gentil javascript va donc générer un appel api par lettre à savoir dans le cas de photon un appel à GET /api/?q=P, puis GET /api/?q=Pl, puis /api/?q=Pla vous voyez tout de suite l'intérêt de dédier cette tâche de décomposition à un plugin plutôt que de coder toutes les urls dans votre scenario Tsung.

C'est ce que va faire pour vous le plugin typeahead.erl que j'ai publié hier dans le dépôt tsung-tricks.

L'usage du plugin se fait comme suit, on commence par lire une adresse dans un fichier de données (l'important est la variable pas sa provenance) que l'on affecte à la variable url, puis on définit le nombre de caractères maximum et minimum qui correspondent au réglage de votre typeahead. On n'envoit des requêtes qu'à partir de 3 caractères et on arrête au quinzième. Le plus dangeureux en terme de performance étant bien sûr de descendre dès le premier caractère. Enfin l'appel à typeahead:get_urls permettra de stocker la liste des url dans list_url variable sur laquelle on bouclera pour générer à la suite tous les appels sur l'API

  <setdynvars sourcetype="file" fileid="address" delimiter=";" order="random">
    <var name="url" />
  </setdynvars>

  <setdynvars sourcetype="eval" code="fun({Pid,DynVars})-> 15 end.">
    <var name="typeahead_max" />
  </setdynvars>

  <setdynvars sourcetype="eval" code="fun({Pid,DynVars})-> 3 end.">
    <var name="typeahead_min" />
  </setdynvars>

  <setdynvars sourcetype="erlang" callback="typeahead:get_urls">
    <var name="list_url" />
  </setdynvars>

  <foreach name="element" in="list_url">
    <request subst="true">
      <http url="/api/?q=%%_element%%" method="GET" version="1.1"></http>
    </request>
  </foreach>

Ce qui donnera dans notre cas la suite de requête suivante.

/api/?q=Pla
/api/?q=Plac
/api/?q=Place
/api/?q=Place%20
/api/?q=Place%20d
/api/?q=Place%20de
/api/?q=Place%20des
/api/?q=Place%20des%20
/api/?q=Place%20des%20D
/api/?q=Place%20des%20Dr
/api/?q=Place%20des%20Dro
/api/?q=Place%20des%20Droi
/api/?q=Place%20des%20Droit

Vous l'aurez compris par vous même c'est un plugin à utiliser avec parcimonie, tout comme le typeahead dans vos développement. Si les droits de l'homme vous préoccupent, regardez plutôt du coté de Reims, Issoudun ou d'autres ville, car point de place avec ce nom à Béziers, peut-être bientôt ?