    @Test
    @SuppressWarnings("unchecked")
    public void testGetRows() throws Exception {

        EnumSet<Columns> columns = EnumSet.of(Columns.module_id, Columns.module_name);
        Rows<String, String> mockRows = mock(Rows.class);
        Row<String, String> row1 = mock(Row.class);
        Row<String, String> row2 = mock(Row.class);
        List<Row<String, String>> rowList = Arrays.asList(row1, row2);

        when(mockRows.iterator()).thenReturn(rowList.iterator());

        FutureTask<Rows<String, String>> future = new FutureTask<Rows<String, String>>(new Runnable() {
            @Override
            public void run() {
            }
        }, mockRows);
        ExecutorService executor = Executors.newFixedThreadPool(1);
        executor.execute(future);
        when(gateway.selectAsync(anyString())).thenReturn(future);

        repository.getRows(columns);
        List<String> selectList = new ArrayList<String>();
        for (int shardNum = 0; shardNum < config.getShardCount(); shardNum++) {
            selectList.add(repository.generateSelectByShardCql(columns, shardNum));
        }

        InOrder inOrder = inOrder(gateway);
        for (int shardNum = 0; shardNum < config.getShardCount(); shardNum++) {
            inOrder.verify(gateway).selectAsync(selectList.get(shardNum));
        }
    }