diff --git a/testing-modules/gatling/pom.xml b/testing-modules/gatling/pom.xml
index e5b1db2bfb..66a48ce105 100644
--- a/testing-modules/gatling/pom.xml
+++ b/testing-modules/gatling/pom.xml
@@ -33,7 +33,7 @@
org.scala-lang
- scala-library
+ scala3-library_3
${scala.version}
@@ -54,7 +54,7 @@
org.scala-lang
- scala-library
+ scala3-library_3
@@ -105,10 +105,10 @@
- 2.12.6
- 3.3.1
- 4.3.0
- 3.0.4
+ 3.4.1
+ 3.10.5
+ 4.8.1
+ 4.8.1
\ No newline at end of file
diff --git a/testing-modules/gatling/src/test/resources/gatling.conf b/testing-modules/gatling/src/test/resources/gatling.conf
index 8bfa0ed366..7b9d6f46a5 100644
--- a/testing-modules/gatling/src/test/resources/gatling.conf
+++ b/testing-modules/gatling/src/test/resources/gatling.conf
@@ -6,122 +6,114 @@
gatling {
core {
- #outputDirectoryBaseName = "" # The prefix for each simulation result folder (then suffixed by the report generation timestamp)
- #runDescription = "" # The description for this simulation run, displayed in each report
- #encoding = "utf-8" # Encoding to use throughout Gatling for file and string manipulation
- #simulationClass = "" # The FQCN of the simulation to run (when used in conjunction with noReports, the simulation for which assertions will be validated)
- #mute = false # When set to true, don't ask for simulation name nor run description (currently only used by Gatling SBT plugin)
- #elFileBodiesCacheMaxCapacity = 200 # Cache size for request body EL templates, set to 0 to disable
- #rawFileBodiesCacheMaxCapacity = 200 # Cache size for request body Raw templates, set to 0 to disable
- #rawFileBodiesInMemoryMaxSize = 1000 # Below this limit, raw file bodies will be cached in memory
-
+ #encoding = "utf-8" # Encoding to use throughout Gatling for file and string manipulation
+ #elFileBodiesCacheMaxCapacity = 200 # Cache size for request body EL templates, set to 0 to disable
+ #rawFileBodiesCacheMaxCapacity = 200 # Cache size for request body raw files, set to 0 to disable
+ #rawFileBodiesInMemoryMaxSize = 10240 # Max bite size of raw files to be cached in memory
+ #pebbleFileBodiesCacheMaxCapacity = 200 # Cache size for request body Pebble templates, set to 0 to disable
+ #feederAdaptiveLoadModeThreshold = 100 # File size threshold (in MB). Below load eagerly in memory, above use batch mode with default buffer size
+ #shutdownTimeout = 10000 # Milliseconds to wait for the actor system to shutdown
extract {
regex {
- #cacheMaxCapacity = 200 # Cache size for the compiled regexes, set to 0 to disable caching
+ #cacheMaxCapacity = 200 # Cache size for the compiled regexes, set to 0 to disable caching
}
xpath {
- #cacheMaxCapacity = 200 # Cache size for the compiled XPath queries, set to 0 to disable caching
+ #cacheMaxCapacity = 200 # Cache size for the compiled XPath queries, set to 0 to disable caching
}
jsonPath {
- #cacheMaxCapacity = 200 # Cache size for the compiled jsonPath queries, set to 0 to disable caching
- #preferJackson = false # When set to true, prefer Jackson over Boon for JSON-related operations
+ #cacheMaxCapacity = 200 # Cache size for the compiled jsonPath queries, set to 0 to disable caching
}
css {
- #cacheMaxCapacity = 200 # Cache size for the compiled CSS selectors queries, set to 0 to disable caching
+ #cacheMaxCapacity = 200 # Cache size for the compiled CSS selectors queries, set to 0 to disable caching
}
}
-
- directory {
- #data = user-files/data # Folder where user's data (e.g. files used by Feeders) is located
- #bodies = user-files/bodies # Folder where bodies are located
- #simulations = user-files/simulations # Folder where the bundle's simulations are located
- #reportsOnly = "" # If set, name of report folder to look for in order to generate its report
- #binaries = "" # If set, name of the folder where compiles classes are located: Defaults to GATLING_HOME/target.
- #results = results # Name of the folder where all reports folder are located
+ }
+ socket {
+ #connectTimeout = 10000 # Timeout in millis for establishing a TCP socket
+ #tcpNoDelay = true
+ #soKeepAlive = false # if TCP keepalive configured at OS level should be used
+ #soReuseAddress = false
+ }
+ netty {
+ #useNativeTransport = true # if Netty Linux native transport should be used instead of Java NIO
+ #useIoUring = false # if io_uring should be used instead of epoll if available
+ #allocator = "pooled" # switch to unpooled for unpooled ByteBufAllocator
+ #maxThreadLocalCharBufferSize = 200000 # Netty's default is 16k
+ }
+ ssl {
+ #useOpenSsl = true # if OpenSSL should be used instead of JSSE (only the latter can be debugged with -Djavax.net.debug=ssl)
+ #useOpenSslFinalizers = false # if OpenSSL contexts should be freed with Finalizer or if using RefCounted is fine
+ #handshakeTimeout = 10000 # TLS handshake timeout in millis
+ #useInsecureTrustManager = true # Use an insecure TrustManager that trusts all server certificates
+ #enabledProtocols = [] # Array of enabled protocols for HTTPS, if empty use Netty's defaults
+ #enabledCipherSuites = [] # Array of enabled cipher suites for HTTPS, if empty enable all available ciphers
+ #sessionCacheSize = 0 # SSLSession cache size, set to 0 to use JDK's default
+ #sessionTimeout = 0 # SSLSession timeout in seconds, set to 0 to use JDK's default (24h)
+ #enableSni = true # When set to true, enable Server Name indication (SNI)
+ keyStore {
+ #type = "" # Type of SSLContext's KeyManagers store, possible values are jks and p12
+ #file = "" # Location of SSLContext's KeyManagers store
+ #password = "" # Password for SSLContext's KeyManagers store
+ #algorithm = "" # Algorithm used SSLContext's KeyManagers store, typically RSA
+ }
+ trustStore {
+ #type = "" # Type of SSLContext's TrustManagers store, possible values are jks and p12
+ #file = "" # Location of SSLContext's TrustManagers store
+ #password = "" # Password for SSLContext's TrustManagers store
+ #algorithm = "" # Algorithm used by SSLContext's TrustManagers store, typically RSA
}
}
charting {
- #noReports = false # When set to true, don't generate HTML reports
- #maxPlotPerSeries = 1000 # Number of points per graph in Gatling reports
- #useGroupDurationMetric = false # Switch group timings from cumulated response time to group duration.
+ #noReports = false # When set to true, don't generate HTML reports
+ #maxPlotPerSeries = 1000 # Number of points per graph in Gatling reports
+ #useGroupDurationMetric = false # Switch group timings from cumulated response time to group duration.
indicators {
- #lowerBound = 800 # Lower bound for the requests' response time to track in the reports and the console summary
- #higherBound = 1200 # Higher bound for the requests' response time to track in the reports and the console summary
- #percentile1 = 50 # Value for the 1st percentile to track in the reports, the console summary and Graphite
- #percentile2 = 75 # Value for the 2nd percentile to track in the reports, the console summary and Graphite
- #percentile3 = 95 # Value for the 3rd percentile to track in the reports, the console summary and Graphite
- #percentile4 = 99 # Value for the 4th percentile to track in the reports, the console summary and Graphite
+ #lowerBound = 800 # Lower bound for the requests' response time to track in the reports and the console summary
+ #higherBound = 1200 # Higher bound for the requests' response time to track in the reports and the console summary
+ #percentile1 = 50 # Value for the 1st percentile to track in the reports, the console summary and Graphite
+ #percentile2 = 75 # Value for the 2nd percentile to track in the reports, the console summary and Graphite
+ #percentile3 = 95 # Value for the 3rd percentile to track in the reports, the console summary and Graphite
+ #percentile4 = 99 # Value for the 4th percentile to track in the reports, the console summary and Graphite
}
}
http {
- #fetchedCssCacheMaxCapacity = 200 # Cache size for CSS parsed content, set to 0 to disable
- #fetchedHtmlCacheMaxCapacity = 200 # Cache size for HTML parsed content, set to 0 to disable
- #perUserCacheMaxCapacity = 200 # Per virtual user cache size, set to 0 to disable
- #warmUpUrl = "http://gatling.io" # The URL to use to warm-up the HTTP stack (blank means disabled)
- #enableGA = true # Very light Google Analytics, please support
- ssl {
- keyStore {
- #type = "" # Type of SSLContext's KeyManagers store
- #file = "" # Location of SSLContext's KeyManagers store
- #password = "" # Password for SSLContext's KeyManagers store
- #algorithm = "" # Algorithm used SSLContext's KeyManagers store
- }
- trustStore {
- #type = "" # Type of SSLContext's TrustManagers store
- #file = "" # Location of SSLContext's TrustManagers store
- #password = "" # Password for SSLContext's TrustManagers store
- #algorithm = "" # Algorithm used by SSLContext's TrustManagers store
- }
- }
- ahc {
- #keepAlive = true # Allow pooling HTTP connections (keep-alive header automatically added)
- #connectTimeout = 60000 # Timeout when establishing a connection
- #pooledConnectionIdleTimeout = 60000 # Timeout when a connection stays unused in the pool
- #readTimeout = 60000 # Timeout when a used connection stays idle
- #maxRetry = 2 # Number of times that a request should be tried again
- #requestTimeout = 60000 # Timeout of the requests
- #acceptAnyCertificate = true # When set to true, doesn't validate SSL certificates
- #httpClientCodecMaxInitialLineLength = 4096 # Maximum length of the initial line of the response (e.g. "HTTP/1.0 200 OK")
- #httpClientCodecMaxHeaderSize = 8192 # Maximum size, in bytes, of each request's headers
- #httpClientCodecMaxChunkSize = 8192 # Maximum length of the content or each chunk
- #webSocketMaxFrameSize = 10240000 # Maximum frame payload size
- #sslEnabledProtocols = [TLSv1.2, TLSv1.1, TLSv1] # Array of enabled protocols for HTTPS, if empty use the JDK defaults
- #sslEnabledCipherSuites = [] # Array of enabled cipher suites for HTTPS, if empty use the JDK defaults
- #sslSessionCacheSize = 0 # SSLSession cache size, set to 0 to use JDK's default
- #sslSessionTimeout = 0 # SSLSession timeout in seconds, set to 0 to use JDK's default (24h)
- #useOpenSsl = false # if OpenSSL should be used instead of JSSE (requires tcnative jar)
- #useNativeTransport = false # if native transport should be used instead of Java NIO (requires netty-transport-native-epoll, currently Linux only)
- #usePooledMemory = true # if Gatling should use pooled memory
- #tcpNoDelay = true
- #soReuseAddress = false
- #soLinger = -1
- #soSndBuf = -1
- #soRcvBuf = -1
- }
+ #fetchedCssCacheMaxCapacity = 200 # Cache size for CSS parsed content, set to 0 to disable
+ #fetchedHtmlCacheMaxCapacity = 200 # Cache size for HTML parsed content, set to 0 to disable
+ #perUserCacheMaxCapacity = 200 # Per virtual user cache size, set to 0 to disable
+ #warmUpUrl = "https://gatling.io" # The URL to use to warm-up the HTTP stack (blank means disabled)
+ #pooledConnectionIdleTimeout = 60000 # Timeout in millis for a connection to stay idle in the pool
+ #requestTimeout = 60000 # Timeout in millis for performing an HTTP request
+ #enableHostnameVerification = false # When set to true, enable hostname verification: SSLEngine.setHttpsEndpointIdentificationAlgorithm("HTTPS")
dns {
- #queryTimeout = 5000 # Timeout of each DNS query in millis
- #maxQueriesPerResolve = 3 # Maximum allowed number of DNS queries for a given name resolution
+ #queryTimeout = 5000 # Timeout in millis of each DNS query in millis
+ #maxQueriesPerResolve = 6 # Maximum allowed number of DNS queries for a given name resolution
}
}
+ jms {
+ #replyTimeoutScanPeriod = 1000 # scan period for timed out reply messages
+ }
data {
- #writers = [console, file] # The list of DataWriters to which Gatling write simulation data (currently supported : console, file, graphite, jdbc)
+ #writers = [console, file] # The list of DataWriters to which Gatling write simulation data (currently supported : console, file, graphite)
+ #utcDateTime = true # Print date-times with the UTC zone instead of the System's default
console {
- #light = false # When set to true, displays a light version without detailed request stats
+ #light = false # When set to true, displays a light version without detailed request stats
+ #writePeriod = 5 # Write interval, in seconds
}
file {
- #bufferSize = 8192 # FileDataWriter's internal data buffer size, in bytes
+ #bufferSize = 8192 # FileDataWriter's internal data buffer size, in bytes
}
leak {
- #noActivityTimeout = 30 # Period, in seconds, for which Gatling may have no activity before considering a leak may be happening
+ #noActivityTimeout = 30 # Period, in seconds, for which Gatling may have no activity before considering a leak may be happening
}
graphite {
- #light = false # only send the all* stats
- #host = "localhost" # The host where the Carbon server is located
- #port = 2003 # The port to which the Carbon server listens to (2003 is default for plaintext, 2004 is default for pickle)
- #protocol = "tcp" # The protocol used to send data to Carbon (currently supported : "tcp", "udp")
- #rootPathPrefix = "gatling" # The common prefix of all metrics sent to Graphite
- #bufferSize = 8192 # GraphiteDataWriter's internal data buffer size, in bytes
- #writeInterval = 1 # GraphiteDataWriter's write interval, in seconds
+ #light = false # only send the all* stats
+ #host = "localhost" # The host where the Carbon server is located
+ #port = 2003 # The port to which the Carbon server listens to (2003 is default for plaintext, 2004 is default for pickle)
+ #protocol = "tcp" # The protocol used to send data to Carbon (currently supported : "tcp", "udp")
+ #rootPathPrefix = "gatling" # The common prefix of all metrics sent to Graphite
+ #bufferSize = 8192 # Internal data buffer size, in bytes
+ #writePeriod = 1 # Write period, in seconds
}
+ #enableAnalytics = true # Anonymous Usage Analytics (no tracking), please support
}
-}
+}
\ No newline at end of file
diff --git a/testing-modules/gatling/src/test/scala/IDEPathHelper.scala b/testing-modules/gatling/src/test/scala/IDEPathHelper.scala
index 6aef6707b2..2cab1a6056 100644
--- a/testing-modules/gatling/src/test/scala/IDEPathHelper.scala
+++ b/testing-modules/gatling/src/test/scala/IDEPathHelper.scala
@@ -1,19 +1,16 @@
-import java.nio.file.Path
-
-import io.gatling.commons.util.PathHelper._
+import java.nio.file.{Path, Paths}
object IDEPathHelper {
+ val gatlingConfUrl: Path = Paths.get(getClass.getClassLoader.getResource("gatling.conf").toURI)
- val gatlingConfUrl: Path = getClass.getClassLoader.getResource("gatling.conf")
- val projectRootDir = gatlingConfUrl.ancestor(3)
+ val projectRootDir: Path = gatlingConfUrl.getParent.getParent.getParent
- val mavenSourcesDirectory = projectRootDir / "src" / "test" / "scala"
- val mavenResourcesDirectory = projectRootDir / "src" / "test" / "resources"
- val mavenTargetDirectory = projectRootDir / "target"
- val mavenBinariesDirectory = mavenTargetDirectory / "test-classes"
-
- val resourcesDirectory = mavenResourcesDirectory
- val recorderSimulationsDirectory = mavenSourcesDirectory
- val resultsDirectory = mavenTargetDirectory / "gatling"
- val recorderConfigFile = mavenResourcesDirectory / "recorder.conf"
+ val mavenSourcesDirectory: Path = projectRootDir.resolve("src").resolve("test").resolve("scala")
+ val mavenResourcesDirectory: Path = projectRootDir.resolve("src").resolve("test").resolve("resources")
+ val mavenTargetDirectory: Path = projectRootDir.resolve("target")
+ val mavenBinariesDirectory: Path = mavenTargetDirectory.resolve("test-classes")
+ val resourcesDirectory: Path = mavenResourcesDirectory
+ val recorderSimulationsDirectory: Path = mavenSourcesDirectory
+ val resultsDirectory: Path = mavenTargetDirectory.resolve("gatling")
+ val recorderConfigFile: Path = mavenResourcesDirectory.resolve("recorder.conf")
}
diff --git a/testing-modules/gatling/src/test/scala/org/baeldung/RecordedSimulation.scala b/testing-modules/gatling/src/test/scala/org/baeldung/RecordedSimulation.scala
index 9902f91e0f..b532e6e6ee 100644
--- a/testing-modules/gatling/src/test/scala/org/baeldung/RecordedSimulation.scala
+++ b/testing-modules/gatling/src/test/scala/org/baeldung/RecordedSimulation.scala
@@ -10,15 +10,12 @@ class RecordedSimulation extends Simulation {
val httpProtocol = http
.baseUrl("http://computer-database.gatling.io")
- .inferHtmlResources(BlackList(""".*\.css""", """.*\.js""", """.*\.ico"""), WhiteList())
+ .inferHtmlResources(WhiteList(), BlackList(""".*\.css""", """.*\.js""", """.*\.ico"""))
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3")
.userAgentHeader("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0")
-
-
-
val scn = scenario("RecordedSimulation")
.exec(http("request_0")
.get("/"))