No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Trend Metric

15/27
Recursos

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola 🖐. Les dejo mi solución al reto.

import http from 'k6/http';
import { Trend } from 'k6/metrics';

export const options = {
  vus: 10,
  duration: '20s'
}

const productsCalled = new Trend("products_called");
const categoriesCalled = new Trend("categories_called");
const usersCalled = new Trend("users_called");

export default function(){
  const randomEndpoint = random(0, 2);// Return random value between 0 and 2
  let selectedEndpoint;

  switch(randomEndpoint){
    case 0:
      selectedEndpoint = "products";
      productsCalled.add(1);
      categoriesCalled.add(0);
      usersCalled.add(0);
      break;

    case 1:
      selectedEndpoint = "categories";
      productsCalled.add(0);
      categoriesCalled.add(1);
      usersCalled.add(0);
      break;

    case 2:
      selectedEndpoint = "users";
      productsCalled.add(0);
      categoriesCalled.add(0);
      usersCalled.add(1);
      break;
  }

  const response = http.get("https://api.escuelajs.co/api/v1/" + selectedEndpoint);
}

function random(min, max) {
  return Math.floor((Math.random() * (max - min + 1)) + min);
}

Esta fue mi solución:

import http from "k6/http";
import { Counter, Trend } from "k6/metrics";

export const options = {
    vus: 10,
    duration: '20s'
}

const categoriesCounter = new Counter("_categories_counter");
const categoriesTrend = new Trend("_categories_trend")

const productsCounter = new Counter("_products_counter");
const productsTrend = new Trend("_products_Trend");

const usersCounter = new Counter("_users_counter");
const usersTrend = new Trend("_users_trend");

export default function(){
    let randomRequest = parseInt(Math.random()*3); 
    if (randomRequest === 0){
        let requestCategories = http.get('https://api.escuelajs.co/api/v1/categories');
        categoriesCounter.add(1);
        categoriesTrend.add(requestCategories.timings.duration);
    } else if (randomRequest === 1) {
        let requestProducts = http.get('https://api.escuelajs.co/api/v1/products');
        productsCounter.add(1);
        productsTrend.add(requestProducts.timings.duration);
    } else {
        let requestUsers = http.get('https://api.escuelajs.co/api/v1/users');
        usersCounter.add(1);
        usersTrend.add(requestUsers.timings.duration);
    };
};

Salida:

Hola, adjunto mi solucion:

import { Counter, Trend } from 'k6/metrics';
import http from 'k6/http';
import { randomIntBetween } from 'https://jslib.k6.io/k6-utils/1.4.0/index.js';

export const options = {
    stages: [{ duration: '10s', target: 10 }]
};

const endpoints = [
    {
        url: 'https://api.escuelajs.co/api/v1/products',
        counter: new Counter('product calls'),
        trend: new Trend('http_req_products')
    },
    {
        url: 'https://api.escuelajs.co/api/v1/categories',
        counter: new Counter('categories calls'),
        trend: new Trend('http_req_categories')
    },
    {
        url: 'https://api.escuelajs.co/api/v1/users',
        counter: new Counter('users calls'),
        trend: new Trend('http_req_users')
    },
]

export default function () {
    const number = randomIntBetween(0, 2);
    const { url, counter, trend } = endpoints[number];

    const res = http.get(url);
    counter.add(1);
    trend.add(res.timings.duration);
}```

Aqui les comparto la solucion al reto.

import http from 'k6/http'; // Importa el módulo http de K6 para hacer peticiones HTTP
import { Trend } from 'k6/metrics'; // Importa el módulo Trend de K6 para registrar métricas

export const options = { // Configura las opciones de la prueba
  vus: 10, // Especifica el número de usuarios virtuales concurrentes que realizarán la prueba
  duration: '20s' // Especifica la duración de la prueba
}

const products = new Trend('products'); // Crea un objeto de tipo Trend para registrar la cantidad de solicitudes realizadas para productos
const category = new Trend('categories'); // Crea un objeto de tipo Trend para registrar la cantidad de solicitudes realizadas para categorías
const users = new Trend('users'); // Crea un objeto de tipo Trend para registrar la cantidad de solicitudes realizadas para usuarios

export default function testEcommerceAPI() { // Define la función principal que realizará la prueba

  const randomEndpoint = random(0, 2); // Genera un número aleatorio entre 0 y 2 para elegir un endpoint aleatorio
  let endpoint; // Declara una variable para almacenar el endpoint elegido

  switch (randomEndpoint) { // Usa una estructura switch para asignar el endpoint elegido y registrar la solicitud correspondiente en las métricas

    case 0: // Si se elige el endpoint 0
      endpoint = 'products'; // Asigna el valor 'products' a la variable endpoint
      products.add(1); // Registra una solicitud para productos en las métricas
      category.add(0); // Registra una solicitud para categorías en las métricas
      users.add(0); // Registra una solicitud para usuarios en las métricas
      break;

    case 1: // Si se elige el endpoint 1
      endpoint = 'categories'; // Asigna el valor 'categories' a la variable endpoint
      products.add(0); // Registra una solicitud para productos en las métricas
      category.add(1); // Registra una solicitud para categorías en las métricas
      users.add(0); // Registra una solicitud para usuarios en las métricas
      break;

    case 2: // Si se elige el endpoint 2
      endpoint = 'users'; // Asigna el valor 'users' a la variable endpoint
      products.add(0); // Registra una solicitud para productos en las métricas
      category.add(0); // Registra una solicitud para categorías en las métricas
      users.add(1); // Registra una solicitud para usuarios en las métricas
      break;

    default: // Si no se elige ningún endpoint
      break;
  }

  console.log(`Endpoint: ${endpoint}`); // Imprime el endpoint elegido en la consola

  function random(min, max) { // Define una función que genera un número aleatorio entre un rango dado
    return Math.floor((Math.random() * (max - min + 1)) + min);
  }
}