Options scylla 6 workarounds
This commit is contained in:
@@ -10,6 +10,7 @@ path = "src/netpod.rs"
|
||||
[dependencies]
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
serde_yaml = "0.9.34"
|
||||
http = "1.0.0"
|
||||
humantime = "2.1.0"
|
||||
humantime-serde = "1.1.1"
|
||||
|
||||
@@ -1028,6 +1028,7 @@ pub struct Cluster {
|
||||
scylla_lt: Option<ScyllaConfig>,
|
||||
cache_scylla: Option<ScyllaConfig>,
|
||||
pub announce_backends: Option<Vec<String>>,
|
||||
use_scylla6_workarounds: Option<UseScylla6Workarounds>,
|
||||
}
|
||||
|
||||
impl Cluster {
|
||||
@@ -1049,6 +1050,12 @@ impl Cluster {
|
||||
self.scylla_lt.as_ref()
|
||||
}
|
||||
|
||||
pub fn use_scylla6_workarounds(&self) -> UseScylla6Workarounds {
|
||||
self.use_scylla6_workarounds
|
||||
.clone()
|
||||
.unwrap_or(UseScylla6Workarounds::with_workarounds())
|
||||
}
|
||||
|
||||
pub fn test_00() -> Self {
|
||||
Self {
|
||||
backend: "testbackend-00".into(),
|
||||
@@ -1069,10 +1076,31 @@ impl Cluster {
|
||||
scylla_lt: None,
|
||||
cache_scylla: None,
|
||||
announce_backends: None,
|
||||
use_scylla6_workarounds: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cluster_config_parse() {
|
||||
let cfg = r###"
|
||||
name: some-name
|
||||
cluster:
|
||||
backend: noname
|
||||
database:
|
||||
host: some
|
||||
port: 123
|
||||
user: some
|
||||
pass: some
|
||||
name: some
|
||||
nodes:
|
||||
use_scylla6_workarounds: false
|
||||
"###;
|
||||
let cfg = serde_yaml::from_slice::<NodeConfig>(cfg.as_bytes()).unwrap();
|
||||
let v = *cfg.cluster.use_scylla6_workarounds();
|
||||
assert!(v == false);
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct NodeConfig {
|
||||
pub name: String,
|
||||
@@ -4034,6 +4062,7 @@ pub fn test_cluster() -> Cluster {
|
||||
is_central_storage: false,
|
||||
file_io_buffer_size: Default::default(),
|
||||
announce_backends: None,
|
||||
use_scylla6_workarounds: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4072,6 +4101,7 @@ pub fn sls_test_cluster() -> Cluster {
|
||||
is_central_storage: false,
|
||||
file_io_buffer_size: Default::default(),
|
||||
announce_backends: None,
|
||||
use_scylla6_workarounds: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4110,6 +4140,7 @@ pub fn archapp_test_cluster() -> Cluster {
|
||||
is_central_storage: false,
|
||||
file_io_buffer_size: Default::default(),
|
||||
announce_backends: None,
|
||||
use_scylla6_workarounds: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4533,11 +4564,15 @@ pub unsafe fn extltmut<'a, 'b, T>(t: &'a mut T) -> &'b mut T {
|
||||
unsafe { core::mem::transmute(t) }
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct UseScylla6Workarounds(pub bool);
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct UseScylla6Workarounds(bool);
|
||||
|
||||
impl Default for UseScylla6Workarounds {
|
||||
fn default() -> Self {
|
||||
impl UseScylla6Workarounds {
|
||||
pub fn production_default() -> Self {
|
||||
Self::with_workarounds()
|
||||
}
|
||||
|
||||
pub fn with_workarounds() -> Self {
|
||||
Self(true)
|
||||
}
|
||||
}
|
||||
@@ -4550,14 +4585,12 @@ impl std::ops::Deref for UseScylla6Workarounds {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Option<u32>> for UseScylla6Workarounds {
|
||||
fn from(value: Option<u32>) -> Self {
|
||||
value.map_or(Default::default(), |x| {
|
||||
if x == 0 {
|
||||
UseScylla6Workarounds(false)
|
||||
} else {
|
||||
UseScylla6Workarounds(true)
|
||||
}
|
||||
})
|
||||
impl From<u32> for UseScylla6Workarounds {
|
||||
fn from(value: u32) -> Self {
|
||||
if value == 0 {
|
||||
UseScylla6Workarounds(false)
|
||||
} else {
|
||||
UseScylla6Workarounds(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#![allow(unused)]
|
||||
use super::evrange::NanoRange;
|
||||
use super::evrange::SeriesRange;
|
||||
use crate::timeunits::SEC;
|
||||
use crate::BinnedRangeEnum;
|
||||
use crate::Dim0Kind;
|
||||
use crate::TsNano;
|
||||
use crate::timeunits::SEC;
|
||||
use chrono::DateTime;
|
||||
use chrono::Utc;
|
||||
|
||||
@@ -24,7 +24,7 @@ fn test_binned_range_covering_00() {
|
||||
} else {
|
||||
panic!()
|
||||
}
|
||||
let r2 = r.binned_range_time();
|
||||
let r2 = r.binned_range_time().unwrap();
|
||||
let a = r2.edges();
|
||||
assert_eq!(a.len(), 1 + r.bin_count() as usize);
|
||||
assert_eq!(a[0], TsNano((((10 * 60) + 10) * 60 + 0) * SEC));
|
||||
@@ -54,7 +54,7 @@ fn test_binned_range_covering_01() {
|
||||
} else {
|
||||
panic!()
|
||||
}
|
||||
let r2 = r.binned_range_time();
|
||||
let r2 = r.binned_range_time().unwrap();
|
||||
let a = r2.edges();
|
||||
assert_eq!(a.len(), 1 + r.bin_count() as usize);
|
||||
assert_eq!(a[0], TsNano((((0 * 60) + 20) * 60 + 0) * SEC));
|
||||
@@ -84,7 +84,7 @@ fn test_binned_range_covering_02() {
|
||||
} else {
|
||||
panic!()
|
||||
}
|
||||
let r2 = r.binned_range_time();
|
||||
let r2 = r.binned_range_time().unwrap();
|
||||
let a = r2.edges();
|
||||
assert_eq!(a.len(), 1 + r.bin_count() as usize);
|
||||
assert_eq!(a[0], TsNano((((0 * 60) + 20) * 60 + 0) * SEC));
|
||||
|
||||
Reference in New Issue
Block a user