This is probably something simple but I just can't find the reason why basic gatling loops are not working in any of my tests.
Regardless of how I try to define loops (repeat counter, duration) my simplistic scenario is always executed once per each user.
Test code:
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class RecordedSimulation extends Simulation {
  object Browse {
    val browse = exec(
      http("Getting category times")
        .get("http://localhost:8080/category/cat_1")
    )
  }
  val scn = scenario("My scenario").repeat(2000) {
    exec(Browse.browse)
  }
  setUp(
    scn.inject(atOnceUsers(10))
  )
}
instead of seeing 10x 2000 calls I am always seeing only 10 (equal to "atOnceUsers):
================================================================================
2016-12-19 17:10:18                                          25s elapsed
---- My scenario ---------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 10     / done:0     
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=10     KO=0     )
> Getting category times                                   (OK=10     KO=0     )
================================================================================
================================================================================
2016-12-19 17:10:23                                          30s elapsed
---- My scenario ---------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
          waiting: 0      / active: 10     / done:0     
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=10     KO=0     )
> Getting category times                                   (OK=10     KO=0     )
================================================================================
================================================================================
2016-12-19 17:10:24                                          31s elapsed
---- My scenario ---------------------------------------------------------------
[##########################################################################]100%
          waiting: 0      / active: 0      / done:10    
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=10     KO=0     )
> Getting category times                                   (OK=10     KO=0     )
================================================================================
Simulation com.RecordedSimulation completed in 30 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...
================================================================================
---- Global Information --------------------------------------------------------
> request count                                         10 (OK=10     KO=0     )
> min response time                                     10 (OK=10     KO=-     )
> max response time                                     43 (OK=43     KO=-     )
> mean response time                                    19 (OK=19     KO=-     )
> std deviation                                          9 (OK=9      KO=-     )
> response time 50th percentile                         16 (OK=16     KO=-     )
> response time 75th percentile                         21 (OK=21     KO=-     )
> response time 95th percentile                         35 (OK=35     KO=-     )
> response time 99th percentile                         41 (OK=41     KO=-     )
> mean requests/sec                                  0.323 (OK=0.323  KO=-     )
---- Response Time Distribution ------------------------------------------------
> t < 800 ms                                            10 (100%)
> 800 ms < t < 1200 ms                                   0 (  0%)
> t > 1200 ms                                            0 (  0%)
> failed                                                 0 (  0%)
================================================================================
				
                        
Please give a try to asLongAs
http://gatling.io/docs/1.5.6/user_documentation/tutorial/advanced_usage.html
Change the condition as you want.It is a session function and works...