class SessionCache
Caches sessions created from a single driver instance.
Definitions
def initialize(driver, capabilities)
Initialize a session cache for one driver instance.
Signature
-
parameter
driverDriver The driver backing cached sessions.
-
parameter
capabilitiesHash Capabilities for newly created sessions.
Implementation
def initialize(driver, capabilities)
@driver = driver
@capabilities = capabilities
@client = driver.client
@sessions = []
end
def viable?
Signature
-
returns
Boolean Whether the underlying driver remains usable.
Implementation
def viable?
@driver&.viable?
end
def reusable?
Signature
-
returns
Boolean Whether cached sessions may be reused.
Implementation
def reusable?
@driver&.reusable?
end
def close
Close the cached sessions, driver, and HTTP client.
Implementation
def close
if @driver
@driver.close
@driver = nil
end
if @client
@client.close
@client = nil
end
if @sessions
@sessions = nil
end
end
def concurrency
Signature
-
returns
Integer The number of concurrently usable sessions.
Implementation
def concurrency
@driver.concurrency
end
def acquire
Acquire a cached or newly created session payload.
Signature
-
returns
Hash A WebDriver session payload.
Implementation
def acquire
if @sessions.empty?
session = @client.post("session", {capabilities: @capabilities})
if session.nil?
raise Async::WebDriver::Error, "Failed to create session with capabilities: #{@capabilities.inspect}"
end
session[:cache] = self
session[:endpoint] = @driver.endpoint
return session
else
return @sessions.pop
end
end
def release(session)
Return a session payload to the cache.
Signature
-
parameter
sessionHash The session payload to cache.
Implementation
def release(session)
@sessions.push(session)
end