Partage de technologie

Difficultés techniques : réfléchir à la manière dont SpringBoot intègre le développement de Jmeter

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Difficultés techniques : réfléchir à la manière dont SpringBoot intègre le développement de Jmeter

Aperçu des exigences

Créez une plate-forme de tests de résistance hautes performances, qui doit appeler JMeter via le framework Spring Boot pour effectuer des tests de résistance automatisés.

Solution 1 : utilisez la classe Runtime pour appeler des processus externes

Aperçu technique

La classe Runtime de Java fournit une interface pour interagir avec le système d'exploitation, permettant aux applications Java d'exécuter des commandes système, de démarrer des applications ou des scripts externes et d'interagir avec eux. Voici l'application de la classe Runtime dans ce scénario :

  1. Démarrer et gérer des processus: utilisez la méthode exec() de la classe Runtime pour démarrer l'outil de ligne de commande JMeter pour les tests de contrainte.
  2. Accéder aux ressources du système: Surveillez l'utilisation de la mémoire de la machine virtuelle Java via les méthodes de la classe Runtime, telles que totalMemory() et freeMemory().
  3. effectuer une action spécifique: Utilisez la méthode exit() fournie par la classe Runtime pour terminer l'application en toute sécurité, et utilisez nanoTime() et currentTimeMillis() pour obtenir des informations temporelles précises.

Classe d'exécution

RuntimeLa classe est une classe principale en Java qui fournit des méthodes pour interagir avec l'environnement d'exécution Java.

Il fournit une interface pour interagir avec le système d'exploitation, permettant aux applications Java d'exécuter des commandes système, d'accéder aux ressources système et d'effectuer des opérations spécifiques.

Les principales utilisations comprennent les aspects suivants :

  • Démarrer et gérer des processus

    • RuntimeLa classe fournit quelques méthodes telles queexec(), utilisé pour démarrer et gérer des processus externes.

    • Cela permet aux applications Java d'exécuter des commandes système, de lancer d'autres applications ou scripts et d'interagir avec des processus externes.

  • Accéder aux ressources du système

    • RuntimeLa classe fournit quelques méthodes telles quetotalMemory()etfreeMemory(), utilisé pour obtenir les informations sur la mémoire de la machine virtuelle Java.

    • Aussi disponiblegetSystemResource()Méthode pour obtenir le chemin des ressources système, tel que le chemin des classes, le chemin de la bibliothèque, etc.

  • effectuer une action spécifique

    • RuntimeLa classe fournit également quelques méthodes, telles queexit(), utilisé pour terminer les applications Java.

    • Aussi disponiblenanoTime()méthode pour obtenir le temps actuel en nanosecondes et utilisercurrentTimeMillis()Méthode pour obtenir l’heure actuelle en millisecondes.

Explication détaillée des tests de résistance en ligne de commande JMeter

Entrez dans le répertoire bin JMeter.

Démarrez JMeter avec les paramètres de ligne de commande

./jmeter -n -t /Users/xdclass/Desktop/report.jmx -l /Users/xdclass/Desktop/temp/jtl/result.jtl -e -o /Users/xdclass/Desktop/temp/result

inclure:

  • -n:Exécutez JMeter en mode non-GUI.
  • -t <jmx文件路径>: Spécifiez le chemin d'accès au script de test JMeter.
  • -l <结果日志路径>: Spécifiez le chemin d'enregistrement du journal des résultats du test. Assurez-vous que le dossier existe et que le nom du fichier n'est pas répété.
  • -e: Générez un rapport de test au format HTML après l'exécution du script de test.
  • -o <报告目录路径>: Spécifiez le répertoire dans lequel le rapport HTML est stocké. Assurez-vous que le dossier existe.

Pratique du codage

  1. public class JMeterIntegration {
  2. public static void main(String[] args) {
  3. try {
  4. // 构建JMeter命令行调用
  5. String command = "/path/to/jmeter/bin/jmeter -n -t /path/to/test.jmx -l results.log -e -o /path/to/result";
  6. Process process = Runtime.getRuntime().exec(command);
  7. // 读取JMeter输出
  8. new BufferedReader(new InputStreamReader(process.getInputStream())).lines()
  9. .forEach(System.out::println);
  10. // 等待JMeter进程结束并获取退出码
  11. int exitCode = process.waitFor();
  12. System.out.println("JMeter process exited with code: " + exitCode);
  13. } catch (IOException | InterruptedException e) {
  14. e.printStackTrace();
  15. }
  16. }
  17. }

Problèmes

  • Mauvaises lisibilité, maintenance et évolutivité, difficultés de plateforme et rétention des connaissances existantes