Skip to content

Commit

Permalink
fix(1281): adds a config feature check
Browse files Browse the repository at this point in the history
  • Loading branch information
Luca Simonetti committed Jul 30, 2024
1 parent 24e985a commit d432bf4
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 64 deletions.
12 changes: 10 additions & 2 deletions async-nats/src/jetstream/kv/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1051,8 +1051,16 @@ impl Store {
config.filter_subject = first;
}
(Some(first), Some(second)) => {
config.filter_subjects = vec![first, second];
config.filter_subjects.extend(filters);
#[cfg(feature = "server_2_10")]
{
config.filter_subjects = vec![first, second];
config.filter_subjects.extend(filters);
}
#[cfg(not(feature = "server_2_10"))]
{
config.filter_subject = first;
// maybe a warning
}
}
_ => {}
}
Expand Down
126 changes: 64 additions & 62 deletions async-nats/tests/kv_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -795,69 +795,71 @@ mod kv {
keys.sort();
assert_eq!(vec!["bar", "foo"], keys);

let mut keys_with_filter = kv
.keys_with_filters(vec!["bar"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filter.sort();
assert_eq!(vec!["bar"], keys_with_filter);

kv.put("foo1.bar", 37.to_string().into()).await.unwrap();
kv.put("foo1.baz.boo", 73.to_string().into()).await.unwrap();
kv.put("foo1.baz.baz", 89.to_string().into()).await.unwrap();

let mut keys_with_filters = kv
.keys_with_filters(vec!["foo", "bar"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filters.sort();
assert_eq!(vec!["bar", "foo"], keys_with_filters);

let mut keys_with_filters = kv
.keys_with_filters(vec!["foo1.*.*"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filters.sort();
assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters);

let mut keys_with_filters = kv
.keys_with_filters(vec!["foo1.*.*", "foo1.*"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filters.sort();
assert_eq!(
vec!["foo1.bar", "foo1.baz.baz", "foo1.baz.boo"],
keys_with_filters
);

let mut keys_with_filters = kv
.keys_with_filters(vec!["*.baz.*"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();

keys_with_filters.sort();
assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters);

// cleanup the keys
kv.delete("foo1.bar").await.unwrap();
kv.delete("foo1.baz.boo").await.unwrap();
kv.delete("foo1.baz.baz").await.unwrap();
#[cfg(feature = "server_2_10")]
{
let mut keys_with_filter = kv
.keys_with_filters(vec!["bar"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filter.sort();
assert_eq!(vec!["bar"], keys_with_filter);

kv.put("foo1.bar", 37.to_string().into()).await.unwrap();
kv.put("foo1.baz.boo", 73.to_string().into()).await.unwrap();
kv.put("foo1.baz.baz", 89.to_string().into()).await.unwrap();

let mut keys_with_filters = kv
.keys_with_filters(vec!["foo", "bar"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filters.sort();
assert_eq!(vec!["bar", "foo"], keys_with_filters);

let mut keys_with_filters = kv
.keys_with_filters(vec!["foo1.*.*"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filters.sort();
assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters);

let mut keys_with_filters = kv
.keys_with_filters(vec!["foo1.*.*", "foo1.*"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();
keys_with_filters.sort();
assert_eq!(
vec!["foo1.bar", "foo1.baz.baz", "foo1.baz.boo"],
keys_with_filters
);

let mut keys_with_filters = kv
.keys_with_filters(vec!["*.baz.*"])
.await
.unwrap()
.try_collect::<Vec<String>>()
.await
.unwrap();

keys_with_filters.sort();
assert_eq!(vec!["foo1.baz.baz", "foo1.baz.boo"], keys_with_filters);

// cleanup the keys
kv.delete("foo1.bar").await.unwrap();
kv.delete("foo1.baz.boo").await.unwrap();
kv.delete("foo1.baz.baz").await.unwrap();
}
// filters like "foo.b*" should not return anything because it's not a valid filter

// Delete a key and make sure it doesn't show up in the keys list
Expand Down

0 comments on commit d432bf4

Please sign in to comment.