This repository has been archived by the owner on Jun 6, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4c5b7ce
commit 6323c6c
Showing
3 changed files
with
163 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
use rocket::http::Status; | ||
|
||
mod utils; | ||
|
||
#[test] | ||
fn test_healthy() { | ||
let (_, [client_1, client_2, client_3]) | ||
= utils::launch_server_node_size_3(); | ||
|
||
let response = client_1.get("/").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
assert_eq!(response.into_string(), Some("Healthy\n".into())); | ||
|
||
let response = client_2.get("/").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
assert_eq!(response.into_string(), Some("Healthy\n".into())); | ||
|
||
let response = client_3.get("/").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
assert_eq!(response.into_string(), Some("Healthy\n".into())); | ||
} | ||
|
||
#[test] | ||
fn test_clear() { | ||
let (_, [client_1, _, _]) = utils::launch_server_node_size_3(); | ||
|
||
let _ = client_1.get("/s3/test2.txt").dispatch(); | ||
let response = client_1.get("/stats").dispatch(); | ||
let stats = response.into_string().unwrap(); | ||
assert!(stats.contains("test2")); | ||
|
||
|
||
let response = client_1.post("/clear").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_1.get("/stats").dispatch(); | ||
let stats = response.into_string().unwrap(); | ||
assert!(!stats.contains("test2")); | ||
|
||
} | ||
|
||
#[test] | ||
fn test_get_file() { | ||
let (_, [client_1, client_2, client_3]) = utils::launch_server_node_size_3(); | ||
let response = client_1.get("/s3/test1.txt").dispatch(); | ||
assert_eq!(response.status(), Status::SeeOther); | ||
let response = client_1.get("/s3/test2.txt").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_2.get("/s3/test3.txt").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_2.get("/s3/test4.txt").dispatch(); | ||
assert_eq!(response.status(), Status::SeeOther); | ||
let response = client_3.get("/s3/test5.txt").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_3.get("/s3/test6.txt").dispatch(); | ||
assert_eq!(response.status(), Status::SeeOther); | ||
|
||
|
||
let response = client_1.post("/clear").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_2.post("/clear").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_3.post("/clear").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
} | ||
|
||
#[test] | ||
fn test_evict() { | ||
let (_, [client_1, _, _]) = utils::launch_server_node_size_3(); | ||
|
||
let response = client_1.post("/clear").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_1.get("/s3/test6.txt").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_1.get("/s3/test8.txt").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_1.get("/s3/test12.txt").dispatch(); | ||
assert_eq!(response.status(), Status::Ok); | ||
let response = client_1.get("/stats").dispatch(); | ||
let stats = response.into_string().unwrap(); | ||
assert!(!stats.contains("test6")); | ||
assert!(stats.contains("test8")); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#!/bin/bash | ||
# The ports where Redis nodes are running | ||
ports=(6379 6380 6381) | ||
|
||
# Loop over each port and flush all databases then perform a hard reset on the cluster | ||
for port in "${ports[@]}" | ||
do | ||
echo "Flushing all databases on port $port..." | ||
redis-cli -p "$port" FLUSHALL | ||
done | ||
|
||
for port in "${ports[@]}" | ||
do | ||
echo "Performing a hard reset on the cluster node running on port $port..." | ||
redis-cli -p "$port" CLUSTER RESET HARD | ||
done | ||
|
||
echo "All specified Redis nodes have been flushed and had a hard reset." | ||
|
||
# Directory to store logs | ||
LOG_DIR="./logs" | ||
mkdir -p "${LOG_DIR}" | ||
|
||
# Server root directory | ||
SERVER_ROOT="$(cd "$(dirname "${SERVER_ROOT:-"."}")"; pwd)/$(basename "${SERVER_ROOT:-"."}")" | ||
|
||
|
||
# Names or keywords to identify your processes | ||
PROCESS_NAMES=("istziio_server_node" "redis-serveredis-serverr") | ||
|
||
# Kill existing processes based on the names or keywords | ||
for name in "${PROCESS_NAMES[@]}"; do | ||
pkill -f $name | ||
done | ||
|
||
echo "Existing processes killed, if any were running." | ||
|
||
# Start Redis instances | ||
redis-server $SERVER_ROOT/redis.conf --port 6379 --cluster-config-file node1.conf& | ||
redis-server $SERVER_ROOT/redis.conf --port 6380 --cluster-config-file node2.conf& | ||
redis-server $SERVER_ROOT/redis.conf --port 6381 --cluster-config-file node3.conf& | ||
|
||
echo "Redis servers starting..." | ||
|
||
sleep 5 | ||
|
||
# Creating the cluster | ||
redis-cli --cluster create localhost:6379 localhost:6380 localhost:6381 --cluster-replicas 0 --cluster-yes | ||
|
||
docker container stop istziio_test_mock_s3 > /dev/null 2>&1 | ||
docker container rm istziio_test_mock_s3 > /dev/null 2>&1 | ||
docker run -v $SERVER_ROOT/tests/test_s3_files:/usr/share/nginx/html -p 6333:80 --name istziio_test_mock_s3 -d nginx |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
use istziio_server_node::server::{ServerConfig, ServerNode}; | ||
use rocket::local::blocking::Client; | ||
|
||
pub fn get_server_config_mocks3(redis_port: u16) -> ServerConfig { | ||
ServerConfig { | ||
redis_port, | ||
cache_dir: format!("./cache_{}", redis_port), | ||
use_mock_s3_endpoint: Some(String::from("http://0.0.0.0:6333")), | ||
bucket: None, | ||
region_name: None, | ||
access_key: None, | ||
secret_key: None | ||
} | ||
} | ||
|
||
pub fn launch_server_node_size_3() -> ([ServerNode; 3], [Client; 3]) { | ||
let config_1 = get_server_config_mocks3(6379); | ||
let config_2 = get_server_config_mocks3(6380); | ||
let config_3 = get_server_config_mocks3(6381); | ||
|
||
let node_1 = ServerNode::new(config_1); | ||
let node_2 = ServerNode::new(config_2); | ||
let node_3 = ServerNode::new(config_3); | ||
|
||
let client_1 = Client::tracked(node_1.build()).expect("valid rocket instance"); | ||
let client_2 = Client::tracked(node_2.build()).expect("valid rocket instance"); | ||
let client_3 = Client::tracked(node_3.build()).expect("valid rocket instance"); | ||
([node_1, node_2, node_3], [client_1, client_2, client_3]) | ||
} |