L'auto-bench sur le site

L'auto-bench benchmarke votre serveur sans vous : selon un calendrier ou à la demande, VoxelBench envoie un robot qui rejoint le serveur comme un joueur et fait lancer le benchmark par le plugin. Cette page couvre le côté site : cibles, comptes Microsoft, calendriers, lancements, quotas, runs et erreurs.

Déroulement d'un run

  1. Un run arrive à son heure, ou vous cliquez sur Lancer maintenant : VoxelBench met un job en file d'attente.
  2. Un agent de banc prend le job, et son robot se connecte à l'adresse vérifiée de votre serveur, comme un joueur Minecraft: Java Edition.
  3. Le robot tape /vbautobot suivi d'un code à usage unique et du mode : c'est la seule commande par laquelle il lance un run. Le plugin demande à voxelbench.com si ce code est valable pour ce serveur, et reçoit ce qu'il doit lancer : mode, test ou profil, chauffe, nombre de runs.
  4. Le plugin exécute le benchmark et rend compte de sa progression au robot. Chaque run mesuré envoie son rapport à voxelbench.com, rattaché au job.
  5. Le robot se déconnecte.

Ce qui se passe sur le serveur, et ce dont le serveur a besoin, est décrit dans Auto-bench, dans la documentation du plugin.

Avant de commencer

  • Une offre qui inclut l'auto-bench : Pro, Enterprise, ou un compte hébergeur vérifié par VoxelBench. Avec l'offre Gratuit, la page Auto-bench ne propose que de changer d'offre.
  • Un serveur lié et vérifié. Seuls les serveurs vérifiés peuvent recevoir une cible, et le robot se connecte à l'adresse que vous avez vérifiée (voir Lier et vérifier un serveur). Lier de nouveau le serveur lui retire sa vérification : vérifiez-le ensuite une nouvelle fois.
  • Sur le serveur : le jar VoxelBench officiel et à jour, une sortie HTTPS vers voxelbench.com, et un passage pour le robot à travers liste blanche, mode en ligne, plugins anti-bot et proxys (voir Laisser entrer le robot). Un monde de benchmark épinglé est vivement recommandé (voir Où tournent les runs).

Un run d'auto-bench charge le serveur comme n'importe quel benchmark : les joueurs connectés le sentiront. Planifiez-le aux heures creuses.

Comptes Microsoft

La façon dont le robot se connecte dépend de votre serveur :

  • Mode hors ligne (online-mode=false) : aucun compte n'est nécessaire. Le robot se connecte sous un nom généré qui commence par vb_. Choisissez Offline (serveur cracké) comme mode d'authentification de la cible.
  • Mode en ligne : le robot doit se connecter avec un vrai compte Minecraft: Java Edition. Vous en prêtez un dans la carte Comptes Microsoft de la page Auto-bench, puis choisissez Compte Microsoft BYO comme mode d'authentification de la cible.

Pour ajouter un compte, cliquez sur Ajouter un compte Microsoft. Une fenêtre vous donne une adresse Microsoft et un code court : ouvrez l'adresse, saisissez le code et connectez-vous avec le compte Microsoft qui possède Minecraft: Java Edition. La page détecte la connexion d'elle-même. Un compte sans Java Edition est refusé.

VoxelBench ne voit jamais votre mot de passe : vous vous connectez sur la page même de Microsoft. Il conserve le jeton de connexion que renvoie Microsoft, stocké chiffré, et ne le prête à l'agent de banc que pour les runs qui utilisent ce compte. L'avertissement de la page vaut ici : Mojang peut suspendre les comptes utilisés par des clients automatisés, alors n'ajoutez qu'un compte que vous êtes prêt à perdre.

Chaque compte affiche son état : disponible, réservé (en cours d'utilisation par un run), ban ou invalide. Après un échec de connexion (auth_failed), le compte est marqué banni et n'est plus utilisé tant que vous ne l'avez pas retiré puis ajouté de nouveau. Retirer un compte supprime ses identifiants stockés ; c'est refusé tant qu'une cible l'utilise encore.

Créer une cible

Une cible (« target » à l'écran), c'est un serveur, une façon de le benchmarker et un calendrier. Sur la page Auto-bench, cliquez sur Nouveau target :

ChampQuoi y mettre
Serveur synchroniséL'un de vos serveurs vérifiés. Le robot se connecte à son adresse et à son port vérifiés
Nom affiché100 caractères au plus
PlanificationUn préréglage ; tout autre calendrier se règle ensuite en modifiant la cible (voir Planification)
Version MinecraftLaissez la détection automatique, ou imposez une version quand le robot ne connaît pas celle qu'annonce votre serveur. Indiquez la version de Minecraft, pas le numéro de build de votre logiciel serveur. La page affiche la dernière version prise en charge par l'auto-bench, et la liste complète
Mode de benchBenchmark standard, Stress limit, Test unitaire ou Profil personnalisé
Arguments de benchPour Test unitaire, obligatoire : l'identifiant du test, puis ses paramètres dans l'ordre où /bench test les prend, par exemple chunkLoading 500 ou disk 4 8 512M 3 (voir Paramètres des tests). 256 caractères au plus
Nom du profil personnaliséPour Profil personnalisé, obligatoire : le nom du fichier du profil sans .yml (lettres, chiffres, - et _, 64 caractères au plus). Le profil doit se trouver sur le serveur, dans plugins/VoxelBench/custom_benchmarks/
Passe de warmupD'abord un benchmark complet dont les résultats sont écartés, pour chauffer le serveur ; le job dure d'autant plus longtemps. Ignorée en mode Test unitaire
RunsLe nombre de runs mesurés par job, chacun envoyé comme un rapport distinct. En Benchmark standard seulement ; jusqu'à 10 en Pro, 20 en Enterprise et pour les comptes hébergeurs. Le job entier, chauffe comprise, doit se terminer en deux heures
Mode d'authentificationOffline (serveur cracké) ou Compte Microsoft BYO (voir Comptes Microsoft)
Compte MicrosoftAvec Compte Microsoft BYO : l'un de vos comptes disponibles
NotesFacultatives, 1 024 caractères au plus

Une cible ne se crée que depuis le tableau de bord : l'API et les agents ne le peuvent pas, parce qu'une cible engage un compte Microsoft que vous prêtez.

Modifier et supprimer

Modifier (sur la ligne de la cible) change le nom, le calendrier (un préréglage ou n'importe quelle expression cron), la version de Minecraft, le mode, les arguments, la chauffe et le nombre de runs. Le serveur et le mode d'authentification ne se modifient pas : créez une nouvelle cible pour les changer. L'interrupteur Activé suspend et reprend une cible. Supprimer l'efface définitivement, depuis le tableau de bord seulement.

Planification

Les préréglages sont Tous les jours à 02:00 UTC (par défaut), Toutes les 6 heures, Deux fois par jour (02h/14h UTC), Hebdomadaire (dimanche 02:00 UTC) et Mensuel (le 1er à 02:00 UTC). En modifiant une cible, vous pouvez aussi saisir n'importe quelle expression cron à cinq champs — minute, heure, jour du mois, mois, jour de la semaine — toujours en UTC, avec *, */N, des listes (2,14) et des plages (1-5).

  • Une fois par heure au plus. Un calendrier plus fréquent est refusé à l'enregistrement.
  • Vers l'heure dite, pas à la minute près. Chaque run est décalé au hasard d'au plus 20 % de l'intervalle, 30 minutes au maximum, en avance ou en retard, pour que personne ne puisse régler un serveur en vue d'une heure connue. Le planificateur cherche les runs dus toutes les 5 minutes.
  • Un run à la fois. Si le run précédent de la cible tourne encore quand le suivant est dû, le nouveau attend que la cible soit libre.
  • Dans la limite du quota. Quand votre quota quotidien de runs est épuisé, un run planifié est sauté et la cible passe à son heure suivante.

Un jeton d'API ou un agent branché qui porte la portée auto-bench:write peut changer le calendrier, le nom et les notes d'une cible, et l'activer ou la désactiver (voir API et jetons).

Lancer et annuler

Lancer maintenant, sur la ligne de la cible, met un run en file d'attente aussitôt ; un agent de banc le prend peu après.

  • Un seul run en cours par cible. Tant qu'un run attend ou tourne, un nouveau lancement est refusé (par l'API : already_running, avec l'identifiant du run en cours).
  • 60 secondes au moins entre deux lancements de la même cible.
  • Le quota de runs doit couvrir le nombre de runs de la cible.

Annuler, dans le panneau Runs en direct, demande au robot de s'arrêter : il dit au plugin d'arrêter le run, ce que le plugin fait aussitôt, puis se déconnecte. Le run affiche d'abord cancelling, puis cancelled. Si l'agent ne confirme pas dans les 5 minutes, le run est clos quand même (cancel_timeout). Un run annulé ne compte jamais comme un échec de la cible, mais il reste compté dans le quota de runs.

Sur le serveur, /bench stop arrête aussi un run d'auto-bench ; VoxelBench l'enregistre comme arrêté sur le serveur (aborted_in_game), pas comme un échec. Un run d'un job à plusieurs runs qui se termine sans son rapport, en revanche, n'est pas un arrêt : le plugin abandonne les runs restants, et VoxelBench enregistre un échec de la cible (agent_crash, voir Autres erreurs).

Quotas

ProHébergeurEnterprise
Cibles3510
Runs par 24 heures1030100
Runs par job102020
Comptes Microsoft2105

L'offre Gratuit n'inclut pas l'auto-bench.

Le quota de runs compte chaque job créé au cours des 24 dernières heures avec son nombre de runs (la chauffe ne compte pas), qu'il ait réussi, échoué ou été annulé, runs planifiés compris. C'est une fenêtre glissante : les runs redeviennent disponibles à mesure que les précédents dépassent 24 heures. La page Auto-bench indique combien de runs vous avez utilisés sur les 24 dernières heures.

Suivre les runs

La page Auto-bench montre :

  • Runs en direct, mis à jour toutes les 5 secondes : chaque run en cours, avec son numéro (Run 2/5), un badge warmup pendant la chauffe, le test en cours et le bouton Annuler ;
  • Runs récents : les runs terminés, échoués et en timeout, avec leur statut, leur cible, leur mode, leur score, leur durée et leur début, et un lien vers le rapport ou le résultat du test. Cliquez sur un run échoué pour voir ce qui s'est passé, ce qu'il faut faire, et le message brut de l'agent ;
  • dans le tableau des cibles : le Prochain run, le Dernier succès, et les Échecs consécutifs, avec la dernière erreur.

Les mêmes runs se lisent par l'API (GET /api/v1/auto-bench/jobs), chaque échec avec la même explication qu'au tableau de bord, en anglais.

États d'un run

ÉtatSignification
queuedEn attente qu'un agent de banc le prenne
claimedUn agent l'a pris et se connecte à votre serveur
connecting, onlineLe robot se connecte, puis, connecté, attend que le plugin confirme son code
benchingLe benchmark tourne
cancellingUn arrêt a été demandé ; en attente de la confirmation de l'agent
completedLes résultats sont arrivés
failedLe run s'est terminé sur une erreur (voir plus bas)
timeoutLe run a atteint son échéance sans se terminer (expired)
cancelledArrêté depuis le tableau de bord ou par l'API

Échecs et mise en pause automatique

Un run en échec (statut failed) vous envoie une notification avec le nombre d'échecs consécutifs. Après 5 échecs consécutifs, la cible est désactivée automatiquement, et vous en êtes averti. La réactiver remet le compte à zéro, tout comme un run réussi.

Certaines fins ne sont pas du fait du serveur et ne sont pas comptées : un run interrompu par une mise à jour de VoxelBench (agent_shutdown), un run arrêté sur le serveur par /bench stop (aborted_in_game), et les annulations, y compris celle d'un run de certification que la modération de VoxelBench a reprogrammé ou annulé (rescheduled, user_cancelled). Tout autre échec compte, y compris celui que cause un réglage de la cible, un identifiant de test erroné par exemple, et un job à plusieurs runs abandonné parce que l'un de ses runs a échoué.

Erreurs et que faire

Un run en échec affiche un libellé, son code, une explication et ce qu'il faut faire. Voici les codes que vous rencontrerez. Ceux qui viennent du plugin figurent aussi, avec leurs remèdes, dans Auto-bench, dans la documentation du plugin.

Avant que le plugin réponde

CodeCe qui s'est passéQue faire
connection_refusedLe robot n'a pas pu se connecter, n'est pas arrivé dans le monde en 2 minutes, ou a perdu la connexion pendant le runVérifiez que le serveur tourne et qu'il est joignable depuis Internet à son adresse et à son port vérifiés ; laissez passer le robot à travers pare-feu et filtrages géographiques
kicked_on_joinLe serveur a expulsé le robot ; le motif figure dans le message brutListe blanche, plugin anti-bot, serveur plein, ou serveur en mode en ligne avec un robot en mode hors ligne
server_startingLe serveur dormait et démarrait à l'arrivée du robot ; l'agent a attendu et réessayé, mais le démarrage n'a pas abouti à tempsRelancez une fois le serveur entièrement démarré, ou gardez-le éveillé à l'heure prévue
auth_failedLe robot n'a pas pu se connecter avec le compte MicrosoftVérifiez que le compte possède toujours Java Edition et qu'il n'est pas suspendu, puis retirez-le et ajoutez-le de nouveau : d'ici là, il reste marqué banni
byo_lease_failedAvant de se connecter, l'agent n'a pas pu obtenir la connexion du compte Microsoft de la cible : le compte est marqué invalide ou banni, Microsoft a refusé de renouveler sa connexion, il ne possède plus Java Edition, ou ses identifiants enregistrés n'ont pas pu être lus. Le message brut donne la réponse de voxelbench.com. Le robot ne s'est jamais connectéSi le message brut cite account_unusable, auth_chain_failed ou no_java_edition, connectez-vous au compte, vérifiez qu'il possède toujours Java Edition, puis retirez-le et ajoutez-le de nouveau. Toute autre réponse vient de VoxelBench : signalez-la
version_mismatchLe robot ne connaît pas la version de Minecraft qu'annonce votre serveurRéglez Version Minecraft sur la cible avec une version de la liste prise en charge
no_plugin_responseLe robot est arrivé dans le monde et a tapé /vbautobot, mais aucune réponse de VoxelBench ne lui est parvenue en 10 minutes. VoxelBench répond à cette commande immédiatement, avant toute chose : ce silence signifie donc que la commande n'est jamais arrivée jusqu'à VoxelBench, ou que sa réponse n'est jamais arrivée jusqu'au robotVérifiez que VoxelBench est installé et activé sur le serveur où le robot arrive réellement (pas un lobby derrière un proxy), qu'aucun plugin ne bloque ni ne réécrit /vbautobot (filtres de commandes, plugins de connexion ou de captcha), et qu'aucun plugin de chat ne cache au robot les messages de VoxelBench. Le robot n'a besoin d'aucune permission pour lancer /vbautobot

Sur le serveur

CodeCe qui s'est passéQue faire
bench_timeoutLe plugin a démarré, puis n'a plus rien dit pendant 10 minutes (il signale le début et la fin de chaque test), ou le job a atteint sa durée maximale de deux heures, chauffe et runs comprisCherchez une erreur dans la console du serveur à ce moment-là, et assurez-vous qu'aucun plugin ne cache au robot les messages de VoxelBench. Si le job est simplement trop long, réduisez son nombre de runs ou retirez la chauffe
plugin_test_already_runningUn benchmark, un stress limit ou un test tournait déjà à l'arrivée du robotÉvitez de lancer vos propres benchmarks à l'heure prévue ; le run suivant suit le calendrier
plugin_benchmark_world_unavailableUn job Test unitaire sur un test qui écrit dans le monde, sans monde épinglé ni monde temporaire possible (toujours le cas sous Folia sans monde épinglé). Rien n'a tournéÉpinglez un monde chargé au démarrage avec /bench world set <monde> ; ailleurs que sous Folia, vous pouvez aussi autoriser benchmark.auto-temp-world dans la configuration du plugin
plugin_missing_test_argsUn job Test unitaire est arrivé au plugin sans arguments : il ne savait pas quel test lancer. Rien n'a tourné. Le site refuse d'enregistrer une cible de test sans arguments, si bien que c'est rareModifiez la cible et indiquez dans Arguments de bench l'identifiant du test, suivi de ses paramètres dans l'ordre où /bench test les prend, par exemple chunkLoading 500
plugin_unknown_testLe test nommé en tête des Arguments de bench ne peut pas démarrer sur ce serveur : aucun test ne porte cet identifiant (unknown_test), ou une extension l'enregistre mais n'a pas su le construire (test_build_failed). Rien n'a tournéLancez /bench test list sur le serveur et placez l'un de ses identifiants en tête des Arguments de bench. Un test fourni par une extension exige que cette extension soit installée et activée ; pour test_build_failed, mettez l'extension à jour
plugin_invalid_test_argsLe plugin connaît le test, mais a refusé l'un des paramètres qui suivent son identifiant dans les Arguments de bench (invalid_test_args) : hors bornes ou non numérique, par exemple. Rien n'a tournéCorrigez les paramètres. Pour lire le motif du plugin lui-même, tapez la même commande en jeu : /bench test suivi des Arguments de bench de la cible
plugin_unknown_profileUn job Profil personnalisé n'a pas pu démarrer : aucun nom de profil n'a été transmis (missing_profile_name), aucun profil de benchmark de ce nom n'est chargé sur le serveur (unknown_profile ; un profil de stress ne compte pas, et le message brut liste les noms chargés), ou l'un des tests du profil n'est plus enregistré (test_no_longer_known). Rien n'a tournéIndiquez le nom du fichier du profil sans .yml dans Nom du profil personnalisé (sa clé name: n'est qu'un nom d'affichage). /bench custom list montre les profils chargés, et /bench custom reload prend en compte un fichier ajouté depuis le démarrage. Pour test_no_longer_known, réinstallez l'extension qui fournit le test, ou retirez le test du profil
plugin_unknown_modeLa version installée de VoxelBench ne connaît pas ce modeMettez VoxelBench à jour
plugin_exceptionVoxelBench a rencontré une erreur en préparant le runCherchez l'erreur dans la console du serveur et signalez-la
plugin_protocol_errorVoxelBench et voxelbench.com ne se sont pas compris : une réponse que VoxelBench n'a pas su lire, une requête que voxelbench.com a refusée comme mal formée, ou voxelbench.com qui a répondu par une erreur serveur à chaque essai. Le message brut donne le code. Rien n'a tournéUne erreur serveur (http_5xx, internal_error) vient de VoxelBench : relancez plus tard, et signalez-la si elle persiste. Sinon, mettez VoxelBench à jour avec la dernière version, puis relancez
plugin_network_errorVoxelBench n'a pas pu joindre voxelbench.com pour valider le run, même après plusieurs essais. Rien n'a tournéLancez /bench ping et autorisez la sortie HTTPS vers voxelbench.com
plugin_rate_limitedvoxelbench.com a refusé la demande de challenge de VoxelBench : il n'en délivre pas plus de 150 par heure à une même adresse IP, et chaque requête signée du plugin (valider un run, envoyer un rapport ou un test unitaire) commence par en demander un. Les serveurs qui sortent par la même adresse partagent ce budget. Rien n'a tournéRelancez plus tard : le budget se libère dans l'heure. Si cela se répète, cherchez ce qui envoie d'autres requêtes à VoxelBench depuis cette adresse, comme d'autres serveurs sur la même machine ou des benchmarks manuels répétés (voir Limites de débit)
unauthorized_pluginvoxelbench.com ne reconnaît pas ce jar VoxelBenchInstallez la dernière version officielle, sans modification, et redémarrez le serveur

Codes et identité du serveur

CodeCe qui s'est passéQue faire
invalid_nonce, nonce_expired, nonce_consumed, target_missingLe code à usage unique du run était inconnu, postérieur à l'échéance du run ou déjà utilisé, ou la cible a été supprimée entre-tempsRien à corriger sur le serveur : lancez un nouveau run. Si invalid_nonce revient sans cesse, vérifiez qu'aucun plugin ne réécrit les commandes du robot
server_mismatchLe serveur qu'a atteint le robot n'est pas celui pour lequel la cible a été crééeAssurez-vous que le robot arrive sur le serveur que vous avez vérifié, y compris derrière un proxy. Si l'identité du serveur a changé (une réinstallation sans plugins/VoxelBench/identity.yml), liez-le et vérifiez-le de nouveau, puis créez une nouvelle cible

Runs arrêtés volontairement

CodeCe qui s'est passé
cancelled_by_userAnnulé depuis le tableau de bord ou par l'API
cancel_timeoutAnnulé, mais l'agent n'a pas confirmé dans les 5 minutes ; le run a été clos quand même
aborted_in_gameQuelqu'un a lancé /bench stop sur le serveur, ou la console l'a fait
agent_shutdownL'agent de banc a redémarré pendant le run, lors d'une mise à jour côté VoxelBench : relancez-le
rescheduledUn run de certification déplacé à un autre moment par la modération de VoxelBench ; le run qui le remplace apparaît à sa nouvelle heure
user_cancelledUn run de certification annulé par la modération de VoxelBench

Aucun de ces cas ne compte comme un échec de la cible.

Autres erreurs

CodeCe qui s'est passéQue faire
expiredLe run a atteint son échéance sans se terminer : aucun agent ne l'a pris à temps, ou l'agent qui le menait a cessé de donner des nouvelles (plantage, redémarrage, réseau perdu) avant la fin. Rien n'a été mesuréRelancez-le ; signalez-le si cela arrive à des runs déjà démarrés
agent_crashL'agent de banc a rencontré une erreur inattendue, ou un run s'est terminé sans son rapport : le plugin a fini le benchmark, mais son rapport a été refusé ou n'a pas pu partir. Le message brut commence alors par report-fail pour un run unique, ou par run-fail quand un run d'un job à plusieurs runs a échoué (le plugin abandonne alors les runs restants), suivi du motif. Pour un job Test unitaire, le serveur doit être liéPour un report-fail ou un run-fail, mettez VoxelBench à jour avec la dernière version et vérifiez que le serveur joint voxelbench.com (/bench ping). Sinon, lisez le message brut et signalez-le si cela se répète
unknownUne erreur que l'agent ne classe pasLisez le message brut, et cherchez le code du plugin dans Auto-bench ; signalez-le si le message ne dit rien d'utile