2009-05-08 6 views
1

Je développe un programme Java sur ma machine. Quand je veux tester, j'essaie d'abord de petits cas de tests sur ma machine mais ensuite je veux lancer ce programme avec des données réelles. Un petit test consisterait à regarder un fichier du noyau linux et un test "réel" serait de regarder un noyau entier ...Environnement de déploiement et de clonage de programme

Mais je voudrais lancer plusieurs "vrais" tests en même temps (sur différentes versions du noyau), j'ai donc 5 machines de test identiques (fonctionnant sous Linux). Comment puis-je synchroniser ces 5 machines à la fois en termes de données et de programmes (j'utilise parfois miam pour installer des programmes)?

Comment puis-je être sûr d'avoir exactement le même environnement à tout moment?

En ce moment je suis en utilisant principalement scp et mon code est sur svn ...

Répondre

2

Je suggère d'utiliser une technologie de virtualisation comme VMware pour cloner une instance en plusieurs. Cela a l'avantage de pouvoir toujours revenir au même point de départ après vos tests, tout en étant capable d'exécuter plus de scénarios que de boîtes physiques.

0

Vous pourriez faire votre outil de benchmarking chercher la nouvelle version du programme et les données de test sur http ou un autre protocole populaire. Si vous ne souhaitez pas utiliser http, vous pouvez envisager d'utiliser un système de fichiers en réseau (NFS et GlusterFS sont quelques exemples). De la façon dont je le vois, vous démarrez votre script sur un seul serveur «maître», puis il génère 5 processus bash. Chacun d'eux se connecterait à un serveur «esclave» distant et exécuterait un outil d'analyse comparative. L'outil d'analyse comparative récupère le nouveau programme et les données du serveur (peut-être 'maître') et l'exécute, en mesurant time/memory/etc et en renvoyant ces valeurs sur la sortie standard, de sorte que le ssh le renvoie au maître serveur et c'est le processus bash. Vous devez ensuite rediriger la sortie des sessions bash vers des fichiers. Testmaster.sh devra vérifier si tous les fichiers existent déjà. F.e. chaque seconde, puis lire et comparer les résultats. Cela peut sembler mauvais, mais croyez-moi, il vaudrait mieux que vous ne fassiez pas tout manuellement et que le script soit relativement facile à écrire. À propos de l'assurance Vous avez le même environnement sur toutes les boîtes ... Ne laissez personne s'approcher de vos noeuds de test et n'y faites rien.

Je ne conseillerais pas la virtualisation, car cela modifierait Vos résultats de tests d'une manière que vous ne pouvez pas prédire. La machine virtualisée ne peut pas être aussi rapide qu'une machine pure et ce n'est pas simplement "c'est 20% plus lent". Certaines choses sont beaucoup plus lentes, d'autres moins. Si cela ne vous dérange pas, utilisez la virtualisation et les instantanés, mais vous avez dit que vous testiez des choses sur plusieurs nœuds ayant chacun un noyau différent, donc j'imagine que vous le prenez très au sérieux.

Ah, encore une chose. Linux a une façon amusante de libérer de la mémoire (c'est comme «ne le libère pas jusqu'à ce que quelqu'un en ait besoin»). Certaines choses sont mises en cache. Pour être sûr, vous devrez redémarrer les machines de test après chaque session de test.

Questions connexes