Skip to content

Commit

Permalink
Int test function propogation (#731)
Browse files Browse the repository at this point in the history
  • Loading branch information
rukai authored Aug 9, 2022
1 parent 6224a67 commit b672548
Show file tree
Hide file tree
Showing 5 changed files with 242 additions and 38 deletions.
172 changes: 164 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions shotover-proxy/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ nix = "0.24.0"
reqwest = "0.11.6"
metrics-util = "0.14.0"
cdrs-tokio = { git = "https://github.com/krojew/cdrs-tokio" }
scylla = "0.4.7"

[[bench]]
name = "redis_benches"
Expand Down
42 changes: 29 additions & 13 deletions shotover-proxy/tests/cassandra_int_tests/functions.rs
Original file line number Diff line number Diff line change
@@ -1,29 +1,45 @@
use crate::cassandra_int_tests::schema_awaiter::SchemaAwaiter;
use crate::helpers::cassandra::{assert_query_result, run_query, CassandraConnection, ResultValue};

fn drop_function(session: &CassandraConnection) {
assert_query_result(session, "SELECT test_function_keyspace.my_function(x, y) FROM test_function_keyspace.test_function_table WHERE id=1;", &[&[ResultValue::Int(4)]]);
assert_query_result(
session,
"SELECT test_function_keyspace.my_function(x, y) FROM test_function_keyspace.test_function_table WHERE id=1;",
&[&[ResultValue::Int(4)]]
);
run_query(session, "DROP FUNCTION test_function_keyspace.my_function");

let statement = "SELECT test_function_keyspace.my_function(x) FROM test_function_keyspace.test_function_table WHERE id=1;";
let result = session.execute_expect_err(statement).to_string();

assert_eq!(result, "Cassandra detailed error SERVER_INVALID_QUERY: Unknown function 'test_function_keyspace.my_function'");
assert_eq!(
result,
"Cassandra detailed error SERVER_INVALID_QUERY: Unknown function 'test_function_keyspace.my_function'"
);
}

fn create_function(session: &CassandraConnection) {
async fn create_function(session: &CassandraConnection, direct_connections: &SchemaAwaiter) {
run_query(
session,
"CREATE FUNCTION test_function_keyspace.my_function (a int, b int) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE javascript AS 'a * b';",
);
assert_query_result(session, "SELECT test_function_keyspace.my_function(x, y) FROM test_function_keyspace.test_function_table;",&[&[ResultValue::Int(4)], &[ResultValue::Int(9)], &[ResultValue::Int(16)]]);
session,
"CREATE FUNCTION test_function_keyspace.my_function (a int, b int) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE javascript AS 'a * b';",
);
direct_connections.await_schema_agreement().await;
assert_query_result(
session,
"SELECT test_function_keyspace.my_function(x, y) FROM test_function_keyspace.test_function_table;",
&[&[ResultValue::Int(4)], &[ResultValue::Int(9)], &[ResultValue::Int(16)]]
);
}

pub fn test(session: &CassandraConnection) {
run_query(session, "CREATE KEYSPACE test_function_keyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };");
pub async fn test(session: &CassandraConnection, direct_connections: &SchemaAwaiter) {
run_query(
session,
"CREATE KEYSPACE test_function_keyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };"
);
run_query(
session,
"CREATE TABLE test_function_keyspace.test_function_table (id int PRIMARY KEY, x int, y int);",
);
session,
"CREATE TABLE test_function_keyspace.test_function_table (id int PRIMARY KEY, x int, y int);",
);
run_query(
session,
r#"BEGIN BATCH
Expand All @@ -33,6 +49,6 @@ INSERT INTO test_function_keyspace.test_function_table (id, x, y) VALUES (3, 4,
APPLY BATCH;"#,
);

create_function(session);
create_function(session, direct_connections).await;
drop_function(session);
}
Loading

0 comments on commit b672548

Please sign in to comment.