/* * Copyright (C) 2012-2015 DataStax Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.datastax.driver.core; import com.datastax.driver.core.exceptions.UnsupportedFeatureException; import org.testng.annotations.Test; import static org.testng.Assert.*; /** * Test ResultSet paging correct behavior. */ public class FetchingTest extends CCMTestsSupport { @Override public void onTestContextInitialized() { execute("CREATE TABLE test (k text, v int, PRIMARY KEY (k, v))"); } @Test(groups = "short") public void simplePagingTest() { try { // Insert data String key = "paging_test"; for (int i = 0; i < 100; i++) session().execute(String.format("INSERT INTO test (k, v) VALUES ('%s', %d)", key, i)); SimpleStatement st = new SimpleStatement(String.format("SELECT v FROM test WHERE k='%s'", key)); st.setFetchSize(5); // Ridiculously small fetch size for testing purpose. Don't do at home. ResultSet rs = session().execute(st); assertFalse(rs.isFullyFetched()); for (int i = 0; i < 100; i++) { // isExhausted makes sure we do fetch if needed assertFalse(rs.isExhausted()); assertEquals(rs.getAvailableWithoutFetching(), 5 - (i % 5)); assertEquals(rs.one().getInt(0), i); } assertTrue(rs.isExhausted()); assertTrue(rs.isFullyFetched()); } catch (UnsupportedFeatureException e) { // This is expected when testing the protocol v1 assertEquals(cluster().getConfiguration().getProtocolOptions().getProtocolVersion(), ProtocolVersion.V1); } } }