private function internalSetup($dataCenterOneNodes, $dataCenterTwoNodes)
{
$this->dataCenterOneNodes = $dataCenterOneNodes;
$this->dataCenterTwoNodes = $dataCenterTwoNodes;
$clusters = $this->getClusters();
$clusterName = $this->clusterPrefix . '_' . $this->version . '_' . $dataCenterOneNodes . '-' . $dataCenterTwoNodes;
if ($this->ssl) {
$clusterName .= "_ssl";
}
if ($this->clientAuth) {
$clusterName .= "_client_auth";
}
if ($clusters['active'] != $clusterName) {
// Ensure any active cluster is stopped
if (!empty($clusters['active'])) {
$this->stop();
}
// Determine if a cluster should be created or re-used
if (in_array($clusterName, $clusters['list'])) {
$this->run('switch', $clusterName);
} else {
$this->run('create', '-v', 'binary:' . $this->version, '-b', $clusterName);
$params = array('updateconf', '--rt', '1000', 'read_request_timeout_in_ms: 1000', 'write_request_timeout_in_ms: 1000', 'request_timeout_in_ms: 1000', 'phi_convict_threshold: 16', 'hinted_handoff_enabled: false', 'dynamic_snitch_update_interval_in_ms: 1000');
if (substr($this->version, 0, 4) == '1.2.') {
$params[] = 'reduce_cache_sizes_at: 0';
$params[] = 'reduce_cache_capacity_to: 0';
$params[] = 'flush_largest_memtables_at: 0';
$params[] = 'index_interval: 512';
} else {
$params[] = 'cas_contention_timeout_in_ms: 10000';
$params[] = 'file_cache_size_in_mb: 0';
}
$params[] = 'native_transport_max_threads: 1';
$params[] = 'rpc_min_threads: 1';
$params[] = 'rpc_max_threads: 1';
$params[] = 'concurrent_reads: 2';
$params[] = 'concurrent_writes: 2';
$params[] = 'concurrent_compactors: 1';
$params[] = 'compaction_throughput_mb_per_sec: 0';
if (strcmp($this->version, '2.1') < 0) {
$params[] = 'in_memory_compaction_limit_in_mb: 1';
}
if (version_compare($this->version, "2.2.0", ">=")) {
$this->run('updateconf', 'enable_user_defined_functions: true');
}
if (version_compare($this->version, "3.0.0", ">=")) {
$this->run('updateconf', 'enable_scripted_user_defined_functions: true');
}
$params[] = 'key_cache_size_in_mb: 0';
$params[] = 'key_cache_save_period: 0';
$params[] = 'memtable_flush_writers: 1';
$params[] = 'max_hints_delivery_threads: 1';
call_user_func_array(array($this, 'run'), $params);
$this->run('populate', '-n', $dataCenterOneNodes . ':' . $dataCenterTwoNodes, '-i', '127.0.0.');
}
}
}