Quantcast
Channel: Grafana k6 - Grafana Labs Community Forums
Viewing all articles
Browse latest Browse all 328

Pass Variable from one function to another

$
0
0

New to K6, for benchmarking my http request I am using K6 in my pipeline. Now here is my code I have two section

first am creating an user and second am trying updating the same user

import http from "k6/http";
import { check, sleep, group } from "k6";
import { Trend } from "k6/metrics";

import { LOGIN_URL, BASE_URL } from "../test/support/constants/endpoints.js";
import {
  generateSampleUserDataFinal,
  generateRandomPhoneNumber,
  generateRandomOrganisationContactID,
  generateRandomUserTypeId,
} from "../test/support/data/perf.sampledata.js";


let TC01_CreateNewUser = new Trend("TC01_CreateNewUser");
let TC02_UpdateExistingUser = new Trend("TC02_UpdateExistingUser");

function login() {
  let authResponse = http.post(`${LOGIN_URL}`);
  let authData = authResponse.json().data;
  if (!authData) {
    console.error("Login failed: ", authResponse.body);
  }
  return authData;
}

function generateRandomSleepTimer() {
  let sleepTime = Math.floor(Math.random() * 3 + 1);
  return parseInt(sleepTime);
}


export function createNewUser(
  authToken,
  sleepTime,
  generateSampleUserData
) {
  group("TC01: Create a new User", function () {
    const response = http.post(
      `${BASE_URL}/User`,
      generateSampleUserData,
      {
        headers: {
          Authorization: authToken,
          "Content-Type": "application/json",
        },
        tags: { name: "Create a new User" },
      }
    );
    const responseDuration = response.timings.duration;
    TC01_CreateNewUser.add(responseDuration);
    console.log("Response: ", response.body);
    profileId = JSON.parse(response.body).data;
    const checkResult = check(response, {
      "is status 200": (r) => r.status === 200,
    });
    let responseMessage;
    try {
      responseMessage = response.json();
    } catch (e) {
      console.error("Failed to parse JSON response: ", response.body);
    }
    check(responseMessage, {
      "Success!": (r) => r && r.message === "Success!",
    });
    sleep(sleepTime);
   return  profileId ;
  });
}


 export function updateExistingUser(authToken, sleepTime, profileId) {
   group("TC02: Update an existing User", function () {
	  console.log("Profile ID: ====> : ", profileId);
      const response = http.put(
       `${BASE_URL}/User`,
       {
         UserProfileID: `${profileId}`,
         organisationContactID: `${generateRandomOrganisationContactID()}`,
         name: "Performnace Benchmark Testing",
         UserTypeID: `${generateRandomUserTypeId()}`,
         email: "perftest@test.com",
         phoneNumber: `${generateRandomPhoneNumber()}`
       },
       {
         headers: {
           Authorization: authToken,
           "Content-Type": "application/json",
         },
         tags: { name: "Update an existing User" },
       }
     );
     const responseDuration = response.timings.duration;
     TC02_UpdateExistingUser.add(responseDuration);
     console.log("Response: ", response.body);
     const checkResult = check(response, {
       "is status 200": (r) => r.status === 200,
     });
     let responseMessage;
     try {
       responseMessage = response.json();
     } catch (e) {
       console.error("Failed to parse JSON response: ", response.body);
     }
     check(responseMessage, {
       "Success!": (r) => r && r.message === "Success!",
     });
     sleep(sleepTime);
   });
 }
 
 
 export default function () {
  const authToken = login();
  if (!authToken) {
    console.error("No auth token, exiting test");
    return;
  }
  const sleepTime = generateRandomSleepTimer();
  const UserProfileID = generateRandomUserProfileID();
  let generateSampleUserData = generateSampleUserDataFinal(); //This is function which generate a random payload
  let profileId;

  createNewUser(authToken, sleepTime, generateSampleUserData);
  updateExistingUser(authToken, sleepTime, profileId);
}

I am getting the response

INFO[0001] Response:  {"responseCode":200,"message":"Success!","data":"372"}  source=console
INFO[0002] Response:  {"responseCode":200,"message":"Success!","data":"373"}  source=console
INFO[0003] Response:  {"responseCode":200,"message":"Success!","data":"374"}  source=console


INFO[0003] Profile ID: ====> undefined           source=console

How to fix this issue ?

2 posts - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 328

Trending Articles