如何在jmeter中注册和调用外部javascript函数

如何在jmeter中注册和调用外部javascript函数,javascript,jmeter,Javascript,Jmeter,我有这样一个场景 user logs in ( /login) navigate to the reservations page to get all the reservation id (/reservations) Through json path extractor it gets first reservation id from the JSON.($..reservationLists..id[0], reservationid) navigate to th

我有这样一个场景

 user logs in ( /login)

 navigate to the reservations page to get all the reservation id (/reservations)

  Through json path extractor it gets first reservation id from the JSON.($..reservationLists..id[0], reservationid)

  navigate to the first reservation id (/reservation/${reservationid})
在它导航的每个页面中,HTTP头管理器都需要适用于该页面的握手键,该握手键基本上是url、secretKey、publicKey的组合。(secretKey和publicKey都是静态的,但是url发生了变化)

对于像(/login,/reservations)这样的静态URL,我在开始时添加了一个BSF预处理器,并声明变量,并在HTTP头管理器中使用这些变量作为${handshakeey_reservations}、${handshakeKey_login}等,效果非常好

  var urls = ["login", "reservations", "logout", "profile"];

  for (var i = 0; i < urls.length; i++) {

    var handShakeKeyForStaticUrls = CryptoJS.SHA1("/"+urls[i]+"abcdediiebneC"+"12345678");

      handShakeKeyForStaticUrls = handShakeKeyForStaticUrls.toString(CryptoJS.enc.Base64);

     vars.put("handshakeKey_"+urls[i], handShakeKeyForStaticUrls);

      }
然后在HTTP头管理器中,我希望

握手键${uJavaScript(gethandshakey(“/reservation/${reservationid}”)}

所以问题是我可以在哪里注册这个java脚本函数,这样我就可以在任何地方调用它


尽管目前我所做的工作是,向每个包含动态url的http采样器添加BSF后处理器,并生成和声明仅适用于该url的握手键,并在相应的http头管理器中使用相同的握手键。我需要把这个处理掉

对此有什么想法吗?实际上可以注册外部java脚本,并在任何地方全局调用该java脚本中的函数。beanshell.function.init是否允许注册javascipt类/方法,以便我们可以在任何地方全局调用它。您是否找到解决此问题的方法?如果是,请分享。
    function getHandShakeKey(url)
       {

       var handShakeKeyForDynamicUrls = CryptoJS.SHA1(url+"abcdeffe"+"12345678");

       handShakeKeyForDynamicUrls = handShakeKeyForDynamicUrls.toString(CryptoJS.enc.Base64);

       //return handShakeKeyForDynamicUrls;

      vars.put("handShakeKeyForDynamicUrls", handShakeKeyForDynamicUrls);

       }