2014-11-24 128 views
0

我已經使用gatling記錄了一個scala腳本,它在scala文件中記錄了「opentoken」。這scala文件工作正常incase一個用戶,因爲如果增加沒有用戶它不記錄,因爲SSo令牌,​​所以有什麼辦法可以爲scala文件生成sso令牌登錄。
那麼如何動態生成下面的scala文件的opentoke?使用scala腳本進行SSO登錄

import scala.concurrent.duration._ 

import io.gatling.core.Predef._ 
import io.gatling.http.Predef._ 
import io.gatling.jdbc.Predef._ 

class RecLoginLogoutP extends Simulation { 

    val httpProtocol = http 
     .baseURL("https://mywebsite.com") 
     .inferHtmlResources(BlackList(""".*\.css.*|.*\.js.*|.*\.png.*|.*\.gif.*|.*\.jpeg.*|.*\.ico.*"""), WhiteList()) 
     .acceptHeader("""text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""") 
     .acceptEncodingHeader("""gzip, deflate""") 
     .acceptLanguageHeader("""en-US,en;q=0.5""") 
     .connection("""keep-alive""") 
     .contentTypeHeader("""application/ocsp-request""") 
     .userAgentHeader("""Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0""") 



    val uri1 = """http://somewebsite.com/gsalphasha2g2""" 
    val uri2 = """https://mywebsite.com:443""" 
    val uri3 = """sso-mywebsite.com""" 
    val uri4 = """www.mywebsite.com""" 
    val uri5 = """cloudsso-test.mywebsite.com""" 

    val scn = scenario("RecLoginLogoutP") 
     .exec(http("request_0") 
      .get("""/""")) 
     .pause(1) 
     .exec(http("request_1") 
      .post(uri1 + """""") 
      .body(RawFileBody("RecLoginLogoutP_request_0001.txt")) 
      .resources(http("request_2") 
      .post(uri1 + """""") 
      .body(RawFileBody("RecLoginLogoutP_request_0002.txt")))) 
     .pause(1) 
     .exec(http("request_3") 
      .get("""/sp/startSSO.ping?PartnerIdpId=cloudsso-test.mywebsite.com&TargetResource=https://mywebsite.com/""")) 
     .pause(24) 
     .exec(http("request_4") 
      .post("https://" + uri3 + """:443/autho/login/loginaction.html""") 
      .formParam("""userid""", """userName""") 
      .formParam("""password""", """password""") 
      .formParam("""target""", """""") 
      .formParam("""smauthreason""", """""") 
      .formParam("""smquerydata""", """""") 
      .formParam("""smagentname""", """""") 
      .formParam("""postpreservationdata""", """""") 
      .formParam("""SMENC""", """""") 
      .formParam("""SMLOCALE""", """""")) 
     .pause(2) 
     .exec(http("request_5") 
      .get("https://" + uri5 + """:443/idp/Y61KXp/SSOServer.ping""") 
      .resources(http("request_6") 
      .post(uri2 + """/""") 
      **.formParam("""opentoken""", """YKHHMSLKKSJHHFHFHFH-9fdfdjkhhjkfkdshfjdshjnythkkdjfdfdfdfdffdfdfd**""")))** 
     .pause(105) 
     // logout 
     .exec(http("request_7") 
      .get("""/c/portal/logout""") 
      .resources(http("request_8") 
      .get(uri2 + """/sp/startSSO.ping?PartnerIdpId=cloudsso-test.mywebsite.com&TargetResource=https://mywebsite.com/"""))) 
     .pause(12) 
     .exec(http("request_9") 
      .get("https://" + uri4 + """:443/autho/sclnup.html""")) 

    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) 
} 

回答

0

我不知道,如果知道你的問題是正確的,但對於進行登陸情侶的用戶,你應該添加您的令牌到相關參數在腳本中,因爲它不能針對不同的用戶是相同的。

P.S.在我使用Gatling的時候,我根本不使用opentoken。但據我所知,你可以從前一個請求的響應中獲得這個令牌 - >將它保存到相關名稱中 - >使用它作爲參數。