diff --git a/CHANGELOG.md b/CHANGELOG.md index 34142d599..a39ba8224 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,29 @@ +2.2.0 +=========== +October 29, 2015 + +Features +-------- +* Refactored the schema metadata API (`CassSchema`) to use concrete types + (`CassKeyspaceMeta`, `CassTableMeta`, etc.) instead of the single + `CassSchemaMeta` type. +* Added support for UDF/UDA schema metadata +* Added support for whitelist filtering i.e. whitelist load balancing policy + +Other +-------- +* Fixed `Address::compare()` issue that cause invalid comparisons for IPv4 +* Fixed issue that caused `StreamManager` to generate invalid stream IDs in + Windows release builds. +* Fixed issue where `cass_cluster_set_protocol_version()` would return an error + for protocol versions higher than v3 +* Changed the default consistency from `CASS_CONSISTENCY_ONE` to + `CASS_CONSISTENCY_LOCAL_QUORUM` +* When using prepared statements with protocol v4 (and higher) the driver will + use partition key metadata returned in the prepared response instead of using + schema metadata. +* Improved the performance of UUID to string and UUID from string conversions + 2.2.0-beta1 =========== September 21, 2015 diff --git a/README.md b/README.md index 54e74eff3..3717bfd06 100644 --- a/README.md +++ b/README.md @@ -13,17 +13,15 @@ Cassandra's native protocol and Cassandra Query Language v3. - Mailing List: https://groups.google.com/a/lists.datastax.com/forum/#!forum/cpp-driver-user - IRC: [#datastax-drivers on `irc.freenode.net `](http://webchat.freenode.net/?channels=datastax-drivers) -## What's New in 2.2 Beta1 +## What's New in 2.2 - Support for new Cassandra 2.2 datatypes: `tinyint`, `smallint`, `date` and `time` - Support for custom payloads - Support for server-side warnings - -## Upgrading from 1.0 to 2.0 - -There were a couple breaking API changes between 1.0 and 2.0 that are -documented [here](http://www.datastax.com/dev/blog/datastax-c-driver-2-0-released). +- UDF/UDA metadata +- Whitelist load balancing policy +- Default consistency has been changed from `ONE` to `LOCAL_QUORUM` ## Features - [Asynchronous API] diff --git a/docs.yaml b/docs.yaml index a93dc2819..7abe24b94 100644 --- a/docs.yaml +++ b/docs.yaml @@ -23,8 +23,10 @@ sections: INLINE_SOURCES = NO versions: - - name: v2.1 + - name: v2.2 ref: HEAD + - name: v2.1 + ref: 2c97015988e0a9e9342b233db5f37ca9386e4d7d - name: v2.0 ref: fc9c25a3db879894d40306642864413ef8f7d979 - name: v1.0 diff --git a/include/cassandra.h b/include/cassandra.h index adc8797b1..fa3b5258d 100644 --- a/include/cassandra.h +++ b/include/cassandra.h @@ -53,7 +53,7 @@ #define CASS_VERSION_MAJOR 2 #define CASS_VERSION_MINOR 2 #define CASS_VERSION_PATCH 0 -#define CASS_VERSION_SUFFIX "beta1" +#define CASS_VERSION_SUFFIX "" #ifdef __cplusplus extern "C" { diff --git a/packaging/build_deb.sh b/packaging/build_deb.sh index 022bfda4a..3913b9958 100755 --- a/packaging/build_deb.sh +++ b/packaging/build_deb.sh @@ -12,7 +12,7 @@ function check_command { check_command "dch" "debhelper" check_command "lsb_release" "lsb-release" -version="2.2.0~beta1" +version="2.2.0" release=1 dist=$(lsb_release -s -c) base="cassandra-cpp-driver-$version" diff --git a/packaging/build_rpm.sh b/packaging/build_rpm.sh index a810d441c..970cdb8a8 100755 --- a/packaging/build_rpm.sh +++ b/packaging/build_rpm.sh @@ -17,7 +17,7 @@ if [[ ! -z $1 ]]; then arch=$1 fi -version="2.2.0beta1" +version="2.2.0" base="cassandra-cpp-driver-$version" archive="$base.tar.gz" files="CMakeLists.txt cmake_uninstall.cmake.in include src README.md LICENSE.txt" diff --git a/topics/README.md b/topics/README.md index d95e26806..068f12c7f 100644 --- a/topics/README.md +++ b/topics/README.md @@ -150,7 +150,7 @@ Each I/O thread maintains a small number of connections for each node in the Cassandra cluster and each of those connections can handle several simultaneous requests using pipelining. Asynchronous I/O and pipelining together allow each connection to handle several (up to 128 requests with protocol v1/v2 and 32k with -protocol v3) in-flight requests concurrently. This significantly reduces the +protocol v3/v4) in-flight requests concurrently. This significantly reduces the number of connections required to be open to Cassandra and allows the driver to batch requests destined for the same node. @@ -175,7 +175,6 @@ Here are some features that are missing from the C/C++ driver, but are included - Event registration and notification - Callback interfaces for load balancing, authentication, reconnection and retry - Generic SASL authentication interface -- [User Defined Type (UDT)](http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/cqlRefUDType.html) [`cass_int32_t`]: http://datastax.github.io/cpp-driver/api/cassandra.h/#cass-int32-t [`cass_result_first_row()`]: http://datastax.github.io/cpp-driver/api/CassResult/#cass-result-first-row diff --git a/topics/basics/README.md b/topics/basics/README.md index 2d827b8f3..b6547e50c 100644 --- a/topics/basics/README.md +++ b/topics/basics/README.md @@ -12,90 +12,114 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + + - + + + + + + + + + + + + + + + + + + + + + + + +
DriverCassandraCassandra Type(s)Driver Type Supported Versions
cass_int32_t intcass_int32_t 1.2+
cass_int64_t bigint, counter, timestampcass_int64_t 1.2+
cass_float_t floatcass_float_t 1.2+
cass_double_t doublecass_double_t 1.2+
cass_boot_t booleancass_boot_t 1.2+
const char* ascii, text, varcharconst char* 1.2+
const cass_byte_t* blob, varintconst cass_byte_t* 1.2+
CassUuid uuid, timeuuidCassUuid 1.2+
CassInet inetCassInet 1.2+
const cass_byte_t* (varint) and a cass_int32_t (scale) decimalconst cass_byte_t* (varint) and a cass_int32_t (scale) 1.2+
CassCollection list, map, setCassCollection 1.2+
CassTuple tupleCassTuple 2.1+
user defined type CassUserTypetype 2.1+
tinyintcass_int8_t2.2+
smallintcass_int16_t2.2+
datecass_uint32_t2.2+
timecass_int64_t2.2+
diff --git a/topics/basics/batches/README.md b/topics/basics/batches/README.md index bb1dc588a..b6cae46d3 100644 --- a/topics/basics/batches/README.md +++ b/topics/basics/batches/README.md @@ -1,9 +1,9 @@ # Batches -Batches can be used to group multiple mutations (`UPDATE`, `INSERT`, `DELETE`) together into a single statement; simple or perpared. There are three different types of batches supported by Cassandra 2.0 or later. +Batches can be used to group multiple mutations (`UPDATE`, `INSERT`, `DELETE`) together into a single statement; simple or prepared. There are three different types of batches supported by Cassandra 2.0 or later. -* `CASS_BATCH_TYPE_LOGGED` is used to make sure that multiple mutations across multiple partitions happen atomically, that is, all the included mutations will eventually succeed. However, there is a performance penalty imposed by atomcity guarantee. -* `CASS_BATCH_TYPE_UNLOGGED` is generally used to group mutations for a single partition and do not suffer from the performance penalty imposed by logged batches, but there is no atomicty guarantee for multi-partition updates. +* `CASS_BATCH_TYPE_LOGGED` is used to make sure that multiple mutations across multiple partitions happen atomically, that is, all the included mutations will eventually succeed. However, there is a performance penalty imposed by atomicity guarantee. +* `CASS_BATCH_TYPE_UNLOGGED` is generally used to group mutations for a single partition and do not suffer from the performance penalty imposed by logged batches, but there is no atomicity guarantee for multi-partition updates. * `CASS_BATCH_TYPE_COUNTER` is used to group counters updates. **Important**: Be careful when using batches as a [performance optimization](http://www.datastax.com/documentation/cql/3.1/cql/cql_using/useBatch.html). diff --git a/topics/basics/binding_parameters/README.md b/topics/basics/binding_parameters/README.md index a4793780b..5aabbc48e 100644 --- a/topics/basics/binding_parameters/README.md +++ b/topics/basics/binding_parameters/README.md @@ -29,25 +29,12 @@ cass_statement_bind_string_by_name(statement, "column1", "abc"); cass_statement_free(statement); ``` -## Large Values +## Unbound parameters -The data of values bound to a statement are copied into the statement. That means that values bound to statements can be freed immediately after being bound. However, this might be problematic for large values so the driver provides `cass_statement_bind_custom()` which allocates a buffer where the large values can be directly stored avoiding an extra allocation and copy. - -```c -/* Create a statement with two parameters */ -CassStatement* statement - = cass_statement_new("INSERT INTO table1 (column1, column2) VALUES (?, ?)", 2); - -cass_statement_bind_string(statement, 0, "abc"); - -cass_byte_t* bytes; -cass_statement_bind_custom(statement, 1, 8 * 1024 * 1024, &bytes); - -/* 'bytes' then can be used in the application to store a large value */ - -/* Execute statment */ - -``` +When using Cassandra 2.2+ the driver will send a special `unset` value for +unbound parameters (leaving the unbound column unaffected). If using older +versions of Cassandra (2.1 and below) the driver will return an error for +unbound parameters. ## Constructing Collections diff --git a/topics/basics/consistency/README.md b/topics/basics/consistency/README.md index 38b7258d6..9e4b3fef8 100644 --- a/topics/basics/consistency/README.md +++ b/topics/basics/consistency/README.md @@ -1,6 +1,14 @@ # Consistency -A setting that defines a successful write or read by the number of cluster replicas that acknowledge the write or respond to the read request, respectively. +A setting that defines a successful write or read by the number of cluster +replicas that acknowledge the write or respond to the read request, +respectively. + +## Default consistency + +The default consistency is now `CASS_CONSISTENCY_LOCAL_QUORUM` for driver +versions 2.2 and above it was `CASS_CONSISTENCY_ONE` for all previous versions +(2.1 and below). ## Consistency Levels diff --git a/topics/basics/data_types/README.md b/topics/basics/data_types/README.md index 5d54f7d44..aa939c6d6 100644 --- a/topics/basics/data_types/README.md +++ b/topics/basics/data_types/README.md @@ -21,22 +21,26 @@ CREATE TYPE person (name text, **Important**: Any `const [CassDataType]*` object doesn't need to be freed. It's lifetime is bound to the object it came from. -UDT data types can be retrieved using a [`CassSchema`] object. The resulting +UDT data types can be retrieved using a [`CassSchemaMeta`] object. The resulting data type object can be used to construct a new [`CassUserType`] object using [`cass_user_type_new_from_data_type()`]. ```c /* Get schema object (this should be cached) */ -const CassSchema* schema = cass_session_get_schema(session); +const CassSchemaMeta* schema_meta = cass_session_get_schema_meta(session); + +/* Get the keyspace for the user defined type. It doesn't need to be freed */ +const CassKeyspaceMeta* keyspace_meta = + cass_schema_meta_keyspace_by_name("examples"); /* This data type object doesn't need to be freed */ const DataType* person_data_type = - cass_schema_get_udt(schema, "keyspace", "person"); + cass_keyspace_meta_user_type_by_name(keyspace_meta, "person"); /* ... */ /* Schema object must be freed */ -cass_schema_free(schema); +cass_schema_meta_free(schema_meta); ``` Data types can also be retrieved from [`CassResult`], [`CassPrepared`], and @@ -127,7 +131,7 @@ cass_collection_free(phone_numbers); [`CassPrepared`]: http://datastax.github.io/cpp-driver/api/CassPrepared/ [`CassResult`]: http://datastax.github.io/cpp-driver/api/CassResult/ [`CassValue`]: http://datastax.github.io/cpp-driver/api/CassValue/ -[`CassSchema`]: http://datastax.github.io/cpp-driver/api/CassSchema/ +[`CassSchemaMeta`]: http://datastax.github.io/cpp-driver/api/CassSchemaMeta/ [`cass_user_type_new_from_data_type()`]: http://datastax.github.io/cpp-driver/api/CassUserType/#cass-user-type-new-from-data-type [`cass_result_column_data_type()`]: http://datastax.github.io/cpp-driver/api/CassResult/#cass-result-column-data-type [`cass_prepared_parameter_data_type()`]: http://datastax.github.io/cpp-driver/api/CassPrepared/#cass-prepared-parameter-data-type diff --git a/topics/basics/date_and_time/README.md b/topics/basics/date_and_time/README.md new file mode 100644 index 000000000..2abcd91b7 --- /dev/null +++ b/topics/basics/date_and_time/README.md @@ -0,0 +1,93 @@ +# The `date` and `time` Types + +The driver currently uses raw types to handle `date` and `time` because date +and time handling is often very application specific in C/C++. It currently +provides methods to handle converting Epoch (January 1, 1970) time in seconds +to and from `date`/`time`. + +The `date` type uses an unsigned 32-bit integer (`cass_uint32_t`) to +represent the number of days with Epoch centered at 2^31. +Because it's centered at Epoch it can be used to represent days before Epoch. +The `time` type uses a signed 64-bit integer (`cass_int64_t`) to +represent the number of nanoseconds since midnight and valid values are in the +range 0 to 86399999999999. + + +The following examples both use this schema: + +```cql +CREATE TABLE date_time (key text PRIMARY KEY, + year_month_day date, + time_of_day time); +``` + +## `INSERT`ing the `date` and `time` Types + +```c +#include + +/* ... */ + +CassStatement* statement = cass_statement_new("INSERT INTO date_time (key, year_month_day, time_of_day) " + "VALUES (?, ?, ?)"); + +time_t now = time(NULL); /* Time in seconds from Epoch */ + +/* Converts the time since the Epoch in seconds to the 'date' type */ +cass_uint_32_t year_month_day = cass_date_from_epoch(now); + +/* Converts the time since the Epoch in seconds to the 'time' type */ +cass_int64_t time_of_day = cass_time_from_epoch(now); + +cass_statement_bind_string(statement, 0, "xyz"); + +/* 'date' uses an unsigned 32-bit integer */ +cass_statement_bind_uint32(statement, 1, year_month_day); + +/* 'time' uses a signed 64-bit integer */ +cass_statement_bind_int64(statement, 2, time_of_day) + +CassFuture* future = cass_session_execute(session, statement); + +/* Handle future result */ + +/* CassStatement and CassFuture both need to be freed */ +cass_statement_free(statement); +cass_future_free(future); +``` + +## `SELECT`ing the `date` and `time` Types + +```c +#include + +/* ... */ + +CassStatement* statement = cass_statement_new("SELECT * FROM examples.date_time WHERE key = ?"); + +CassFuture* future = cass_session_execute(session, statement); + +const CassResult* result = cass_future_get_result(future); +/* Make sure there's a valid result */ +if (result != NULL && cass_result_row_count(resut) > 0) { + const CassRow* row = cass_result_first_row(result); + + /* Get the value of the "year_month_day" column */ + cass_uint32_t year_month_day; + cass_value_get_uint32(cass_row_get_column(row, 1), &year_month_day); + + /* Get the value of the "time_of_day" column */ + cass_int64_t time_of_day; + cass_value_get_int64(cass_row_get_column(row, 2), &time_of_day); + + /* Convert 'date' and 'time' to Epoch time */ + time_t time = (time_t)cass_date_time_to_epoch(year_month_day, time_of_day); + printf("Date and time: %s", asctime(localtime(&time))) +} else { + /* Handle error */ +} + +/* CassStatement and CassFuture both need to be freed */ +cass_statement_free(statement); +cass_future_free(future); +``` diff --git a/topics/basics/schema_metadata/README.md b/topics/basics/schema_metadata/README.md index f7ef67592..34d26deb7 100644 --- a/topics/basics/schema_metadata/README.md +++ b/topics/basics/schema_metadata/README.md @@ -4,31 +4,25 @@ The driver provides access to keyspace and table metadata. This schema metadata is monitored by the control connection and automatically kept up-to-date. ```c -/* Create session */ - /* Get snapshot of the schema */ -const CassSchema* schema = cass_session_get_schema(session); +const CassSchemaMeta* schema_meta = cass_session_get_schema_meta(session); /* Get information about the "keyspace1" schema */ -const CassSchemaMeta* keyspace1_meta - = cass_schema_get_keyspace(schema, "keyspace1"); +const CassKeyspaceMeta* keyspace1_meta + = cass_schema_meta_keyspace_by_name(schema_meta, "keyspace1"); if (keyspace1_meta == NULL) { /* Handle error */ } /* Get the key-value filed for "strategy_class" */ -const CassSchemaMetaField* strategy_class_field - = cass_schema_meta_get_field(keyspace1_meta, "strategy_class"); +const CassValue* strategy_class_value + = cass_keyspace_meta_field_by_name(keyspace1_meta, "strategy_class"); -if (strategy_class_field == NULL) { +if (strategy_class_value == NULL) { /* Handle error */ } -/* Get the value part of the field */ -const CassValue* strategy_class_value - = cass_schema_meta_field_value(strategy_class_field); - /* Fields values use the existing cass_value*() API */ const char* strategy_class; size_t strategy_class_length; @@ -39,10 +33,10 @@ cass_value_get_string(strategy_class_value, /* Do something with strategy_class */ /* All values derived from the schema are cleaned up */ -cass_schema_free(schema); +cass_schema_meta_free(schema_meta); ``` -The snapshot obtained by [`cass_session_get_schema()`] will not see schema changes +The snapshot obtained by [`cass_session_get_schema_meta()`] will not see schema changes that happened after the call. A new snapshot needs to be obtained to see subsequent updates to the schema. @@ -61,4 +55,4 @@ schema metadata. /* Disable schema metdata */ cass_cluster_set_use_schema(cluster, cass_false); ``` -[`cass_session_get_schema()`]: http://datastax.github.io/cpp-driver/api/CassSession/#cass-session-get-schema +[`cass_session_get_schema_meta()`]: http://datastax.github.io/cpp-driver/api/CassSession/#cass-session-get-schema-meta diff --git a/topics/basics/user_defined_types/README.md b/topics/basics/user_defined_types/README.md index 2719fc917..fdf7bafb7 100644 --- a/topics/basics/user_defined_types/README.md +++ b/topics/basics/user_defined_types/README.md @@ -7,15 +7,19 @@ created from a manually defined data type. ## Creating a UDT from Schema -An [`CassSchema`] instance can be used to construct a new [`CassUserType`]. The -[`CassSchema`] instance returns a [`CassDataType`] object which is used to +An [`CassSchemaMeta`] instance can be used to construct a new [`CassUserType`]. The +[`CassSchemaMeta`] instance returns a [`CassDataType`] object which is used to describe Cassandra types including UDTs, tuples, collections and all basic types (`int`, `bigint`, `uuid`, etc.). ```c -CassSchema* schema = cass_session_get_schema(session); +const CassSchemaMeta* schema_meta = cass_session_get_schema_meta(session); -CassDataType* data_type = cass_schema_get_udt(schema, "keyspace", "typename"); +const CassKeyspaceMeta* keyspace_meta = + cass_schema_meta_keyspace_by_name("keyspace"); + +const DataType* data_type = + cass_keyspace_meta_user_type_by_name(keyspace_meta, "typename"); CassUserType* user_type = cass_user_type_new_from_data_type(data_type); @@ -81,7 +85,7 @@ while (cass_iterator_next(udt_iterator)) { /* The UDT iterator needs to be freed */ cass_iterator_free(udt_iterator); ``` -[`CassSchema`]: http://datastax.github.io/cpp-driver/api/CassSchema/ +[`CassSchemaMeta`]: http://datastax.github.io/cpp-driver/api/CassSchemaMeta/ [`CassUserType`]: http://datastax.github.io/cpp-driver/api/CassUserType/ [`CassDataType`]: http://datastax.github.io/cpp-driver/api/CassDataType/ [`cass_session_get_schema()`]: http://datastax.github.io/cpp-driver/api/CassSession/#cass-session-get-schema diff --git a/topics/configuration/README.md b/topics/configuration/README.md index d431979c4..c0231ab47 100644 --- a/topics/configuration/README.md +++ b/topics/configuration/README.md @@ -109,17 +109,15 @@ NOTE: Using this policy to limit the connections of the driver to a predefined DC aware in conjunction with the round robin load balancing policy. ```c -/* Disable whitelist filtering (this is the default setting) */ -cass_cluster_set_whitelist_filtering(cluster, cass_false); - -/* Enable whitelist filtering */ -cass_cluster_set_latency_aware_filtering(cluster, cass_true); - /* Set the list of predefined hosts the driver is allowed to connect to */ -cass_cluster_set_whitelist_filtering_hosts(cluster, - "127.0.0.1, 127.0.0.3, 127.0.0.5"); +cass_cluster_set_whitelist_filtering(cluster, + "127.0.0.1, 127.0.0.3, 127.0.0.5"); + +/* The whitelist can be cleared (and disabled) by using an empty string */ +cass_cluster_set_whitelist_filtering(cluster, ""); ``` + ### Connection Heartbeats To prevent intermediate network devices (routers, switches, etc.) from diff --git a/topics/testing/README.md b/topics/testing/README.md index 5e63cdbc7..4a2c0576f 100644 --- a/topics/testing/README.md +++ b/topics/testing/README.md @@ -108,6 +108,4 @@ Here are some of the items being scheduled for future enhancements. - Incorporate integration tests into Jenkins environment - Remove Boost Test Framework in Favor of Google Test Framework - Updates to CCM Bridge - - Add SSH key support (extra security over plain text password) - - Simply configuration files - Allow files to be copied over SSH established connection diff --git a/topics/testing/configuration/README.md b/topics/testing/configuration/README.md index 88559707c..1bb936405 100644 --- a/topics/testing/configuration/README.md +++ b/topics/testing/configuration/README.md @@ -4,69 +4,108 @@ created in the working directory where the integration tests are run. Below is an example of the configuration file for use with the [CCM Cluster] VM. ```text -## -# CCM Options +############################################################################### +# This is configuration file for CCM bridge library used primarily by the # +# integration testing framework # +############################################################################### + +############################################################################### +# CCM Options # +############################################################################### ## # CCM Cassandra Deployment Version # # Cassandra version to deploy using CCM -# (branches and tags can be used from https://github.com/apache/cassandra) # -CASSANDRA_VERSION=2.1.3 - +# Uncomment to specify Cassandra version ## -# SSH Options -# Enusre DEPLOYMENT_TYPE=ssh to enable these options +#CASSANDRA_VERSION=2.2.3 ## -# SSH Host (Hostname/IP Address) +# Flag to determine if Cassandra version should be obtained from ASF git # -# Host/IP to use when establishing ssh connection for remote CCM command -# execution +# Uncomment to specify use of ASF git +## +#USE_ASFGIT=false +## +# CCM Deployment Type (local|remote) # -SSH_HOST=192.168.33.11 +# Setting to indicate how CCM commands should be run (locally or through SSH) # +# Uncomment to specify deployment type (defaults to local) +## +#DEPLOYMENT_TYPE=local + +############################################################################### +# SSH Options # +# Enusre DEPLOYMENT_TYPE=ssh to enable these options # +############################################################################### +## # SSH Port (Port) # # TCP/IP port to use when establishing ssh connection for remote CCM command # execution # -SSH_PORT=22 +# Uncomment to specify SSH port (defaults to 22) +## +#SSH_PORT=22 +## +# CCM Authentication Type (username_password|public_key) +# +# Setting to indicate how SSH connections should be authenticated # +# Uncomment to specify authentication type (defaults to username and password) +## +#AUTHENTICATION_TYPE=username_password +## # SSH Username (Username) # # Username for authenticating SSH connection # -SSH_USERNAME=vagrant -# +# Uncomment to specify SSH username (defaults to vagrant) +## +#SSH_USERNAME=vagrant +## # SSH Password (Password) # # Password for authenticating SSH connection # # NOTE: This password is plain text # -SSH_PASSWORD=vagrant - +# Uncomment to specify SSH password (defaults to vagrant) ## -# CPP-Driver Options +#SSH_PASSWORD=vagrant ## +# SSH Public Key +# +# Path name of the public key file # -# IP Prefix (Single/Multiple Node Test Connections) +# Uncomment to specify public key filename +## +#SSH_PUBLIC_KEY= +## +# SSH Private Key # -# Cassandra node IP prefix for cpp-driver connection(s) and CCM node creation +# Path name of the private key file # -IP_PREFIX=192.168.33.1 -``` -(where `CASSANDRA_VERSION=2.1.3` is the latest version of Cassandra) - -## Driver Downgrade Test Suite -To execute any of the tests in the `version1_downgrade` test suite, a copy of -`config.txt` above should be created called `config_v1.txt` and the -`CASSANDRA_VERSION` option must be updated to a Cassandra in the 1.x family. +# Uncomment to specify private key filename +## +#SSH_PRIVATE_KEY= -```text -CASSANDRA_VERSION=1.2.19 +############################################################################### +# C/C++-Driver Options # +############################################################################### +## +# Host (Single/Multiple Node Test Connections) +# +# Cassandra node IP for cpp-driver connection(s), CCM node creation, and SSH +# remote connections +# +# NOTE: This must be in IPv4 format +# +# Uncomment to specify host/ip address +## +#HOST=127.0.0.1 ``` -(where `CASSANDRA_VERSION=1.2.19` is the latest version of Cassandra 1.2) ## SSL Test Suite To execute any of the tests in the `ssl` test suite, follow the [instructions]