Search in sources :

Example 1 with Ready

use of com.datastax.oss.protocol.internal.response.Ready in project java-driver by datastax.

the class ProtocolInitHandlerTest method should_initialize_with_keyspace.

@Test
public void should_initialize_with_keyspace() {
    DriverChannelOptions options = DriverChannelOptions.builder().withKeyspace(CqlIdentifier.fromCql("ks")).build();
    channel.pipeline().addLast(ChannelFactory.INIT_HANDLER_NAME, new ProtocolInitHandler(internalDriverContext, DefaultProtocolVersion.V4, null, END_POINT, options, heartbeatHandler, false));
    ChannelFuture connectFuture = channel.connect(new InetSocketAddress("localhost", 9042));
    writeInboundFrame(readOutboundFrame(), new Ready());
    writeInboundFrame(readOutboundFrame(), TestResponses.clusterNameResponse("someClusterName"));
    Frame requestFrame = readOutboundFrame();
    assertThat(requestFrame.message).isInstanceOf(Query.class);
    assertThat(((Query) requestFrame.message).query).isEqualTo("USE \"ks\"");
    writeInboundFrame(requestFrame, new SetKeyspace("ks"));
    assertThat(connectFuture).isSuccess();
}
Also used : ChannelFuture(io.netty.channel.ChannelFuture) Ready(com.datastax.oss.protocol.internal.response.Ready) Frame(com.datastax.oss.protocol.internal.Frame) Query(com.datastax.oss.protocol.internal.request.Query) InetSocketAddress(java.net.InetSocketAddress) SetKeyspace(com.datastax.oss.protocol.internal.response.result.SetKeyspace) Test(org.junit.Test)

Example 2 with Ready

use of com.datastax.oss.protocol.internal.response.Ready in project java-driver by datastax.

the class ProtocolInitHandlerTest method should_initialize_with_events.

@Test
public void should_initialize_with_events() {
    List<String> eventTypes = ImmutableList.of("foo", "bar");
    EventCallback eventCallback = mock(EventCallback.class);
    DriverChannelOptions driverChannelOptions = DriverChannelOptions.builder().withEvents(eventTypes, eventCallback).build();
    channel.pipeline().addLast(ChannelFactory.INIT_HANDLER_NAME, new ProtocolInitHandler(internalDriverContext, DefaultProtocolVersion.V4, null, END_POINT, driverChannelOptions, heartbeatHandler, false));
    ChannelFuture connectFuture = channel.connect(new InetSocketAddress("localhost", 9042));
    writeInboundFrame(readOutboundFrame(), new Ready());
    writeInboundFrame(readOutboundFrame(), TestResponses.clusterNameResponse("someClusterName"));
    Frame requestFrame = readOutboundFrame();
    assertThat(requestFrame.message).isInstanceOf(Register.class);
    assertThat(((Register) requestFrame.message).eventTypes).containsExactly("foo", "bar");
    writeInboundFrame(requestFrame, new Ready());
    assertThat(connectFuture).isSuccess();
}
Also used : ChannelFuture(io.netty.channel.ChannelFuture) Ready(com.datastax.oss.protocol.internal.response.Ready) Frame(com.datastax.oss.protocol.internal.Frame) Register(com.datastax.oss.protocol.internal.request.Register) InetSocketAddress(java.net.InetSocketAddress) Test(org.junit.Test)

Example 3 with Ready

use of com.datastax.oss.protocol.internal.response.Ready in project java-driver by datastax.

the class ChannelFactoryClusterNameTest method should_set_cluster_name_from_first_connection.

@Test
public void should_set_cluster_name_from_first_connection() {
    // Given
    when(defaultProfile.isDefined(DefaultDriverOption.PROTOCOL_VERSION)).thenReturn(false);
    when(protocolVersionRegistry.highestNonBeta()).thenReturn(DefaultProtocolVersion.V4);
    ChannelFactory factory = newChannelFactory();
    // When
    CompletionStage<DriverChannel> channelFuture = factory.connect(SERVER_ADDRESS, DriverChannelOptions.DEFAULT, NoopNodeMetricUpdater.INSTANCE);
    writeInboundFrame(readOutboundFrame(), TestResponses.supportedResponse("mock_key", "mock_value"));
    writeInboundFrame(readOutboundFrame(), new Ready());
    writeInboundFrame(readOutboundFrame(), TestResponses.clusterNameResponse("mockClusterName"));
    // Then
    assertThatStage(channelFuture).isSuccess();
    assertThat(factory.getClusterName()).isEqualTo("mockClusterName");
}
Also used : Ready(com.datastax.oss.protocol.internal.response.Ready) Test(org.junit.Test)

Example 4 with Ready

use of com.datastax.oss.protocol.internal.response.Ready in project java-driver by datastax.

the class ChannelFactorySupportedOptionsTest method should_query_supported_options_on_first_channel.

@Test
public void should_query_supported_options_on_first_channel() throws Throwable {
    // Given
    when(defaultProfile.isDefined(DefaultDriverOption.PROTOCOL_VERSION)).thenReturn(false);
    when(protocolVersionRegistry.highestNonBeta()).thenReturn(DefaultProtocolVersion.V4);
    ChannelFactory factory = newChannelFactory();
    // When
    CompletionStage<DriverChannel> channelFuture1 = factory.connect(SERVER_ADDRESS, DriverChannelOptions.DEFAULT, NoopNodeMetricUpdater.INSTANCE);
    writeInboundFrame(readOutboundFrame(), TestResponses.supportedResponse("mock_key", "mock_value"));
    writeInboundFrame(readOutboundFrame(), new Ready());
    writeInboundFrame(readOutboundFrame(), TestResponses.clusterNameResponse("mockClusterName"));
    // Then
    assertThatStage(channelFuture1).isSuccess();
    DriverChannel channel1 = channelFuture1.toCompletableFuture().get();
    assertThat(channel1.getOptions()).containsKey("mock_key");
    assertThat(channel1.getOptions().get("mock_key")).containsOnly("mock_value");
    // When
    CompletionStage<DriverChannel> channelFuture2 = factory.connect(SERVER_ADDRESS, DriverChannelOptions.DEFAULT, NoopNodeMetricUpdater.INSTANCE);
    writeInboundFrame(readOutboundFrame(), new Ready());
    writeInboundFrame(readOutboundFrame(), TestResponses.clusterNameResponse("mockClusterName"));
    // Then
    assertThatStage(channelFuture2).isSuccess();
    DriverChannel channel2 = channelFuture2.toCompletableFuture().get();
    assertThat(channel2.getOptions()).isNull();
}
Also used : Ready(com.datastax.oss.protocol.internal.response.Ready) Test(org.junit.Test)

Example 5 with Ready

use of com.datastax.oss.protocol.internal.response.Ready in project java-driver by datastax.

the class ChannelFactoryTestBase method completeSimpleChannelInit.

/**
 * Simulate the sequence of roundtrips to initialize a simple channel without authentication or
 * keyspace (avoids repeating it in subclasses).
 */
protected void completeSimpleChannelInit() {
    Frame requestFrame = readOutboundFrame();
    assertThat(requestFrame.message).isInstanceOf(Options.class);
    writeInboundFrame(requestFrame, TestResponses.supportedResponse("mock_key", "mock_value"));
    requestFrame = readOutboundFrame();
    assertThat(requestFrame.message).isInstanceOf(Startup.class);
    writeInboundFrame(requestFrame, new Ready());
    requestFrame = readOutboundFrame();
    writeInboundFrame(requestFrame, TestResponses.clusterNameResponse("mockClusterName"));
}
Also used : Ready(com.datastax.oss.protocol.internal.response.Ready) Frame(com.datastax.oss.protocol.internal.Frame)

Aggregations

Ready (com.datastax.oss.protocol.internal.response.Ready)16 Test (org.junit.Test)15 Frame (com.datastax.oss.protocol.internal.Frame)12 ChannelFuture (io.netty.channel.ChannelFuture)10 InetSocketAddress (java.net.InetSocketAddress)10 Query (com.datastax.oss.protocol.internal.request.Query)4 Register (com.datastax.oss.protocol.internal.request.Register)2 Error (com.datastax.oss.protocol.internal.response.Error)2 SetKeyspace (com.datastax.oss.protocol.internal.response.result.SetKeyspace)2 AuthProvider (com.datastax.oss.driver.api.core.auth.AuthProvider)1 ImmutableList (com.datastax.oss.driver.shaded.guava.common.collect.ImmutableList)1 UseDataProvider (com.tngtech.java.junit.dataprovider.UseDataProvider)1 List (java.util.List)1