je ne sais pas trop où poster ca

je teste actuellement l'intégration drupal7 <-> Apache Solr.

je ne suis pas très fan de tomcat, mais bon force est de constater que Solr marche vraiment très bien. Tout c'est passé les doigts dans le nez sans trop d'effort pour installer/parametrer pour l'instant.

Si le truc est validé, on va basculer une appli Saas en prod vers ce mix drupal <-> solr.
Et pour valider, j'ai justement besoin d'un script de validation. je voudrais scripter environ 50 recherches dont je connais le résultat.

Pour scripter ca, je pourrais monter un script selenium mais je n'ai pas encore trouvé comment faire apparaitre dans drupal le nombre total de réponses. Alors pour me simplifier la vie, je préfèrerais y aller avec un script quick&dirty qui interroge solr directement, parser du xml en ruby devrait se faire assez rapidement.

Par contre, je rencontre un truc idiot

* ca marche dans l'applicatif (qd je recherche 'toto' dans drupal, j'ai bien les deux bons résultats qui apparaissent)
* par contre qd je demande 'toto' à solr directement, j'obtiens zero resultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
root:~# curl http://localhost:8080/solr/select/?q=toto
<?xml version="1.0" encoding="UTF-8"?>
<response>
<result name="response" numFound="0" start="0"/><lst name="highlighting"/>
</response>
root:~#
==> aucun résultat

je dois mal formuler ma requete solr (le nom de la zone/core/base solr où effectuer la recherche serait-il manquant?)

je pensais espionner la forme des requetes passées par drupal vers solr pour m'en inspirer pour ce script. d'après le code du module solr de drupal il s'agit bien de type de requete/url comme ci dessus. donc je voulais les regarder avec tcpdump :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
root:~# tcpdump -i lo -s 9999 -X
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 9999 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
root:~#
==> rien du tout ne s'affiche lorsque je fais les recherches via l'interface web. par contre, lorsque je fais une recherche à la ligne de commande, là tcpdump m'affiche bien les paquets comment attendu.
c'est bizzare parce que drupal est configuré pour accéder solr va http://localhost:8080/solr

j'ai tenté de tout écouter sur eth0 sauf port 22 (ssh) et 80 (web). je n'ai rien trouvé de parlant sauf peut-etre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
        0x0000:  4500 0217 0000 4000 4011 0362 b220 6738  E.....@.@..b..g8
        0x0010:  b220 69fb 8c06 182f 0203 3789 7274 6d20  ..i..../..7.rtm.
        0x0020:  6d49 4e46 4f5f 4d45 4d5f 746f 705f 6d65  mINFO_MEM_top_me
        0x0030:  6d5f 3031 5f6e 616d 657c 2f75 7372 2f6c  m_01_name|/usr/l
        0x0040:  6962 2f6a 766d 2f6a 6176 612d 362d 6f70  ib/jvm/java-6-op
        0x0050:  656e 6a64 6b2f 6269 6e2f 6a61 7661 202d  enjdk/bin/java.-
        0x0060:  446a 6176 612e 7574 696c 2e6c 6f67 6769  Djava.util.loggi
        0x0070:  6e67 2e63 6f6e 6669 672e 6669 6c65 3d2f  ng.config.file=/
        0x0080:  7661 722f 6c69 622f 746f 6d63 6174 362f  var/lib/tomcat6/
        0x0090:  636f 6e66 2f6c 6f67 6769 6e67 2e70 726f  conf/logging.pro
        0x00a0:  7065 7274 6965 7320 2d44 6a61 7661 2e61  perties.-Djava.a
        0x00b0:  7774 2e68 6561 646c 6573 733d 7472 7565  wt.headless=true
        0x00c0:  202d 586d 7831 3238 4d20 2d58 583a 2b55  .-Xmx128M.-XX:+U
        0x00d0:  7365 436f 6e63 4d61 726b 5377 6565 7047  seConcMarkSweepG
        0x00e0:  4320 2d44 6a61 7661 2e75 7469 6c2e 6c6f  C.-Djava.util.lo
        0x00f0:  6767 696e 672e 6d61 6e61 6765 723d 6f72  gging.manager=or
        0x0100:  672e 6170 6163 6865 2e6a 756c 692e 436c  g.apache.juli.Cl
        0x0110:  6173 734c 6f61 6465 724c 6f67 4d61 6e61  assLoaderLogMana
        0x0120:  6765 7220 2d44 6a61 7661 2e65 6e64 6f72  ger.-Djava.endor
        0x0130:  7365 642e 6469 7273 3d2f 7573 722f 7368  sed.dirs=/usr/sh
        0x0140:  6172 652f 746f 6d63 6174 362f 656e 646f  are/tomcat6/endo
        0x0150:  7273 6564 202d 636c 6173 7370 6174 6820  rsed.-classpath.
        0x0160:  2f75 7372 2f73 6861 7265 2f74 6f6d 6361  /usr/share/tomca
        0x0170:  7436 2f62 696e 2f62 6f6f 7473 7472 6170  t6/bin/bootstrap
        0x0180:  2e6a 6172 202d 4463 6174 616c 696e 612e  .jar.-Dcatalina.
        0x0190:  6261 7365 3d2f 7661 722f 6c69 622f 746f  base=/var/lib/to
        0x01a0:  6d63 6174 3620 2d44 6361 7461 6c69 6e61  mcat6.-Dcatalina
        0x01b0:  2e68 6f6d 653d 2f75 7372 2f73 6861 7265  .home=/usr/share
        0x01c0:  2f74 6f6d 6361 7436 202d 446a 6176 612e  /tomcat6.-Djava.
        0x01d0:  696f 2e74 6d70 6469 723d 2f74 6d70 2f74  io.tmpdir=/tmp/t
        0x01e0:  6f6d 6361 7436 2d74 6d70 206f 7267 2e61  omcat6-tmp.org.a
        0x01f0:  7061 6368 652e 6361 7461 6c69 6e61 2e73  pache.catalina.s
        0x0200:  7461 7274 7570 2e42 6f6f 7473 7472 6170  tartup.Bootstrap
        0x0210:  2073 7461 7274 0a                        .start.

à noter aussi

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
root:~# lsof | grep -i tomcat
[...]
java        931  tomcat6   82u     IPv6       5046      0t0        TCP localhost.localdomain:8005 (LISTEN)
[...]
java        931  tomcat6   31u     IPv6       4894      0t0        TCP *:http-alt (LISTEN)
(pas vu qqch qui ressemble à une sorte de socket fichier (j'ai peut-etre mal regardé... la liste est très longue)
j'ai regardé la FAQ DVP sur tomcat mais j'ai rien vu d'utile pour moi.

donc question pour les experts réseau et les experts de tomcat ici : comment je fais pour espionner les communications entre un client arbitraire d'une appli tomcat et le server tomcat, les deux sur localhost, sachant que tcpdump ne semble rien afficher ?

une idée ?