Ecrire une TestSuite avec Eclipse et JUnit 4

December 7th, 2006

La dernière fois que j'ai utilisé JUnit pour faire des tests unitaires, l'intégration avec Eclipse était plutôt bien faite et surtout, le monde n'était pas encore passé à Java 5. Je me suis remis dernièrement aux tests unitaires et j'ai découvert la puissance de Junit 4 et des annotations.

Evidemment tout cela ne va pas sans heurt. Il y a 2 ans j'aurais écrit une TestSuite comme celles générées par l'actuel plugin JUnit d'Eclipse, par exemple:

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {

public static Test suite() {
TestSuite suite = new TestSuite(
"Test for default package");

suite.addTestSuite(Test1.class);
suite.addTestSuite(Test2.class);
suite.addTestSuite(Test3.class);

return suite;
}
}


Le problème, c'est que cette TestSuite ne tourne plus sous JUnit 4 ! En effet, l'architecture de JUnit a été complètement repensée et nettoyée.

Là où intervient toute la puissance des annotations, c'est que maintenant ma TestSuite ressemble à ça:


import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses(value={
Test1.class,
Test2.class,
Test3.class,
})
public class AllTests{
}


Code propre, clair, rapide à écrire - et même simple à générer ! Merci les gens :)

Bind 9 et les entrées PTR

November 7th, 2006

Il y a maintenant un peu plus d'un an que j'ai configuré le DNS interne de mon réseau local - du moins que je pensais l'avoir configuré.

Pour situer, ce serveur gère la zone local.asteromith.net (soit un sous-domaine de mon domaine public), invisible de l'extérieur pour des raisons évidentes (adresses IP non routables, tout ça...). Je lui avais adjoint une zone de résolution inverse avec les entrées PTR pour le réseau interne.

Quelle ne fut pas ma surprise quand, en lisant mes logs, je trouve la ligne:

Nov 3 09:16:36 asteromith sshd
  • : reverse mapping checking getaddrinfo for neskaya.42.168.192.in-addr.arpa failed - POSSIBLE BREAKIN ATTEMPT!


  • Que lis-je ? Que vois-je ? Résolution inverse manquée ? Il a fallu googler un peu (et lire le manuel de bind) pour comprendre: dans le fichier de définition de la zone inverse, il faut mettre des adresses absolues pour les entrées PTR.

    Exemple:

    Voici l'entrée "A" pour ladite machine neskaya (dans le fichier de définition de la zone local.asteromith.net):

    neskaya IN A 192.168.42.3


    L'entrée PTR dans la configuration foireuse était (pour la zone 42.168.192.in-addr.arpa):

    3 IN PTR neskaya


    Voilà où le bât blesse: la valeur neskaya se voit "enrichie" du suffixe 42.168.192.in-addr.arpa ! L'entrée correcte est donc:

    3 IN PTR neskaya.local.asteromith.net.

    Migration dans les règles [2]

    May 30th, 2006

    J'ai trouvé au hasard de mes pérégrinations sur le WWW un script qui permet la migration d'un blog sous bBlog vers un blog WordPress. Je compte l'essayer ce soir, ainsi qu'un transcodage de la base de données - parce que les caractères ISO bizarres c'est pas joli :)

    Apparemment c'est assez facile, il "suffit" de faire un dump de la base, un petit coup de iconv, puis réinsertion. J'espère juste que je ne vais pas tout casser dans l'opération...

    [EDIT]
    Nickel ! Le blog est passé tranquillement en UTF-8, je corrige à la main ce qui l'était déjà et qui est donc doublement codé ;)

    Migration dans les règles

    May 21st, 2006

    On ne peut pas dire que la migration de Apache httpd 1.3 à Apache httpd 2.0 soit une partie de plaisir sous Debian sarge (je m'excuse auprès du public non-geek qui lit ce billet, mais il faut que ça sorte).

    Dans l'ordre:
    - Installation de
    apache2

    - Installation de
    libapache2-mod-php4

    - Suppression de
    apache libapache-mod-php4

    - Reconfiguration (
    dpkg-reconfigure
    ) de
    php4 php4-mysql phpmyadmin


    Après ça (si je me souviens bien) ça marchait à peu près, à ceci près que le cache du navigateur peut poser des petits problèmes avec le
    content-type: application/x-httpd-php
    ...

    Maintenant ça marche, sous vos yeux ébahis asteromith.net vient de muer en apache2 !

    La saison de la phêche est ouverte

    March 21st, 2006

    Non ce n'est pas une faute d'orthographe mais une tentative malheureuse de traduction du néologisme "phishing", qui désigne chez nos amis anglophones les arnaques par usurpation d'identité.

    La mode du phishing bancaire, qui jusqu'ici touchait surtout des banques étrangères, semble s'être répandue pour toucher les banques françaises.

    Donc si vous recevez des emails dont l'entête est tournée comme les exemples ci-dessous, NE LES OUVREZ PAS et surtout NE FAITES PAS CE QUI EST DEMANDE DEDANS !

    Les exemples:
    - BNP PARIBAS [UN IMPORTANT MESSAGE]
    - CREDIT LYONNAIS [UNE IMPORTANTE NOUVELLE]

    Je le repète, ce ne sont en aucun cas des messages des banques citées; les liens contenus dans les e-mails ne servent qu'à récupérer vos identifiants afin d'effectuer des opérations malhonnêtes sur vos comptes. Vous êtes prévenus !

    Kick time

    February 20th, 2006

    http://www.apple.com/quicktime/download/standalone.html

    Voilà la page - cachée bien évidemment - de téléchargement du lecteur Quicktime ! Vous me direz que non, on peut la télécharger depuis une page bien en évidence chez Apple. Sauf si on ne veut pas de la sangsue qui y est accolée: je parle bien sûr de iTunes.

    Donc faites passer le lien et ne vous privez pas si vous aussi vous n'aimez pas les téléchargements forcés :)

    Un problème d'IP/domaine ?

    February 14th, 2006

    http://www.dnsstuff.com/

    Tout est sur ce site: résolution de nom, résolution inverse, géolocalisation, interrogation de base WHOIS et j'en passe. La parfaite boite à outils pour le gestionnaire de réseau qui soit n'a pas accès à une console, soit n'a pas trop envie de chercher dans le manuel de "host" quel est le p$%£in de switch à utiliser pour faire une résolution inverse...

    Chronologie d'un déménagement de ligne

    December 3rd, 2005

    Ou: vérifions si ma chance avec France Telecom et Free se concrétise.

    Chronologiquement:
    26/10: Demande conjointe de déménagement de la ligne FT (résiliation et ouverture) et de la ligne Free (résiliation avec code pour la réouverture)
    28/10: date prévue pour l'ouverture de ligne FT... mais rien
    1/11: ligne Free HS comme prévu
    2/11: ligne FT HS comme prévu
    4/11: suite à appels + message en ligne, ligne FT fonctionnelle
    7/11: envoi du formulaire en ligne de réabonnement suite à déménagement Free - sans renvoi de dossier
    7/11 au soir: mail de confirmation de Free et mot de passe pour le suivi, étape 2 active (inscription en cours de validation par FT)
    8/11 midi: étape 3 active (inscription validée par FT)
    23/11 soir: appel à la hotline pour essayer de faire avancer les choses (parce que 2 semaines pour brancher un cable...), heureusement que je ne suis pas encore facturé; réponse: "Patience...", évidemment ils n'y peuvent rien
    25/11: message envoyé à l'agence France Telecom du coin - j'aime bien taper sur les responsables
    28/11 à midi: réponse de FT: "adressez vous à votre FAI", haha. Relance énervée de ma part, le délai maximal de 3 semaines n'est pas loin.
    28/11 soir: Freebox synchronisée quand je suis rentré, yay \o/ ; les consoles d'administration de Free ne sont pas encore opérationnelles mais au moins ça marche et j'ai le Net.
    29/11: après reboot de la Freebox, les modes routeurs et WiFi sont activés (avec les paramètres de Toulouse); merci le TFTP avec MAC-auth :) . Par contre toujours pas de console d'admin ni de téléphone.
    3/12: toutes les consoles sont activées, j'ai même récupéré le téléphone. Tout simplement génial. Life begins again.

    [EDIT]
    Soit dit en passant, le NRA STR90 (STROLTZ) est un des plus mauvais dégroupeurs avec une moyenne de 18 jours entre le AROK et le CROK... A comparer aux 4 jours de GAR31 (GARONNE), celui sur lequel j'étais à Toulouse. Comme quoi, les agents France Telecom sont peut être plus fénéants ici :)

    [EDIT2]
    Maintenant que je revois ça, la ligne FT a déjà mis 2 semaines à arriver. J'imagine donc qu'ils ne vont pas plus se bouger pour raccorder ma ligne sur un DSLAM concurrent. Et en attendant, la connexion de secours me fait découvrir les joies de l'Internet sans images - ça va plus vite, mais certains sites sont VRAIMENT mal foutus.

    [EDIT3]
    Un grand merci aux ingés sys/rézal de Free, c'est décidément super bien fait. Il faut savoir que les métiers d'ingénieur système/réseau sont assez ingrats puisque les gens qu'on entend en général sont ceux qui se plaignent. Pour moi ça marche, j'en suis hautement satisfait et je veux le faire savoir.

    Ah et pendant que j'y pense, un zéro pointé à France Telecom.

    To be continued

    Debian sans Debian - debootstrap

    September 19th, 2005

    On ne présente plus la distribution communautaire Debian GNU/Linux; les intégristes vont certainement m'en vouloir, mais on ne peut nier la publicité apportée par la toute jeune Ubuntu à la vénérable distribution.

    Cet article s'adresse principalement à deux audiences. D'une part les administrateurs d'une machine sous une des distributions Debian souhaitant disposer de paquets d'une autre sans mettre la pagaille dans leurs dépendances - par exemple: installer des paquets de unstable sur un serveur en stable. D'autre part, les administrateurs d'une distribution non-Debian désireux de disposer de la "stabilité" d'une Debian stable et de la puissance de Apt comme gestionnaire de paquets mais qui n'auraient pas la possibilité ou la volonté d'installer une Debian complète - l'exemple type, un serveur dédié sous Fedora (non vécu mais on me l'a rapporté).

    Les outils magiques dans cette opération sont chroot - que l'on ne présente plus non plus - et debootstrap. Ce dernier est disponible sous la forme d'un paquet Debian et sous la forme d'un source facilement compilable. Les quelques dépendances - wget et les "binutils" - font en général partie de toute installation standard d'une machine sous GNU. On va se placer dans le cas d'un utilisateur de Debian stable qui veut installer des paquets de unstable (sid).

    Les opérations à effectuer sont, dans l'ordre:

    1. Création du répertoire de "chrootage":
    serveur:/# mkdir /sid-root


    2. Appel à debootstrap avec les paramètres idoines:
    serveur:/# debootstrap sid /sid-root \
    ftp://ftp.fr.debian.org/debian


    On peut remplacer le nom du miroir à utiliser, par exemple avec un miroir local ou un serveur plus proche.

    2.bis (Optionnel) Copie des fichiers de configuration et montage du /proc (recommandé)

    serveur:/# cp /etc/hosts /sid-root/etc/hosts
    serveur:/usr/local# echo \
    "proc-sid /usr/local/sid-root/proc proc none 0 0" >> \
    /etc/fstab
    serveur:/usr/local# mount proc-sid \
    /usr/local/sid-root/proc -t proc


    3. Chrootage

    serveur:/usr/local# chroot /usr/local/sid-root \
    /bin/bash


    A partir de ce moment, tout se passe comme dans une installation standard de Debian sid. Les premières étapes, pas à pas, sont (une fois chrooté):

    /# apt-setup
    [pour modifier le /etc/apt/sources.list]
    /# vi /etc/apt/sources.list
    [on met le source sur "unstable"]
    /# dselect
    [ou aptitude, ou apt-get install paquet par paquet]


    Enfin, si l'on veut mettre en place une console virtuelle pour se connecter à la unstable et éviter d'avoir à se chrooter "à la main", on peut rajouter (dans le système hote):

    serveur:/# echo \
    "8:23:respawn:/usr/sbin/chroot /usr/local/sid-root " \
    "/sbin/getty 38400 tty8" >> /etc/inittab
    serveur:/usr/local# init q


    On peut aussi faire tourner un sshd dans le chroot sur un port non standard ou encore utiliser un webmin sur un port non standard, c'est selon les gouts et les habitudes de chacun.

    Références:
    [1] Page man de debootstrap ( http://da2i.univ-lille1.fr/cgi-bin/man/man2html?debootstrap+8 )