Best Selenium code snippet using org.openqa.selenium.grid.data.RequestId.toString
Source:GraphqlHandlerTest.java  
...132    assertThat(topLevel).isEqualTo(133      singletonMap(134        "data", singletonMap(135          "grid", singletonMap(136            "uri", publicUri.toString()))));137  }138  @Test139  public void shouldBeAbleToGetGridVersion() {140    GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);141    Map<String, Object> topLevel = executeQuery(handler, "{ grid { version } }");142    assertThat(topLevel).isEqualTo(143      singletonMap(144        "data", singletonMap(145          "grid", singletonMap(146            "version", version))));147  }148  private void continueOnceAddedToQueue(SessionRequest request) {149    // Add to the queue in the background150    CountDownLatch latch = new CountDownLatch(1);151    events.addListener(NewSessionRequestEvent.listener(id -> latch.countDown()));152    new Thread(() -> {153      queue.addToQueue(request);154    }).start();155    try {156      assertThat(latch.await(5, SECONDS)).isTrue();157    } catch (InterruptedException e) {158      Thread.currentThread().interrupt();159      throw new RuntimeException(e);160    }161  }162  @Test163  public void shouldBeAbleToGetSessionQueueSize() throws URISyntaxException {164    SessionRequest request = new SessionRequest(165      new RequestId(UUID.randomUUID()),166      Instant.now(),167      Set.of(W3C),168      Set.of(caps),169      Map.of(),170      Map.of());171    continueOnceAddedToQueue(request);172    GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);173    Map<String, Object> topLevel = executeQuery(handler, "{ grid { sessionQueueSize } }");174    assertThat(topLevel).isEqualTo(175      singletonMap(176        "data", singletonMap(177          "grid", singletonMap(178            "sessionQueueSize", 1L))));179  }180  @Test181  public void shouldBeAbleToGetSessionQueueRequests() throws URISyntaxException {182    SessionRequest request = new SessionRequest(183      new RequestId(UUID.randomUUID()),184      Instant.now(),185      Set.of(W3C),186      Set.of(caps),187      Map.of(),188      Map.of());189    continueOnceAddedToQueue(request);190    GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);191    Map<String, Object> topLevel = executeQuery(handler,192      "{ sessionsInfo { sessionQueueRequests } }");193    assertThat(topLevel).isEqualTo(194      singletonMap(195        "data", singletonMap(196          "sessionsInfo", singletonMap(197            "sessionQueueRequests", singletonList(JSON.toJson(caps))))));198  }199  @Test200  public void shouldBeReturnAnEmptyListIfQueueIsEmpty() {201    GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);202    Map<String, Object> topLevel = executeQuery(handler,203      "{ sessionsInfo { sessionQueueRequests } }");204    assertThat(topLevel).isEqualTo(205      singletonMap(206        "data", singletonMap(207          "sessionsInfo", singletonMap(208            "sessionQueueRequests", Collections.emptyList()))));209  }210  @Test211  public void shouldReturnAnEmptyListForNodesIfNoneAreRegistered() {212    GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);213    Map<String, Object> topLevel = executeQuery(handler, "{ nodesInfo { nodes { uri } } }");214    assertThat(topLevel).describedAs(topLevel.toString()).isEqualTo(215      singletonMap(216        "data", singletonMap(217          "nodesInfo", singletonMap(218            "nodes", Collections.emptyList()))));219  }220  @Test221  public void shouldBeAbleToGetUrlsOfAllNodes() throws URISyntaxException {222    Capabilities stereotype = new ImmutableCapabilities("cheese", "stilton");223    String nodeUri = "http://localhost:5556";224    Node node = LocalNode.builder(tracer, events, new URI(nodeUri), publicUri, registrationSecret)225      .add(stereotype, new SessionFactory() {226        @Override227        public Either<WebDriverException, ActiveSession> apply(228          CreateSessionRequest createSessionRequest) {229          return Either.left(new SessionNotCreatedException("Factory for testing"));230        }231        @Override232        public boolean test(Capabilities capabilities) {233          return false;234        }235      })236      .build();237    distributor.add(node);238    wait.until(obj -> distributor.getStatus().hasCapacity());239    GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);240    Map<String, Object> topLevel = executeQuery(handler, "{ nodesInfo { nodes { uri } } }");241    assertThat(topLevel).describedAs(topLevel.toString()).isEqualTo(242      singletonMap(243        "data", singletonMap(244          "nodesInfo", singletonMap(245            "nodes", singletonList(singletonMap("uri", nodeUri))))));246  }247  @Test248  public void shouldBeAbleToGetSessionCount() throws URISyntaxException {249    String nodeUrl = "http://localhost:5556";250    URI nodeUri = new URI(nodeUrl);251    Node node = LocalNode.builder(tracer, events, nodeUri, publicUri, registrationSecret)252      .add(caps, new TestSessionFactory((id, caps) -> new org.openqa.selenium.grid.data.Session(253        id,254        nodeUri,255        stereotype,256        caps,257        Instant.now()))).build();258    distributor.add(node);259    wait.until(obj -> distributor.getStatus().hasCapacity());260    Either<SessionNotCreatedException, CreateSessionResponse> response = distributor.newSession(sessionRequest);261    if (response.isRight()) {262      Session session = response.right().getSession();263      assertThat(session).isNotNull();264      GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);265      Map<String, Object> topLevel = executeQuery(handler,266        "{ grid { sessionCount } }");267      assertThat(topLevel).isEqualTo(268        singletonMap(269          "data", singletonMap(270            "grid", singletonMap(271              "sessionCount", 1L ))));272    } else {273      fail("Session creation failed", response.left());274    }275  }276  @Test277  public void shouldBeAbleToGetSessionInfo() throws URISyntaxException {278    String nodeUrl = "http://localhost:5556";279    URI nodeUri = new URI(nodeUrl);280    Node node = LocalNode.builder(tracer, events, nodeUri, publicUri, registrationSecret)281      .add(caps, new TestSessionFactory((id, caps) -> new org.openqa.selenium.grid.data.Session(282        id,283        nodeUri,284        stereotype,285        caps,286        Instant.now()))).build();287    distributor.add(node);288    wait.until(obj -> distributor.getStatus().hasCapacity());289    Either<SessionNotCreatedException, CreateSessionResponse> response = distributor.newSession(sessionRequest);290    if (response.isRight()) {291      Session session = response.right().getSession();292      assertThat(session).isNotNull();293      String sessionId = session.getId().toString();294      Set<Slot> slots = distributor.getStatus().getNodes().stream().findFirst().get().getSlots();295      Slot slot = slots.stream().findFirst().get();296      org.openqa.selenium.grid.graphql.Session graphqlSession =297        new org.openqa.selenium.grid.graphql.Session(298          sessionId,299          session.getCapabilities(),300          session.getStartTime(),301          session.getUri(),302          node.getId().toString(),303          node.getUri(),304          slot);305      String query = String.format(306        "{ session (id: \"%s\") { id, capabilities, startTime, uri } }", sessionId);307      GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);308      Map<String, Object> result = executeQuery(handler, query);309      assertThat(result).describedAs(result.toString()).isEqualTo(310        singletonMap(311          "data", singletonMap(312            "session", ImmutableMap.of(313              "id", sessionId,314              "capabilities", graphqlSession.getCapabilities(),315              "startTime", graphqlSession.getStartTime(),316              "uri", graphqlSession.getUri().toString()))));317    } else {318      fail("Session creation failed", response.left());319    }320  }321  @Test322  public void shouldBeAbleToGetNodeInfoForSession() throws URISyntaxException {323    String nodeUrl = "http://localhost:5556";324    URI nodeUri = new URI(nodeUrl);325    Node node = LocalNode.builder(tracer, events, nodeUri, publicUri, registrationSecret)326      .add(caps, new TestSessionFactory((id, caps) -> new org.openqa.selenium.grid.data.Session(327        id,328        nodeUri,329        stereotype,330        caps,331        Instant.now()))).build();332    distributor.add(node);333    wait.until(obj -> distributor.getStatus().hasCapacity());334    Either<SessionNotCreatedException, CreateSessionResponse> response = distributor.newSession(sessionRequest);335    if (response.isRight()) {336      Session session = response.right().getSession();337      assertThat(session).isNotNull();338      String sessionId = session.getId().toString();339      Set<Slot> slots = distributor.getStatus().getNodes().stream().findFirst().get().getSlots();340      Slot slot = slots.stream().findFirst().get();341      org.openqa.selenium.grid.graphql.Session graphqlSession =342        new org.openqa.selenium.grid.graphql.Session(343          sessionId,344          session.getCapabilities(),345          session.getStartTime(),346          session.getUri(),347          node.getId().toString(),348          node.getUri(),349          slot);350      String query = String.format("{ session (id: \"%s\") { nodeId, nodeUri } }", sessionId);351      GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);352      Map<String, Object> result = executeQuery(handler, query);353      assertThat(result).describedAs(result.toString()).isEqualTo(354        singletonMap(355          "data", singletonMap(356            "session", ImmutableMap.of(357              "nodeId", graphqlSession.getNodeId(),358              "nodeUri", graphqlSession.getNodeUri().toString()))));359    } else {360      fail("Session creation failed", response.left());361    }362  }363  @Test364  public void shouldBeAbleToGetSlotInfoForSession() throws URISyntaxException {365    String nodeUrl = "http://localhost:5556";366    URI nodeUri = new URI(nodeUrl);367    Node node = LocalNode.builder(tracer, events, nodeUri, publicUri, registrationSecret)368      .add(caps, new TestSessionFactory((id, caps) -> new org.openqa.selenium.grid.data.Session(369        id,370        nodeUri,371        stereotype,372        caps,373        Instant.now()))).build();374    distributor.add(node);375    wait.until(obj -> distributor.getStatus().hasCapacity());376    Either<SessionNotCreatedException, CreateSessionResponse> response = distributor.newSession(sessionRequest);377    if (response.isRight()) {378      Session session = response.right().getSession();379      assertThat(session).isNotNull();380      String sessionId = session.getId().toString();381      Set<Slot> slots = distributor.getStatus().getNodes().stream().findFirst().get().getSlots();382      Slot slot = slots.stream().findFirst().get();383      org.openqa.selenium.grid.graphql.Session graphqlSession =384        new org.openqa.selenium.grid.graphql.Session(385          sessionId,386          session.getCapabilities(),387          session.getStartTime(),388          session.getUri(),389          node.getId().toString(),390          node.getUri(),391          slot);392      org.openqa.selenium.grid.graphql.Slot graphqlSlot = graphqlSession.getSlot();393      String query = String.format(394        "{ session (id: \"%s\") { slot { id, stereotype, lastStarted } } }", sessionId);395      GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);396      Map<String, Object> result = executeQuery(handler, query);397      assertThat(result).describedAs(result.toString()).isEqualTo(398        singletonMap(399          "data", singletonMap(400            "session", singletonMap(401              "slot", ImmutableMap.of(402                "id", graphqlSlot.getId(),403                "stereotype", graphqlSlot.getStereotype(),404                "lastStarted", graphqlSlot.getLastStarted())))));405    } else {406      fail("Session creation failed", response.left());407    }408  }409  @Test410  public void shouldBeAbleToGetSessionDuration() throws URISyntaxException {411    String nodeUrl = "http://localhost:5556";412    URI nodeUri = new URI(nodeUrl);413    Node node = LocalNode.builder(tracer, events, nodeUri, publicUri, registrationSecret)414      .add(caps, new TestSessionFactory((id, caps) -> new org.openqa.selenium.grid.data.Session(415        id,416        nodeUri,417        stereotype,418        caps,419        Instant.now()))).build();420    distributor.add(node);421    wait.until(obj -> distributor.getStatus().hasCapacity());422    Either<SessionNotCreatedException, CreateSessionResponse> response = distributor.newSession(sessionRequest);423    if (response.isRight()) {424      Session session = response.right().getSession();425      assertThat(session).isNotNull();426      String sessionId = session.getId().toString();427      String query = String.format("{ session (id: \"%s\") { sessionDurationMillis } }", sessionId);428      GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);429      Map<String, Object> result = executeQuery(handler, query);430      assertThat(result)431        .containsOnlyKeys("data")432        .extracting("data").asInstanceOf(MAP).containsOnlyKeys("session")433        .extracting("session").asInstanceOf(MAP).containsOnlyKeys("sessionDurationMillis");434    } else {435      fail("Session creation failed", response.left());436    }437  }438  @Test439  public void shouldThrowExceptionWhenSessionNotFound() throws URISyntaxException {440    String nodeUrl = "http://localhost:5556";441    URI nodeUri = new URI(nodeUrl);442    Node node = LocalNode.builder(tracer, events, nodeUri, publicUri, registrationSecret)443      .add(caps, new TestSessionFactory((id, caps) -> new org.openqa.selenium.grid.data.Session(444        id,445        nodeUri,446        stereotype,447        caps,448        Instant.now()))).build();449    distributor.add(node);450    wait.until(obj -> distributor.getStatus().hasCapacity());451    String randomSessionId = UUID.randomUUID().toString();452    String query = "{ session (id: \"" + randomSessionId + "\") { sessionDurationMillis } }";453    GraphqlHandler handler = new GraphqlHandler(tracer, distributor, queue, publicUri, version);454    Map<String, Object> result = executeQuery(handler, query);455    assertThat(result)456      .containsEntry("data", null)457      .containsKey("errors")458      .extracting("errors").asInstanceOf(LIST).isNotEmpty()459      .element(0).asInstanceOf(MAP).containsKey("extensions")460      .extracting("extensions").asInstanceOf(MAP).containsKey("sessionId")461      .extracting("sessionId").isEqualTo(randomSessionId);462  }463  @Test464  public void shouldThrowExceptionWhenSessionIsEmpty() throws URISyntaxException {465    String nodeUrl = "http://localhost:5556";...Source:NewSessionQueuerTest.java  
...324    HttpClient client = new PassthroughHttpClient(local);325    remote = new RemoteNewSessionQueuer(tracer, client);326    HttpRequest request = createRequest(payload, POST, "/session");327    request.addHeader(SESSIONREQUEST_TIMESTAMP_HEADER,328                      Long.toString(1539091064));329    AtomicInteger count = new AtomicInteger();330    bus.addListener(NewSessionRequestEvent.listener(reqId -> {331      // Add to front of queue, when retry is triggered it will check if request timed out332      count.incrementAndGet();333      remote.retryAddToQueue(request, reqId);334    }));335    HttpResponse httpResponse = remote.addToQueue(request);336    assertEquals(count.get(),1);337    assertEquals(httpResponse.getStatus(), HTTP_INTERNAL_ERROR);338  }339  @Test340  public void shouldBeAbleToTimeoutARequestOnPoll() {341    Tracer tracer = DefaultTestTracer.createTracer();342    LocalNewSessionQueue sessionQueue = new LocalNewSessionQueue(343        tracer,344        bus,345        Duration.ofSeconds(4),346        Duration.ofSeconds(0));347    local = new LocalNewSessionQueuer(tracer, bus, sessionQueue);348    HttpClient client = new PassthroughHttpClient(local);349    remote = new RemoteNewSessionQueuer(tracer, client);350    AtomicBoolean isPresent = new AtomicBoolean();351    bus.addListener(NewSessionRequestEvent.listener(reqId -> {352      Optional<HttpRequest> request = remote.remove();353      isPresent.set(request.isPresent());354      bus.fire(355          new NewSessionRejectedEvent(356              new NewSessionErrorResponse(reqId, "Error")));357    }));358    HttpResponse httpResponse = remote.addToQueue(request);359    assertEquals(httpResponse.getStatus(), HTTP_INTERNAL_ERROR);360    assertThat(isPresent.get()).isFalse();361  }362  @Test363  public void shouldBeAbleToClearQueueAndRejectMultipleRequests() {364    ExecutorService executor = Executors.newFixedThreadPool(2);365    Callable<HttpResponse> callable = () -> remote.addToQueue(request);366    Future<HttpResponse> firstRequest = executor.submit(callable);367    Future<HttpResponse> secondRequest = executor.submit(callable);368    int count = 0;369    while (count < 2) {370      count += remote.clearQueue();371    }372    try {373      HttpResponse firstResponse = firstRequest.get(30, TimeUnit.SECONDS);374      HttpResponse secondResponse = secondRequest.get(30, TimeUnit.SECONDS);375      assertEquals(firstResponse.getStatus(), HTTP_INTERNAL_ERROR);376      assertEquals(secondResponse.getStatus(), HTTP_INTERNAL_ERROR);377    } catch (InterruptedException | ExecutionException | TimeoutException e) {378      fail("Could not create session");379    }380    executor.shutdown();381  }382  private HttpRequest createRequest(NewSessionPayload payload, HttpMethod httpMethod, String uri) {383    StringBuilder builder = new StringBuilder();384    try {385      payload.writeTo(builder);386    } catch (IOException e) {387      throw new UncheckedIOException(e);388    }389    HttpRequest request = new HttpRequest(httpMethod, uri);390    request.setContent(utf8String(builder.toString()));391    return request;392  }393}...Source:LocalDistributor.java  
...368        Map<String, EventAttributeValue> attributeMap = new HashMap<>();369        attributeMap.put(370          AttributeKey.LOGGER_CLASS.getKey(),371          EventAttribute.setValue(getClass().getName()));372        span.setAttribute(AttributeKey.REQUEST_ID.getKey(), reqId.toString());373        attributeMap.put(374          AttributeKey.REQUEST_ID.getKey(),375          EventAttribute.setValue(reqId.toString()));376        attributeMap.put("request", EventAttribute.setValue(sessionRequest.toString()));377        Either<SessionNotCreatedException, CreateSessionResponse> response =378          newSession(sessionRequest);379        if (response.isRight()) {380          CreateSessionResponse sessionResponse = response.right();381          NewSessionResponse newSessionResponse =382            new NewSessionResponse(383              reqId,384              sessionResponse.getSession(),385              sessionResponse.getDownstreamEncodedResponse());386          bus.fire(new NewSessionResponseEvent(newSessionResponse));387        } else {388          SessionNotCreatedException exception = response.left();389          if (exception instanceof RetrySessionRequestException) {390            boolean retried = sessionRequests.retryAddToQueue(sessionRequest, reqId);...Source:LocalNewSessionQueueTest.java  
...99    long timestamp = Instant.now().getEpochSecond();100    ImmutableCapabilities chromeCaps = new ImmutableCapabilities("browserName", "chrome");101    NewSessionPayload chromePayload = NewSessionPayload.create(chromeCaps);102    HttpRequest chromeRequest = createRequest(chromePayload, POST, "/session");103    chromeRequest.addHeader(SESSIONREQUEST_TIMESTAMP_HEADER, Long.toString(timestamp));104    RequestId chromeRequestId = new RequestId(UUID.randomUUID());105    ImmutableCapabilities firefoxCaps = new ImmutableCapabilities("browserName", "firefox");106    NewSessionPayload firefoxpayload = NewSessionPayload.create(firefoxCaps);107    HttpRequest firefoxRequest = createRequest(firefoxpayload, POST, "/session");108    firefoxRequest.addHeader(SESSIONREQUEST_TIMESTAMP_HEADER, Long.toString(timestamp));109    RequestId firefoxRequestId = new RequestId(UUID.randomUUID());110    boolean addedChromeRequest = sessionQueue.offerFirst(chromeRequest, chromeRequestId);111    assertTrue(addedChromeRequest);112    boolean addFirefoxRequest = sessionQueue.offerFirst(firefoxRequest, firefoxRequestId);113    assertTrue(addFirefoxRequest);114    Optional<HttpRequest> polledChromeRequest = sessionQueue.remove(chromeRequestId);115    assertTrue(polledChromeRequest.isPresent());116    assertEquals(chromeRequest, polledChromeRequest.get());117    Optional<HttpRequest> polledFirefoxRequest = sessionQueue.remove(firefoxRequestId);118    assertTrue(polledFirefoxRequest.isPresent());119    assertEquals(firefoxRequest, polledFirefoxRequest.get());120  }121  @Test122  public void shouldAddTimestampHeader() {123    boolean added = sessionQueue.offerLast(expectedSessionRequest, requestId);124    assertTrue(added);125    Optional<HttpRequest> receivedRequest = sessionQueue.remove(requestId);126    assertTrue(receivedRequest.isPresent());127    HttpRequest request = receivedRequest.get();128    assertEquals(expectedSessionRequest, request);129    assertTrue(request.getHeader(NewSessionQueue.SESSIONREQUEST_TIMESTAMP_HEADER) != null);130  }131  @Test132  public void shouldAddRequestIdHeader() {133    boolean added = sessionQueue.offerLast(expectedSessionRequest, requestId);134    assertTrue(added);135    Optional<HttpRequest> receivedRequest = sessionQueue.remove(requestId);136    assertTrue(receivedRequest.isPresent());137    HttpRequest request = receivedRequest.get();138    assertEquals(expectedSessionRequest, request);139    String polledRequestId = request.getHeader(NewSessionQueue.SESSIONREQUEST_ID_HEADER);140    assertTrue(polledRequestId != null);141    assertEquals(requestId, new RequestId(UUID.fromString(polledRequestId)));142  }143  @Test144  public void shouldBeAbleToAddToFrontOfQueue() {145    long timestamp = Instant.now().getEpochSecond();146    ImmutableCapabilities chromeCaps = new ImmutableCapabilities("browserName", "chrome");147    NewSessionPayload chromePayload = NewSessionPayload.create(chromeCaps);148    HttpRequest chromeRequest = createRequest(chromePayload, POST, "/session");149    chromeRequest.addHeader(SESSIONREQUEST_TIMESTAMP_HEADER, Long.toString(timestamp));150    RequestId chromeRequestId = new RequestId(UUID.randomUUID());151    ImmutableCapabilities firefoxCaps = new ImmutableCapabilities("browserName", "firefox");152    NewSessionPayload firefoxpayload = NewSessionPayload.create(firefoxCaps);153    HttpRequest firefoxRequest = createRequest(firefoxpayload, POST, "/session");154    firefoxRequest.addHeader(SESSIONREQUEST_TIMESTAMP_HEADER, Long.toString(timestamp));155    RequestId firefoxRequestId = new RequestId(UUID.randomUUID());156    boolean addedChromeRequest = sessionQueue.offerFirst(chromeRequest, chromeRequestId);157    assertTrue(addedChromeRequest);158    boolean addFirefoxRequest = sessionQueue.offerFirst(firefoxRequest, firefoxRequestId);159    assertTrue(addFirefoxRequest);160    Optional<HttpRequest> polledFirefoxRequest = sessionQueue.remove(firefoxRequestId);161    assertTrue(polledFirefoxRequest.isPresent());162    assertEquals(firefoxRequest, polledFirefoxRequest.get());163    Optional<HttpRequest> polledChromeRequest = sessionQueue.remove(chromeRequestId);164    assertTrue(polledChromeRequest.isPresent());165    assertEquals(chromeRequest, polledChromeRequest.get());166  }167  @Test168  public void shouldBeClearAPopulatedQueue() {169    sessionQueue.offerLast(expectedSessionRequest, new RequestId(UUID.randomUUID()));170    sessionQueue.offerLast(expectedSessionRequest, new RequestId(UUID.randomUUID()));171    int count = sessionQueue.clear();172    assertEquals(count, 2);173  }174  @Test175  public void shouldBeClearAEmptyQueue() {176    int count = sessionQueue.clear();177    assertEquals(count, 0);178  }179  @Test180  public void shouldBeAbleToGetQueueSize() {181    boolean added = sessionQueue.offerLast(expectedSessionRequest, requestId);182    assertTrue(added);183    int size = sessionQueue.getQueueSize();184    assertEquals(1, size);185  }186  @Test187  public void shouldBeAbleToGetQueueContents() {188    long timestamp = Instant.now().getEpochSecond();189    ImmutableCapabilities chromeCaps = new ImmutableCapabilities(190      "browserName", "chrome",191      "platform", "mac",192      "version", "87");193    NewSessionPayload chromePayload = NewSessionPayload.create(chromeCaps);194    HttpRequest chromeRequest = createRequest(chromePayload, POST, "/session");195    chromeRequest.addHeader(SESSIONREQUEST_TIMESTAMP_HEADER, Long.toString(timestamp));196    RequestId chromeRequestId = new RequestId(UUID.randomUUID());197    boolean addedChromeRequest = sessionQueue.offerLast(chromeRequest, chromeRequestId);198    assertTrue(addedChromeRequest);199    ImmutableCapabilities firefoxCaps = new ImmutableCapabilities(200      "browserName", "firefox",201      "platform", "windows",202      "version", "84");203    NewSessionPayload firefoxPayload = NewSessionPayload.create(firefoxCaps);204    HttpRequest firefoxRequest = createRequest(firefoxPayload, POST, "/session");205    firefoxRequest.addHeader(SESSIONREQUEST_TIMESTAMP_HEADER, Long.toString(timestamp));206    RequestId firefoxRequestId = new RequestId(UUID.randomUUID());207    boolean addFirefoxRequest = sessionQueue.offerLast(firefoxRequest, firefoxRequestId);208    assertTrue(addFirefoxRequest);209    List<Object> response = sessionQueue.getQueuedRequests();210    assertThat(response).isNotNull();211    assertEquals(2, response.size());212    assertEquals(chromeCaps, response.get(0));213    assertEquals(firefoxCaps, response.get(1));214  }215  @Test216  public void shouldBeAbleToRemoveRequestsOnTimeout() throws InterruptedException {217    NewSessionQueue localSessionQueue = new LocalNewSessionQueue(218      DefaultTestTracer.createTracer(),219      bus,220      Duration.ofSeconds(30),221      Duration.ofSeconds(1));222    CountDownLatch latch = new CountDownLatch(1);223    bus.addListener(NewSessionRejectedEvent.listener(reqId -> latch.countDown()));224    boolean added = localSessionQueue.offerLast(expectedSessionRequest, requestId);225    assertTrue(added);226    boolean requestExpired = latch.await(2, TimeUnit.MINUTES);227    assertThat(requestExpired).isTrue();228    assertThat(localSessionQueue.getQueueSize()).isZero();229  }230  private HttpRequest createRequest(NewSessionPayload payload, HttpMethod httpMethod, String uri) {231    StringBuilder builder = new StringBuilder();232    try {233      payload.writeTo(builder);234    } catch (IOException e) {235      throw new UncheckedIOException(e);236    }237    HttpRequest request = new HttpRequest(httpMethod, uri);238    request.setContent(utf8String(builder.toString()));239    return request;240  }241}...Source:LocalNewSessionQueue.java  
...83    try {84      added = sessionRequests.offerLast(request);85      addRequestHeaders(request, requestId);86      attributeMap87        .put(AttributeKey.REQUEST_ID.getKey(), EventAttribute.setValue(requestId.toString()));88      attributeMap.put("request.added", EventAttribute.setValue(added));89      span.addEvent("Add new session request to the queue", attributeMap);90      return added;91    } finally {92      writeLock.unlock();93      span.close();94      if (added) {95        bus.fire(new NewSessionRequestEvent(requestId));96      }97    }98  }99  @Override100  public boolean offerFirst(HttpRequest request, RequestId requestId) {101    Require.nonNull("New Session request", request);...Source:AddBackToSessionQueue.java  
...42  @Override43  public HttpResponse execute(HttpRequest req) {44    try (Span span = newSpanAsChildOf(tracer, req, "sessionqueue.retry")) {45      HTTP_REQUEST.accept(span, req);46      span.setAttribute(AttributeKey.REQUEST_ID.getKey(), id.toString());47      SessionRequest sessionRequest = Contents.fromJson(req, SessionRequest.class);48      boolean value = newSessionQueue.retryAddToQueue(sessionRequest);49      span.setAttribute("request.retry", value);50      HttpResponse response = new HttpResponse()51        .setContent(asJson(singletonMap("value", value)));52      HTTP_RESPONSE.accept(span, response);53      return response;54    }55  }56}...Source:RequestId.java  
...26  public UUID toUuid() {27    return uuid;28  }29  @Override30  public String toString() {31    return uuid.toString();32  }33  @Override34  public boolean equals(Object o) {35    if (!(o instanceof RequestId)) {36      return false;37    }38    RequestId that = (RequestId) o;39    return Objects.equals(this.uuid, that.uuid);40  }41  @Override42  public int hashCode() {43    return Objects.hash(uuid);44  }45  private Object toJson() {...toString
Using AI Code Generation
1import org.openqa.selenium.grid.data.RequestId;2public class RequestIdExample {3  public static void main(String[] args) {4    RequestId id = new RequestId("1234-5678-9012-3456");5    System.out.println(id.toString());6  }7}toString
Using AI Code Generation
1import org.openqa.selenium.grid.data.RequestId;2public class RequestIdToStringExample {3    public static void main(String[] args) {4        RequestId requestId = new RequestId("1234-5678-1234-5678");5        System.out.println("RequestId: "+requestId.toString());6    }7}toString
Using AI Code Generation
1public class RequestId {2  private final String id;3  public RequestId(String id) {4    this.id = id;5  }6  public String toString() {7    return id;8  }9}LambdaTest’s Selenium 4 tutorial is covering every aspects of Selenium 4 testing with examples and best practices. Here you will learn basics, such as how to upgrade from Selenium 3 to Selenium 4, to some advanced concepts, such as Relative locators and Selenium Grid 4 for Distributed testing. Also will learn new features of Selenium 4, such as capturing screenshots of specific elements, opening a new tab or window on the browser, and new protocol adoptions.
Upgrading From Selenium 3 To Selenium 4?: In this chapter, learn in detail how to update Selenium 3 to Selenium 4 for Java binding. Also, learn how to upgrade while using different build tools such as Maven or Gradle and get comprehensive guidance for upgrading Selenium.
What’s New In Selenium 4 & What’s Being Deprecated? : Get all information about new implementations in Selenium 4, such as W3S protocol adaption, Optimized Selenium Grid, and Enhanced Selenium IDE. Also, learn what is deprecated for Selenium 4, such as DesiredCapabilites and FindsBy methods, etc.
Selenium 4 With Python: Selenium supports all major languages, such as Python, C#, Ruby, and JavaScript. In this chapter, learn how to install Selenium 4 for Python and the features of Python in Selenium 4, such as Relative locators, Browser manipulation, and Chrom DevTool protocol.
Selenium 4 Is Now W3C Compliant: JSON Wireframe protocol is retiring from Selenium 4, and they are adopting W3C protocol to learn in detail about the advantages and impact of these changes.
How To Use Selenium 4 Relative Locator? : Selenium 4 came with new features such as Relative Locators that allow constructing locators with reference and easily located constructors nearby. Get to know its different use cases with examples.
Selenium Grid 4 Tutorial For Distributed Testing: Selenium Grid 4 allows you to perform tests over different browsers, OS, and device combinations. It also enables parallel execution browser testing, reads up on various features of Selenium Grid 4 and how to download it, and runs a test on Selenium Grid 4 with best practices.
Selenium Video Tutorials: Binge on video tutorials on Selenium by industry experts to get step-by-step direction from automating basic to complex test scenarios with Selenium.
LambdaTest also provides certification for Selenium testing to accelerate your career in Selenium automation testing.
Get 100 minutes of automation test minutes FREE!!
