Class Node

java.lang.Object
org.openqa.selenium.grid.node.Node
All Implemented Interfaces:
org.openqa.selenium.remote.http.HttpHandler, org.openqa.selenium.remote.http.Routable, HasReadyState
Direct Known Subclasses:
LocalNode, RemoteNode

public abstract class Node extends Object implements HasReadyState, org.openqa.selenium.remote.http.Routable
A place where individual webdriver sessions are running. Those sessions may be in-memory, or only reachable via localhost and a network. Or they could be something else entirely.

This class responds to the following URLs:

Verb URL Template Meaning
POST /se/grid/node/session Attempts to start a new session for the given node. The posted data should be a json-serialized Capabilities instance. Returns a serialized Session. Subclasses of Node are expected to register the session with the SessionMap.
GET /se/grid/node/session/{sessionId} Finds the Session identified by sessionId and returns the JSON-serialized form.
DELETE /se/grid/node/session/{sessionId} Stops the Session identified by sessionId. It is expected that this will also cause the session to removed from the SessionMap.
GET /se/grid/node/owner/{sessionId} Allows the node to be queried about whether or not it owns the Session identified by sessionId. This returns a boolean.
* /session/{sessionId}/* The request is forwarded to the Session identified by sessionId. When the Quit command is called, the Session should remove itself from the SessionMap.
  • Field Details

    • tracer

      protected final org.openqa.selenium.remote.tracing.Tracer tracer
    • draining

      protected boolean draining
  • Constructor Details

    • Node

      protected Node(org.openqa.selenium.remote.tracing.Tracer tracer, NodeId id, URI uri, Secret registrationSecret, Duration sessionTimeout)
  • Method Details

    • getId

      public NodeId getId()
    • getUri

      public URI getUri()
    • getNodeVersion

      public String getNodeVersion()
    • getOsInfo

      public com.google.common.collect.ImmutableMap<String,String> getOsInfo()
    • newSession

      public abstract org.openqa.selenium.internal.Either<org.openqa.selenium.WebDriverException,CreateSessionResponse> newSession(CreateSessionRequest sessionRequest)
    • executeWebDriverCommand

      public abstract org.openqa.selenium.remote.http.HttpResponse executeWebDriverCommand(org.openqa.selenium.remote.http.HttpRequest req)
    • getSession

      public abstract Session getSession(org.openqa.selenium.remote.SessionId id) throws org.openqa.selenium.NoSuchSessionException
      Throws:
      org.openqa.selenium.NoSuchSessionException
    • getUploadsFilesystem

      public org.openqa.selenium.io.TemporaryFilesystem getUploadsFilesystem(org.openqa.selenium.remote.SessionId id) throws IOException
      Throws:
      IOException
    • getDownloadsFilesystem

      public org.openqa.selenium.io.TemporaryFilesystem getDownloadsFilesystem(UUID uuid) throws IOException
      Throws:
      IOException
    • uploadFile

      public abstract org.openqa.selenium.remote.http.HttpResponse uploadFile(org.openqa.selenium.remote.http.HttpRequest req, org.openqa.selenium.remote.SessionId id)
    • downloadFile

      public abstract org.openqa.selenium.remote.http.HttpResponse downloadFile(org.openqa.selenium.remote.http.HttpRequest req, org.openqa.selenium.remote.SessionId id)
    • stop

      public abstract void stop(org.openqa.selenium.remote.SessionId id) throws org.openqa.selenium.NoSuchSessionException
      Throws:
      org.openqa.selenium.NoSuchSessionException
    • isSessionOwner

      public abstract boolean isSessionOwner(org.openqa.selenium.remote.SessionId id)
    • isSupporting

      public abstract boolean isSupporting(org.openqa.selenium.Capabilities capabilities)
    • getStatus

      public abstract NodeStatus getStatus()
    • getHealthCheck

      public abstract HealthCheck getHealthCheck()
    • getSessionTimeout

      public Duration getSessionTimeout()
    • isDraining

      public boolean isDraining()
    • drain

      public abstract void drain()
    • matches

      public boolean matches(org.openqa.selenium.remote.http.HttpRequest req)
      Specified by:
      matches in interface org.openqa.selenium.remote.http.Routable
    • execute

      public org.openqa.selenium.remote.http.HttpResponse execute(org.openqa.selenium.remote.http.HttpRequest req)
      Specified by:
      execute in interface org.openqa.selenium.remote.http.HttpHandler