# Using session attributes inner Checks

**URL:** <https://community.gatling.io/t/using-session-attributes-inner-checks/759>\
**Category:** Gatling (Open-Source)\
**Created:** [January 3, 2014, 5:05am UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759 "2014-01-03T05:05:58Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tsunllly\_Olivares\_T](https://avatars.discourse-cdn.com/v4/letter/t/a698b9/32.png) [@Tsunllly\_Olivares\_T](https://community.gatling.io/u/Tsunllly_Olivares_T)\
**Post date:** [January 3, 2014, 5:05am UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/1 "2014-01-03T05:05:58Z")

</div>

Hello,

I want to do something like this

.exec(http(“request\_4”)  
.post("/SearchAppointment")  
.headers(headers\_4)  
.body(ELFileBody(“request.txt”))  
.xpath(“A valid path to obtain an id for an appointment”).find.is( **aMethodForDeterminingAppointmentId( session(“user”).as[String]** ) )  
)

…" **user"** is currently in session ( csv feeder )

---

<div class="post-metadata">

**Author:** ![Excilys](https://avatars.discourse-cdn.com/v4/letter/e/8797f3/32.png) [@Excilys](https://community.gatling.io/u/Excilys)\
**Post date:** [January 3, 2014, 6:42am UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/2 "2014-01-03T06:42:00Z")

</div>

Appart that I personally would rather go with validate instead of as, your code looks fine to me. What’s your problem exactly?

I dont know how to pass the session attribute “ **user** ” to the method “ **aMethodForDeterminingAppointmentId** ”

**session(“user”).as[String] ← that’s exactly what you did here**

---

<div class="post-metadata">

**Author:** ![Tsunllly\_Olivares\_T](https://avatars.discourse-cdn.com/v4/letter/t/a698b9/32.png) [@Tsunllly\_Olivares\_T](https://community.gatling.io/u/Tsunllly_Olivares_T)\
**Post date:** [January 3, 2014, 3:44pm UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/3 "2014-01-03T15:44:40Z")

</div>

Thank you for your response, my code is something like this

.exec(http(“ObtenerCitas”)  
.post("""/Comunes/Citas/ObtenerCitas""")  
.headers(headers\_13)  
.body(ELFileBody(“request.txt”))  
.check( **citas\_dia\_coincidan** ( ((session: Session) =\> { session(“fl\_usuario”).as[String] }) ) )  
)

where

def **citas\_dia\_coincidan** (fl\_usuario: String) = {  
println(fl\_usuario)

}

Then, when running simulation I get:

**type mismatch;**

**found : io.gatling.core.Predef.Session =\> String**  
**required: String**

I don’t know how to pass the attribute fl\_usuario. Any suggestion?

Thanks in advance 🙂

---

<div class="post-metadata">

**Author:** ![Excilys](https://avatars.discourse-cdn.com/v4/letter/e/8797f3/32.png) [@Excilys](https://community.gatling.io/u/Excilys)\
**Post date:** [January 3, 2014, 4:15pm UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/4 "2014-01-03T16:15:24Z")

</div>

Check is a full API, not just a bare function.  
Can you elaborate on what you're trying to check, like, what your  
\*citas\_dia\_coincidan\* method would look like, so I can help you?

---

<div class="post-metadata">

**Author:** ![Tsunllly\_Olivares\_T](https://avatars.discourse-cdn.com/v4/letter/t/a698b9/32.png) [@Tsunllly\_Olivares\_T](https://community.gatling.io/u/Tsunllly_Olivares_T)\
**Post date:** [January 3, 2014, 4:48pm UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/5 "2014-01-03T16:48:30Z")

</div>

Thank you Stéphane 🙂

**citas\_dia\_coincidan** is as follows

def **citas\_dia\_coincidan** (folio\_usuario: String) = {  
println(fl\_usuario)  
var user\_appointment = getAppointment(fl\_usuario)

xpath("//FL\_APPOINTMENT/text()").find.is(user\_appointment)  
}

I only want to calculate **user\_appointment** from **folio\_usuario** (using method getAppointment ), then check if xpath for calculate FL\_APPOINTMENT match witch expected **user\_appointment**

Am I missing something?

---

<div class="post-metadata">

**Author:** ![Excilys](https://avatars.discourse-cdn.com/v4/letter/e/8797f3/32.png) [@Excilys](https://community.gatling.io/u/Excilys)\
**Post date:** [January 3, 2014, 4:59pm UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/6 "2014-01-03T16:59:35Z")

</div>

OK!!!

So you were overcomplicating things 😉

check(xpath("//FL\_APPOINTMENT/text()").[find.is](http://find.is)(session =\> session(“user”).validate[String].map(folio\_usuario =\> getAppointment(folio\_usuario)))

and actually, you can write this much more shortly:

check(xpath("//FL\_APPOINTMENT/text()").is(\_(“user”).validate[String].map(getAppointment))

- removed find because it’s the default
- replaced session =\> session with the scala \_ wild card, because the function parameter was only used once and not in an inner call (like in foo(bar(session))
- getAppointment is a method that takes a String and returns a String, so it can be “lifted” into a function that takes a String and returns a String, which is exactly what map method expects here

But well, if you don’t want to learn a few functional tricks, the following would work too (with the limitations of .as compared to .validate):

check(xpath("//FL\_APPOINTMENT/text()").is(session =\> getAppointment(session(“user”).as[String]))

Get it?

---

<div class="post-metadata">

**Author:** ![Tsunllly\_Olivares\_T](https://avatars.discourse-cdn.com/v4/letter/t/a698b9/32.png) [@Tsunllly\_Olivares\_T](https://community.gatling.io/u/Tsunllly_Olivares_T)\
**Post date:** [January 3, 2014, 5:52pm UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/7 "2014-01-03T17:52:03Z")

</div>

Thank you very much it works !!! And I think, I already understand about the placeholder “\_”  
My final code was:

.exec(http(“ObtenerCitas”)  
.post("""/Comunes/Citas/ObtenerCitas""")  
.headers(headers\_13)  
.body(ELFileBody(“Login\_ObtenerCitas\_request\_39.txt”))  
.check( citas\_dia\_coincidan )  
)

where

def citas\_dia\_coincidan() = {  
xpath("//FL\_APPOINTMENT/text()").is( \_(“ **fl\_usuario** ”).validate[String].map(getAppointment) )

}

😃 😃

---

<div class="post-metadata">

**Author:** ![Excilys](https://avatars.discourse-cdn.com/v4/letter/e/8797f3/32.png) [@Excilys](https://community.gatling.io/u/Excilys)\
**Post date:** [January 3, 2014, 7:35pm UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/8 "2014-01-03T19:35:20Z")

</div>

You don’t even need the curly braces as there’s only one instruction:

def citas\_dia\_coincidan() = xpath("//FL\_APPOINTMENT/text()").is( \_(“ **fl\_usuario** ”).validate[String].map(getAppointment) )

Have fun!

---

<div class="post-metadata">

**Author:** ![Excilys](https://avatars.discourse-cdn.com/v4/letter/e/8797f3/32.png) [@Excilys](https://community.gatling.io/u/Excilys)\
**Post date:** [January 3, 2014, 7:35pm UTC](https://community.gatling.io/t/using-session-attributes-inner-checks/759/9 "2014-01-03T19:35:43Z")

</div>

And you don’t even need to make it a def:

val citas\_dia\_coincidan() = xpath("//FL\_APPOINTMENT/text()").is( \_(“ **fl\_usuario** ”).validate[String].map(getAppointment) )
