Test de vitesseJS
Speed-testJS est un test de vitesse basé sur JavaScript qui fournira aux utilisateurs une vue enrichie de leur vitesse Internet. Fournir aux utilisateurs non seulement leur latence, leurs vitesses de téléchargement et de téléchargement ainsi que le contexte de l'ensemble de leur expérience Internet. En utilisant les données de niveau de vitesse pour ajouter une mesure de qualification aux résultats des tests de vitesse standard, les utilisateurs sauront désormais si leur expérience est mauvaise, bonne ou excellente.
Déploiement
Pour le déploiement sur un serveur de test, consultez le fichier README sous le dossier ansible .
Configuration du client-serveur
L'application se compose d'un logiciel nœud/express exécutant le serveur et d'un simple javascript/html sur le client. Le serveur alimente la réinitialisation des points de terminaison, la communication Websocket, les interactions avec la base de données et le site Web du client.
Serveur
Index.js est le point de départ de l'application contient les fonctions nécessaires pour exécuter l'application. Les paramètres importants de ce fichier sont :
Adresse IP et ports : le serveur se liera automatiquement aux adresses ipv4 et ipv6 de la machine hôte sur laquelle il est déployé (c'est-à-dire app.listen(SERVERPORT,'::');). Des ports supplémentaires peuvent être attribués avec app.listen(ADDITIONALPORT);
Requête Http : la configuration http est définie pour autoriser les publications http et les requêtes inter-domaines.
WebSockets : la communication des websockets est définie
Points de terminaison REST : les points de terminaison de repos sont exposés pour effectuer un test de vitesse et incluent les éléments suivants :
- testplan : testplan renverra des données json contenant les adresses IP ipv4, ipv6 et les ports utilisés pour les points de terminaison de repos et les websockets exécutés sur le serveur et l'adresse IP du client. Également des fonctionnalités de test de vitesse supplémentaires (c'est-à-dire que des indicateurs de routage basés sur la latence peuvent être renvoyés)
- latence : renvoie un simple message pong
- téléchargement : données binaires basées sur la demande
- télécharger : accepte la publication pour les téléchargements
- downloadProbe : renvoie la taille de test de bande passante de téléchargement recommandée en fonction de la demande
- calculatrice : renvoie des calculs basés sur un tableau de requête donnant des statistiques sur les données.
- testServer : utilisé dans le routage basé sur la latence. Il renverra les URL des serveurs de test qui peuvent être utilisées pour trouver le serveur le plus proche d'un client.
Configuration : La configuration générique (ports, latencyBasedRouting,...) est définie dans index.js. Une personnalisation spécifique (c'est-à-dire une base de données) peut être placée dans le dossier de configuration
- Paramètres de configuration
- Points de terminaison de repos
- WebSockets
- Le dossier Modules contient les modules personnalisés utilisés pour l'application.
Client
Client : l'application client réside dans le dossier public et est constituée de javascript simple. Index.html est la page de démarrage par défaut de l'application et contiendra un exemple de bout en bout d'un test de vitesse de bande passante. Ce qui suit décrit la structure des dossiers de l'application client :
- lib : Le dossier lib contient des fichiers javascript utilisés pour mesurer la bande passante et les mesures associées.
- exemple : Le dossier exemple contient des fichiers html utilisés pour tester les fichiers javascript de mesure dans le dossier lib
- Objets de base xmlhttprequest et websocket
- Différentes suites de tests utilisant les objets de base Base xmlhttprequest et websocket
- test : le dossier test contient des tests unitaires
- uilib : fichiers javascript spécifiques à l'interface utilisateur.
- img : images pour les tests ou l'interface utilisateur
Déploiement manuel
Grunt est utilisé pour regrouper les fichiers et dossiers nécessaires au déploiement de l'application sur un serveur afin d'exécuter l'application. Les étapes sont répertoriées ci-dessous :
- exécuter le package Grunt à partir du dossier racine
- tarer, compresser ou compresser le dossier de distribution résultant
- déployer et décompresser sur votre serveur
- exécutez le nœud index.js depuis la console.
Exécuter l'application
Pour exécuter l'application localement
- Cloner le dépôt
- exécutez l'installation npm à partir du dossier racine
- exécuter le nœud index.js
- accédez à l'adresse IP : numéro de port (c'est-à-dire que localement, ce sera http://localhost:port
Base de données
Pour définir dynamodb localement
- Suivez les instructions du lien pour télécharger et exécuter dynamodb localement http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
- Configurez les informations d'identification AWS localement http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
- Une fois Dynamodb configuré localement. Utilisez le script suivant pour créer une table et insérer les données dans le dynamodb (exécutez le nœud database.js depuis le terminal)
- Lors de l'exécution du script, modifiez le nom de la table et les informations sur le serveur