J'ai pris un peu de temps de réflexion/design pour voir ou aller avec ce projet. Si on veut le finir complètement et en faire un truc exploitable et exploité il faut changer certaines choses. Surtout si on ne veut plus dépendre de programmeurs 'perl' pour changer des trucs... (= que moi pour le moment
).
Donc on va changer la structure du script:
- au lieu d'avoir les tests en dur dans le script, on va les mettre dans un
fichier de tests et neutrality-test.pl téléchargera le fichier de tests. Bonus: ce fichier se téléchargeant suivant la connectivité du client, tu peux en faire 2 versions , une avec IPv6 et l'autre sans. On n'a plus besoin de coder une detection d'IPv6.
- je vais aussi changer le format des tests en interne de façon a ne plus dépendre en dur de ton serveur et de sa structure ("../fichiers/tailleMo/tailleMo.zip"): tout sera dans le fichier de tests.
Le script neutrality-test.pl ne dépendra plus d'aucun domaine ou serveur.
Les changements que ca va produire en terme de fonctionnement:
- au démarrage, neutrality-test.pl devra avoir en paramètre un url de configuration, par exemple:
neutrality-test.pl [options] https://testdebit.info/neutralite/tests.txt
Ca va télécharger le fichier tests.txt et lancer les tests qu'il y a dedans (chaque ligne de test a son propre url complet)
Pour l'utilisateur:
- l'utilisateur Windows télécharge le 'launcher .exe' et le lance: le .exe va télécharger neutrality-test.pl et le lancer avec un url pré-choisi par toi (
https://testdebit.info/neutralite/tests.txt par exemple).
- l'utilisateur Mac ou Linux lance directement neutrality-test.pl et l'url de son choix: ("
curl https://testdebit.info/neutralite/neutrality-test.pl | perl -
https://testdebit.info/neutralite/tests.txt" par exemple).
La syntax pour le fichier des tests est très simple, chaque ligne commence par un mot clé:
PUT <size> <curl params> | effectue un upload de taille <size>, <curl params> est passé directement a curl |
GET <curl params> | effectue un download, <curl params> est passé directement a curl |
TIME <value> | change le timeout a <value>, 0 = pas de timeout, timeout par défaut = 0 |
PRINT <...> | affiche <...> a l'écran (sauf si l'option -csv est présente) |
#<...> | commentaire, ignore le reste de la ligne |
les tests actuels dans ce format:
PRINT Hello blabla
TIME 8
# tests de download en IPv4
GET -4 http://3.testdebit.info:80/fichiers/5000Mo/5000Mo.zip
GET -4 http://3.testdebit.info:80/fichiers/5000Mo/5000Mo.jpg
GET -4 http://3.testdebit.info:80/fichiers/5000Mo/5000Mo.mp4
GET -4 http://3.testdebit.info:80/fichiers/5000Mo/5000Mo.pdf
GET -4 --insecure https://3.testdebit.info:443/fichiers/5000Mo/5000Mo.zip
GET -4 --insecure https://3.testdebit.info:443/fichiers/5000Mo/5000Mo.jpg
GET -4 http://3.testdebit.info:554/fichiers/5000Mo/5000Mo.zip
GET -4 http://3.testdebit.info:554/fichiers/5000Mo/5000Mo.jpg
GET -4 http://3.testdebit.info:554/fichiers/5000Mo/5000Mo.mp4
GET -4 --insecure https://3.testdebit.info:993/fichiers/5000Mo/5000Mo.zip
GET -4 --insecure https://3.testdebit.info:993/fichiers/5000Mo/5000Mo.jpg
GET -4 --insecure https://3.testdebit.info:1194/fichiers/5000Mo/5000Mo.zip
GET -4 --insecure https://3.testdebit.info:1194/fichiers/5000Mo/5000Mo.jpg
GET -4 http://3.testdebit.info:6881/fichiers/5000Mo/5000Mo.zip
GET -4 http://3.testdebit.info:6881/fichiers/5000Mo/5000Mo.jpg
GET -4 http://3.testdebit.info:8080/fichiers/5000Mo/5000Mo.zip
GET -4 http://3.testdebit.info:8080/fichiers/5000Mo/5000Mo.jpg
GET -4 http://3.testdebit.info:8080/fichiers/5000Mo/5000Mo.mp4
# tests de download en IPv6
GET -6 http://3.testdebit.info:80/fichiers/5000Mo/5000Mo.zip
GET -6 http://3.testdebit.info:80/fichiers/5000Mo/5000Mo.jpg
GET -6 http://3.testdebit.info:80/fichiers/5000Mo/5000Mo.mp4
GET -6 --insecure https://3.testdebit.info:443/fichiers/5000Mo/5000Mo.zip
GET -6 http://3.testdebit.info:554/fichiers/5000Mo/5000Mo.zip
GET -6 --insecure https://3.testdebit.info:1194/fichiers/5000Mo/5000Mo.zip
GET -6 http://3.testdebit.info:6881/fichiers/5000Mo/5000Mo.zip
GET -6 http://3.testdebit.info:8080/fichiers/5000Mo/5000Mo.zip
# tests d'upload en IPv4
PUT 5000Mo -4 http://3.testdebit.info:80
#PUT 5000Mo -4 http://3.testdebit.info:80
#PUT 5000Mo -4 http://3.testdebit.info:80
PUT 5000Mo -4 --insecure https://3.testdebit.info:443
PUT 5000Mo -4 http://3.testdebit.info:554
PUT 5000Mo -4 --insecure https://3.testdebit.info:1194
PUT 5000Mo -4 http://3.testdebit.info:6881
PUT 5000Mo -4 http://3.testdebit.info:8080
# tests d'upload en IPv6
PUT 5000Mo -6 http://3.testdebit.info:80
#PUT 5000Mo -6 http://3.testdebit.info:80
#PUT 5000Mo -6 http://3.testdebit.info:80
PUT 5000Mo -6 --insecure https://3.testdebit.info:443
PUT 5000Mo -6 http://3.testdebit.info:554
PUT 5000Mo -6 --insecure https://3.testdebit.info:1194
PUT 5000Mo -6 http://3.testdebit.info:6881
PUT 5000Mo -6 http://3.testdebit.info:8080
Je viens de remarquer que depuis le changement d'un POST en PUT et la suppression des fichiers temporaires on a perdu la notion de 'type de fichier' envoyé pendant un upload car il n'y a plus de fichier... donc certains tests deviennent redondants. Je les ai mis en commentaire pour le moment. Toutefois, curl a une option -H , il se peut qu'on puisse l'utiliser pour mettre un "content-type" lors d'un upload. Bonus du nouveau design: il n'y aura rien a changer en Perl, tout ce fera dans le fichier de tests:
PUT 5000Mo -4 -H "Content-Type: application/zip" http://3.testdebit.info:80
PUT 5000Mo -4 -H "Content-Type: image/jpeg" http://3.testdebit.info:80
PUT 5000Mo -4 -H "Content-Type: video/mp4" http://3.testdebit.info:80
Ca sera a tester quand le nouveau script sera prêt (ou maintenant a la main avec curl si quelqu'un a le temps).
L'avantage pour moi est que le code de neutrality-test.pl va être très simplifié et plus propre. C'est aussi ma faute d'avoir voulu juste refaire ton script .bat en Perl plutôt que réfléchir un peu avant a un design plus évolutif.
Je vais faire ca dans une autre branche git donc on aura les 2 versions pendant un temps.