Properly passing endpoint to dnode registration packet, added test just in case

This commit is contained in:
Joseph Ferano 2018-12-13 15:19:07 -04:00
parent a281bd2a9e
commit 3bd0e60169
2 changed files with 30 additions and 8 deletions

View File

@ -8,11 +8,12 @@ use a03::*;
use std::net::{TcpStream, Shutdown}; use std::net::{TcpStream, Shutdown};
use std::io::Write; use std::io::Write;
use std::net::TcpListener; use std::net::TcpListener;
use serde_json::from_str;
fn main() { fn main() {
let endpoint = parse_endpoint_from_cli(0); let endpoint = parse_endpoint_from_cli(0);
let listener = TcpListener::bind(endpoint).unwrap(); let listener = TcpListener::bind(&endpoint).unwrap();
register_with_meta_server(); register_with_meta_server(&endpoint);
for stream in listener.incoming() { for stream in listener.incoming() {
let mut stream = stream.unwrap(); let mut stream = stream.unwrap();
@ -29,7 +30,7 @@ fn main() {
Ok(packet @ Packet { .. }) => match packet.p_type { Ok(packet @ Packet { .. }) => match packet.p_type {
// PacketType::GetFiles => shutdown(&mut stream), // PacketType::GetFiles => shutdown(&mut stream),
// PacketType::PutFile => put(&mut stream, &packet.json.unwrap(), &mut Vec::new()), // PacketType::PutFile => put(&mut stream, &packet.json.unwrap(), &mut Vec::new()),
PacketType::ShutdownDataNode => shutdown(&mut stream), PacketType::ShutdownDataNode => shutdown(&mut stream, &endpoint),
_ => (), _ => (),
}, },
Err(e) => println!("Error parsing json: {}", e.to_string()), Err(e) => println!("Error parsing json: {}", e.to_string()),
@ -37,14 +38,19 @@ fn main() {
} }
} }
fn register_with_meta_server() { fn register_with_meta_server(endpoint: &String) {
let mut stream = TcpStream::connect("localhost:6770").unwrap(); let mut stream = TcpStream::connect("localhost:6770").unwrap();
let split: Vec<&str> = endpoint.split(":").collect();
serde_json::to_writer( serde_json::to_writer(
&mut stream, &mut stream,
&Packet { &Packet {
p_type: PacketType::NodeRegistration, p_type: PacketType::NodeRegistration,
json: Some(serde_json::to_string( json: Some(serde_json::to_string(
&NodeRegistration { register: true, ip: String::from("localhost"), port: 6771 }).unwrap()), &NodeRegistration {
register: true,
ip: String::from(split[0]),
port: from_str(split[1]).unwrap() })
.unwrap()),
}) })
.unwrap(); .unwrap();
println!("Registered myself"); println!("Registered myself");
@ -58,14 +64,19 @@ fn register_with_meta_server() {
// let files: PutFiles = serde_json::from_str(json).unwrap(); // let files: PutFiles = serde_json::from_str(json).unwrap();
//} //}
fn shutdown(stream: &mut TcpStream) { fn shutdown(stream: &mut TcpStream, endpoint: &String) {
let mut stream = TcpStream::connect("localhost:6770").unwrap(); let mut stream = TcpStream::connect("localhost:6770").unwrap();
let split: Vec<&str> = endpoint.split(":").collect();
serde_json::to_writer( serde_json::to_writer(
&mut stream, &mut stream,
&Packet { &Packet {
p_type: PacketType::NodeRegistration, p_type: PacketType::NodeRegistration,
json: Some(serde_json::to_string( json: Some(serde_json::to_string(
&NodeRegistration { register: false, ip: String::from("localhost"), port: 6771 }).unwrap()), &NodeRegistration {
register: false,
ip: String::from(split[0]),
port: from_str(split[1]).unwrap() })
.unwrap()),
}) })
.unwrap(); .unwrap();
println!("Unregistered myself"); println!("Unregistered myself");

View File

@ -397,6 +397,7 @@ cid TEXT NOT NULL DEFAULT \"0\")",
add_file(&conn, &filename, 128); add_file(&conn, &filename, 128);
add_data_node(&conn, "127.0.0.1", 1337); add_data_node(&conn, "127.0.0.1", 1337);
add_data_node(&conn, "127.0.0.2", 1338); add_data_node(&conn, "127.0.0.2", 1338);
add_data_node(&conn, "127.0.0.2", 1339);
let inode = get_file_info(&conn, &filename); let inode = get_file_info(&conn, &filename);
let blocks = vec!( let blocks = vec!(
Block { Block {
@ -411,12 +412,18 @@ cid TEXT NOT NULL DEFAULT \"0\")",
node_id: 2, node_id: 2,
chunk_id: String::from("c2"), chunk_id: String::from("c2"),
}, },
Block {
file_id: inode.id,
id: 0,
node_id: 3,
chunk_id: String::from("c3"),
},
); );
add_blocks_to_inode(&conn, &filename, &blocks); add_blocks_to_inode(&conn, &filename, &blocks);
let (inode, blocks) = get_file_inode(&conn, &filename); let (inode, blocks) = get_file_inode(&conn, &filename);
assert_eq!(inode.name, "main_file"); assert_eq!(inode.name, "main_file");
assert_eq!(inode.size, 128); assert_eq!(inode.size, 128);
assert_eq!(blocks.len(), 2); assert_eq!(blocks.len(), 3);
assert_eq!(blocks[0].chunk_id, "c1"); assert_eq!(blocks[0].chunk_id, "c1");
assert_eq!(blocks[0].data_node.id, 1); assert_eq!(blocks[0].data_node.id, 1);
assert_eq!(blocks[0].data_node.ip, "127.0.0.1"); assert_eq!(blocks[0].data_node.ip, "127.0.0.1");
@ -425,6 +432,10 @@ cid TEXT NOT NULL DEFAULT \"0\")",
assert_eq!(blocks[1].data_node.id, 2); assert_eq!(blocks[1].data_node.id, 2);
assert_eq!(blocks[1].data_node.ip, "127.0.0.2"); assert_eq!(blocks[1].data_node.ip, "127.0.0.2");
assert_eq!(blocks[1].data_node.port, 1338); assert_eq!(blocks[1].data_node.port, 1338);
assert_eq!(blocks[2].chunk_id, "c3");
assert_eq!(blocks[2].data_node.id, 3);
assert_eq!(blocks[2].data_node.ip, "127.0.0.2");
assert_eq!(blocks[2].data_node.port, 1339);
} }
} }