Removed document id from message.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
parent
c3748ab845
commit
bcddc1047a
@ -26,17 +26,11 @@ impl Clock {
|
|||||||
vec![Name::english("clock")]
|
vec![Name::english("clock")]
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
fn get_name() -> Name {
|
|
||||||
Name::english("clock")
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
fn gen_message() -> Message {
|
fn gen_message() -> Message {
|
||||||
Message::new(
|
Message::new(MsgAction::OnUpdate(Records::new(
|
||||||
Clock::doc_names()[0].clone(),
|
Clock::doc_names(),
|
||||||
MsgAction::OnUpdate(Records::new(Clock::doc_names(), Names::new())),
|
Names::new(),
|
||||||
)
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_path() -> Path {
|
pub fn get_path() -> Path {
|
||||||
@ -52,7 +46,7 @@ impl Clock {
|
|||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let id = queue.add_sender(tx);
|
let id = queue.add_sender(tx);
|
||||||
let reg_msg = Register::new(id, RegMsg::AddDocName(Clock::doc_names()));
|
let reg_msg = Register::new(id, RegMsg::AddDocName(Clock::doc_names()));
|
||||||
let msg = Message::new(NameType::None, reg_msg.clone());
|
let msg = Message::new(reg_msg.clone());
|
||||||
queue.send(msg);
|
queue.send(msg);
|
||||||
rx.recv().unwrap();
|
rx.recv().unwrap();
|
||||||
spawn(move || {
|
spawn(move || {
|
||||||
@ -94,7 +88,7 @@ mod clocks {
|
|||||||
id.clone(),
|
id.clone(),
|
||||||
RegMsg::AddRoute(Path::new(Include::All, Include::All, Include::All)),
|
RegMsg::AddRoute(Path::new(Include::All, Include::All, Include::All)),
|
||||||
);
|
);
|
||||||
queue.send(Message::new(NameType::None, request));
|
queue.send(Message::new(request));
|
||||||
rx.recv_timeout(TIMEOUT).unwrap();
|
rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
let mut holder: Vec<Message> = Vec::new();
|
let mut holder: Vec<Message> = Vec::new();
|
||||||
let start = Utc::now();
|
let start = Utc::now();
|
||||||
@ -106,7 +100,7 @@ mod clocks {
|
|||||||
assert!((end - start) > TimeDelta::seconds(1));
|
assert!((end - start) > TimeDelta::seconds(1));
|
||||||
assert!((end - start) < TimeDelta::seconds(2));
|
assert!((end - start) < TimeDelta::seconds(2));
|
||||||
let reg_request = Register::new(id, RegMsg::GetNameID(Clock::doc_names()[0].clone()));
|
let reg_request = Register::new(id, RegMsg::GetNameID(Clock::doc_names()[0].clone()));
|
||||||
queue.send(Message::new(NameType::None, reg_request));
|
queue.send(Message::new(reg_request));
|
||||||
rx.recv_timeout(TIMEOUT).unwrap();
|
rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
for msg in holder.iter() {
|
for msg in holder.iter() {
|
||||||
let action = msg.get_action();
|
let action = msg.get_action();
|
||||||
|
|||||||
@ -44,7 +44,7 @@ impl CreateDoc {
|
|||||||
let id = queue.add_sender(tx);
|
let id = queue.add_sender(tx);
|
||||||
for route in routes.iter() {
|
for route in routes.iter() {
|
||||||
let regmsg = Register::new(id.clone(), RegMsg::AddRoute(route.clone()));
|
let regmsg = Register::new(id.clone(), RegMsg::AddRoute(route.clone()));
|
||||||
queue.send(Message::new(NameType::None, regmsg));
|
queue.send(Message::new(regmsg));
|
||||||
rx.recv().unwrap();
|
rx.recv().unwrap();
|
||||||
}
|
}
|
||||||
let doc = CreateDoc::new(queue, rx);
|
let doc = CreateDoc::new(queue, rx);
|
||||||
@ -96,7 +96,7 @@ mod createdocs {
|
|||||||
fn register_paths(&self, paths: Vec<Path>) {
|
fn register_paths(&self, paths: Vec<Path>) {
|
||||||
for path in paths.iter() {
|
for path in paths.iter() {
|
||||||
let regmsg = Register::new(self.rx_id.clone(), RegMsg::AddRoute(path.clone()));
|
let regmsg = Register::new(self.rx_id.clone(), RegMsg::AddRoute(path.clone()));
|
||||||
self.queue.send(Message::new(NameType::None, regmsg));
|
self.queue.send(Message::new(regmsg));
|
||||||
self.rx.recv_timeout(TIMEOUT).unwrap();
|
self.rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ mod createdocs {
|
|||||||
let queue = doc_creator.get_queue();
|
let queue = doc_creator.get_queue();
|
||||||
let rx = doc_creator.get_receiver();
|
let rx = doc_creator.get_receiver();
|
||||||
let name = Name::english("project");
|
let name = Name::english("project");
|
||||||
let msg1 = Message::new(NameType::None, MsgAction::Create(DocDef::new(name.clone())));
|
let msg1 = Message::new(MsgAction::Create(DocDef::new(name.clone())));
|
||||||
queue.send(msg1.clone());
|
queue.send(msg1.clone());
|
||||||
let result1 = rx.recv_timeout(TIMEOUT).unwrap();
|
let result1 = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@ -127,7 +127,7 @@ mod createdocs {
|
|||||||
MsgAction::Reply(_) => {}
|
MsgAction::Reply(_) => {}
|
||||||
_ => unreachable!("got {:?}: should have been a reply.", result1.get_action()),
|
_ => unreachable!("got {:?}: should have been a reply.", result1.get_action()),
|
||||||
}
|
}
|
||||||
let msg2 = Message::new(name.clone(), Query::new(name.clone()));
|
let msg2 = Message::new(Query::new(name.clone()));
|
||||||
queue.send(msg2.clone());
|
queue.send(msg2.clone());
|
||||||
let result2 = rx.recv_timeout(TIMEOUT).unwrap();
|
let result2 = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(result2.get_message_id(), msg2.get_message_id());
|
assert_eq!(result2.get_message_id(), msg2.get_message_id());
|
||||||
@ -150,8 +150,8 @@ mod createdocs {
|
|||||||
let queue = doc_creator.get_queue();
|
let queue = doc_creator.get_queue();
|
||||||
let rx = doc_creator.get_receiver();
|
let rx = doc_creator.get_receiver();
|
||||||
let name = Name::english("duplicate");
|
let name = Name::english("duplicate");
|
||||||
let msg1 = Message::new(NameType::None, MsgAction::Create(DocDef::new(name.clone())));
|
let msg1 = Message::new(MsgAction::Create(DocDef::new(name.clone())));
|
||||||
let msg2 = Message::new(NameType::None, MsgAction::Create(DocDef::new(name.clone())));
|
let msg2 = Message::new(MsgAction::Create(DocDef::new(name.clone())));
|
||||||
queue.send(msg1.clone());
|
queue.send(msg1.clone());
|
||||||
queue.send(msg2.clone());
|
queue.send(msg2.clone());
|
||||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -920,20 +920,17 @@ mod document_files {
|
|||||||
where
|
where
|
||||||
A: Into<MsgAction>,
|
A: Into<MsgAction>,
|
||||||
{
|
{
|
||||||
let msg = Message::new(self.docdef.get_document_names()[0].clone(), action);
|
let msg = Message::new(action);
|
||||||
self.queue.send(msg);
|
self.queue.send(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start(&mut self, routes: Vec<Path>) {
|
fn start(&mut self, routes: Vec<Path>) {
|
||||||
let msg = Message::new(
|
let msg = Message::new(self.docdef.clone());
|
||||||
self.docdef.get_document_names()[0].clone(),
|
|
||||||
self.docdef.clone(),
|
|
||||||
);
|
|
||||||
DocumentFile::start(self.queue.clone(), msg);
|
DocumentFile::start(self.queue.clone(), msg);
|
||||||
for route in routes.iter() {
|
for route in routes.iter() {
|
||||||
let request =
|
let request =
|
||||||
Register::new(self.sender_id.clone(), RegMsg::AddRoute(route.clone()));
|
Register::new(self.sender_id.clone(), RegMsg::AddRoute(route.clone()));
|
||||||
let add_route = Message::new(NameType::None, request);
|
let add_route = Message::new(request);
|
||||||
self.queue.send(add_route);
|
self.queue.send(add_route);
|
||||||
self.rx.recv().unwrap();
|
self.rx.recv().unwrap();
|
||||||
}
|
}
|
||||||
@ -982,7 +979,7 @@ mod document_files {
|
|||||||
let alt = Name::english("alternate");
|
let alt = Name::english("alternate");
|
||||||
test_doc.start(standard_paths());
|
test_doc.start(standard_paths());
|
||||||
let docdef = DocDef::new(alt);
|
let docdef = DocDef::new(alt);
|
||||||
let msg = Message::new(name.clone(), docdef);
|
let msg = Message::new(docdef);
|
||||||
test_doc.get_queue().send(msg);
|
test_doc.get_queue().send(msg);
|
||||||
match test_doc.get_receiver().recv_timeout(TIMEOUT) {
|
match test_doc.get_receiver().recv_timeout(TIMEOUT) {
|
||||||
Ok(msg) => unreachable!("should not receive: {:?}", msg),
|
Ok(msg) => unreachable!("should not receive: {:?}", msg),
|
||||||
@ -1008,7 +1005,7 @@ mod document_files {
|
|||||||
MsgAction::Update(Update::new(name.clone())),
|
MsgAction::Update(Update::new(name.clone())),
|
||||||
];
|
];
|
||||||
for msg_action in msg_actions.iter() {
|
for msg_action in msg_actions.iter() {
|
||||||
let msg = Message::new(name.clone(), msg_action.clone());
|
let msg = Message::new(msg_action.clone());
|
||||||
queue.send(msg.clone());
|
queue.send(msg.clone());
|
||||||
let result = match test_doc.get_receiver().recv_timeout(TIMEOUT) {
|
let result = match test_doc.get_receiver().recv_timeout(TIMEOUT) {
|
||||||
Ok(data) => data.clone(),
|
Ok(data) => data.clone(),
|
||||||
@ -1048,7 +1045,7 @@ mod document_files {
|
|||||||
test_doc.get_sender_id(),
|
test_doc.get_sender_id(),
|
||||||
RegMsg::AddDocName([alt.clone()].to_vec()),
|
RegMsg::AddDocName([alt.clone()].to_vec()),
|
||||||
);
|
);
|
||||||
let setup = Message::new(NameType::None, reg_msg.clone());
|
let setup = Message::new(reg_msg.clone());
|
||||||
queue.send(setup);
|
queue.send(setup);
|
||||||
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
let msg_actions = [
|
let msg_actions = [
|
||||||
@ -1061,7 +1058,7 @@ mod document_files {
|
|||||||
];
|
];
|
||||||
let mut msgs: HashMap<Uuid, MsgAction> = HashMap::new();
|
let mut msgs: HashMap<Uuid, MsgAction> = HashMap::new();
|
||||||
for msg_action in msg_actions.iter() {
|
for msg_action in msg_actions.iter() {
|
||||||
let msg = Message::new(alt.clone(), msg_action.clone());
|
let msg = Message::new(msg_action.clone());
|
||||||
msgs.insert(msg.get_message_id().clone(), msg_action.clone());
|
msgs.insert(msg.get_message_id().clone(), msg_action.clone());
|
||||||
queue.send(msg);
|
queue.send(msg);
|
||||||
}
|
}
|
||||||
@ -1099,7 +1096,7 @@ mod document_files {
|
|||||||
for item in data.iter() {
|
for item in data.iter() {
|
||||||
test_doc.populate([item.clone()].to_vec());
|
test_doc.populate([item.clone()].to_vec());
|
||||||
}
|
}
|
||||||
let msg = Message::new(doc_name.clone(), Query::new(doc_name.clone()));
|
let msg = Message::new(Query::new(doc_name.clone()));
|
||||||
queue.send(msg.clone());
|
queue.send(msg.clone());
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@ -1138,7 +1135,7 @@ mod document_files {
|
|||||||
test_doc.start(routes);
|
test_doc.start(routes);
|
||||||
let mut add = Addition::new(doc_name.clone());
|
let mut add = Addition::new(doc_name.clone());
|
||||||
add.add_field(field_name.clone(), data.clone());
|
add.add_field(field_name.clone(), data.clone());
|
||||||
let msg = Message::new(doc_name.clone(), add);
|
let msg = Message::new(add);
|
||||||
queue.send(msg.clone());
|
queue.send(msg.clone());
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@ -1178,7 +1175,7 @@ mod document_files {
|
|||||||
for item in data.iter() {
|
for item in data.iter() {
|
||||||
test_doc.populate([item.clone()].to_vec());
|
test_doc.populate([item.clone()].to_vec());
|
||||||
}
|
}
|
||||||
let msg = Message::new(doc_name.clone(), Delete::new(doc_name.clone()));
|
let msg = Message::new(Delete::new(doc_name.clone()));
|
||||||
queue.send(msg.clone());
|
queue.send(msg.clone());
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@ -1228,7 +1225,7 @@ mod document_files {
|
|||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(field_name.clone(), Uuid::nil());
|
.add_field(field_name.clone(), Uuid::nil());
|
||||||
let msg = Message::new(doc_name.clone(), update);
|
let msg = Message::new(update);
|
||||||
queue.send(msg.clone());
|
queue.send(msg.clone());
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
@ -1285,8 +1282,8 @@ mod document_files {
|
|||||||
),
|
),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
testing(Message::new(doc_name.clone(), new_doc));
|
testing(Message::new(new_doc));
|
||||||
testing(Message::new(doc_name.clone(), Query::new(doc_name.clone())));
|
testing(Message::new(Query::new(doc_name.clone())));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1302,10 +1299,10 @@ mod document_files {
|
|||||||
for i in 0..count {
|
for i in 0..count {
|
||||||
let mut new_doc = Addition::new(doc_name.clone());
|
let mut new_doc = Addition::new(doc_name.clone());
|
||||||
new_doc.add_field(name.clone(), i);
|
new_doc.add_field(name.clone(), i);
|
||||||
queue.send(Message::new(doc_name.clone(), new_doc));
|
queue.send(Message::new(new_doc));
|
||||||
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
}
|
}
|
||||||
queue.send(Message::new(doc_name.clone(), Query::new(doc_name.clone())));
|
queue.send(Message::new(Query::new(doc_name.clone())));
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
let mut entries: HashSet<i128> = (0..count).collect();
|
let mut entries: HashSet<i128> = (0..count).collect();
|
||||||
@ -1345,10 +1342,7 @@ mod document_files {
|
|||||||
let name = Name::english("bad");
|
let name = Name::english("bad");
|
||||||
let mut addition = Addition::new(test_doc.doc_name());
|
let mut addition = Addition::new(test_doc.doc_name());
|
||||||
addition.add_field(name.clone(), "doesn't matter");
|
addition.add_field(name.clone(), "doesn't matter");
|
||||||
queue.send(Message::new(
|
queue.send(Message::new(addition));
|
||||||
test_doc.get_docdef().get_document_names()[0].clone(),
|
|
||||||
addition,
|
|
||||||
));
|
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
match result.get_action() {
|
match result.get_action() {
|
||||||
MsgAction::Error(err) => match err.error_id() {
|
MsgAction::Error(err) => match err.error_id() {
|
||||||
@ -1366,10 +1360,7 @@ mod document_files {
|
|||||||
let queue = test_doc.get_queue();
|
let queue = test_doc.get_queue();
|
||||||
let mut addition = Addition::new(test_doc.doc_name());
|
let mut addition = Addition::new(test_doc.doc_name());
|
||||||
addition.add_field(Name::english("field0"), "string");
|
addition.add_field(Name::english("field0"), "string");
|
||||||
queue.send(Message::new(
|
queue.send(Message::new(addition));
|
||||||
test_doc.get_docdef().get_document_names()[0].clone(),
|
|
||||||
addition,
|
|
||||||
));
|
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
match result.get_action() {
|
match result.get_action() {
|
||||||
MsgAction::Error(err) => match err.error_id() {
|
MsgAction::Error(err) => match err.error_id() {
|
||||||
@ -1390,10 +1381,7 @@ mod document_files {
|
|||||||
let queue = test_doc.get_queue();
|
let queue = test_doc.get_queue();
|
||||||
let mut addition = Addition::new(test_doc.doc_name());
|
let mut addition = Addition::new(test_doc.doc_name());
|
||||||
addition.add_field(Name::english("field0"), 1);
|
addition.add_field(Name::english("field0"), 1);
|
||||||
queue.send(Message::new(
|
queue.send(Message::new(addition));
|
||||||
test_doc.get_docdef().get_document_names()[0].clone(),
|
|
||||||
addition,
|
|
||||||
));
|
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
match result.get_action() {
|
match result.get_action() {
|
||||||
MsgAction::Error(err) => match err.error_id() {
|
MsgAction::Error(err) => match err.error_id() {
|
||||||
@ -1421,10 +1409,7 @@ mod document_files {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
let mut query = Query::new(doc_name);
|
let mut query = Query::new(doc_name);
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
queue.send(Message::new(
|
queue.send(Message::new(query));
|
||||||
test_doc.get_docdef().get_document_names()[0].clone(),
|
|
||||||
query,
|
|
||||||
));
|
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
match action {
|
match action {
|
||||||
@ -1458,10 +1443,7 @@ mod document_files {
|
|||||||
calc.add_value(1).unwrap();
|
calc.add_value(1).unwrap();
|
||||||
let mut query = Query::new(doc_name);
|
let mut query = Query::new(doc_name);
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
queue.send(Message::new(
|
queue.send(Message::new(query));
|
||||||
test_doc.get_docdef().get_document_names()[0].clone(),
|
|
||||||
query,
|
|
||||||
));
|
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
match action {
|
match action {
|
||||||
@ -1499,10 +1481,7 @@ mod document_files {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
let mut query = Query::new(doc_name);
|
let mut query = Query::new(doc_name);
|
||||||
query.add(Name::english("field0"), calc);
|
query.add(Name::english("field0"), calc);
|
||||||
queue.send(Message::new(
|
queue.send(Message::new(query));
|
||||||
test_doc.get_docdef().get_document_names()[0].clone(),
|
|
||||||
query,
|
|
||||||
));
|
|
||||||
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
match action {
|
match action {
|
||||||
@ -1671,7 +1650,7 @@ mod document_files {
|
|||||||
let mut calc = Calculation::new(Operand::Equal);
|
let mut calc = Calculation::new(Operand::Equal);
|
||||||
calc.add_value("something").unwrap();
|
calc.add_value("something").unwrap();
|
||||||
query.add(field_name.clone(), calc);
|
query.add(field_name.clone(), calc);
|
||||||
let msg = Message::new(doc_name, query);
|
let msg = Message::new(query);
|
||||||
queue.send(msg);
|
queue.send(msg);
|
||||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
@ -1722,7 +1701,7 @@ mod document_files {
|
|||||||
let queue = test_doc.get_queue();
|
let queue = test_doc.get_queue();
|
||||||
let rx = test_doc.get_receiver();
|
let rx = test_doc.get_receiver();
|
||||||
let new_doc = Addition::new(doc_name.clone());
|
let new_doc = Addition::new(doc_name.clone());
|
||||||
let msg = Message::new(doc_name, new_doc);
|
let msg = Message::new(new_doc);
|
||||||
queue.send(msg);
|
queue.send(msg);
|
||||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
@ -1750,7 +1729,7 @@ mod document_files {
|
|||||||
let queue = test_doc.get_queue();
|
let queue = test_doc.get_queue();
|
||||||
let rx = test_doc.get_receiver();
|
let rx = test_doc.get_receiver();
|
||||||
let new_doc = Addition::new(doc_name.clone());
|
let new_doc = Addition::new(doc_name.clone());
|
||||||
let msg = Message::new(doc_name, new_doc);
|
let msg = Message::new(new_doc);
|
||||||
queue.send(msg);
|
queue.send(msg);
|
||||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
@ -1779,7 +1758,7 @@ mod document_files {
|
|||||||
let rx = test_doc.get_receiver();
|
let rx = test_doc.get_receiver();
|
||||||
let mut new_doc = Addition::new(doc_name.clone());
|
let mut new_doc = Addition::new(doc_name.clone());
|
||||||
new_doc.add_field(&field_name, Uuid::nil());
|
new_doc.add_field(&field_name, Uuid::nil());
|
||||||
let msg = Message::new(doc_name, new_doc);
|
let msg = Message::new(new_doc);
|
||||||
queue.send(msg);
|
queue.send(msg);
|
||||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
@ -1863,8 +1842,8 @@ mod document_files {
|
|||||||
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
testing(Message::new(doc_name.clone(), update));
|
testing(Message::new(update));
|
||||||
testing(Message::new(doc_name.clone(), Query::new(doc_name.clone())));
|
testing(Message::new(Query::new(doc_name.clone())));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -1890,7 +1869,7 @@ mod document_files {
|
|||||||
update
|
update
|
||||||
.get_values_mut()
|
.get_values_mut()
|
||||||
.add_field(Name::english("field1"), new);
|
.add_field(Name::english("field1"), new);
|
||||||
doc.get_queue().send(Message::new(doc_name.clone(), update));
|
doc.get_queue().send(Message::new(update));
|
||||||
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
match action {
|
match action {
|
||||||
@ -1904,7 +1883,7 @@ mod document_files {
|
|||||||
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
||||||
}
|
}
|
||||||
doc.get_queue()
|
doc.get_queue()
|
||||||
.send(Message::new(doc_name.clone(), Query::new(doc_name.clone())));
|
.send(Message::new(Query::new(doc_name.clone())));
|
||||||
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
let action = result.get_action();
|
let action = result.get_action();
|
||||||
match action {
|
match action {
|
||||||
@ -1969,8 +1948,8 @@ mod document_files {
|
|||||||
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
_ => unreachable!("got {:?}: should have gotten a reply", action),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
testing(Message::new(doc_name.clone(), update));
|
testing(Message::new(update));
|
||||||
testing(Message::new(doc_name.clone(), Query::new(doc_name.clone())));
|
testing(Message::new(Query::new(doc_name.clone())));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -2428,13 +2407,13 @@ mod document_files {
|
|||||||
for item in 1..3 {
|
for item in 1..3 {
|
||||||
doc.populate([item.into()].to_vec());
|
doc.populate([item.into()].to_vec());
|
||||||
}
|
}
|
||||||
let trigger = Message::new(
|
let trigger = Message::new(MsgAction::OnUpdate(Records::new(
|
||||||
Name::english("clock"),
|
Clock::doc_names(),
|
||||||
MsgAction::OnUpdate(Records::new(Clock::doc_names(), Names::new())),
|
Names::new(),
|
||||||
);
|
)));
|
||||||
queue.send(trigger.clone());
|
queue.send(trigger.clone());
|
||||||
sleep(TIMEOUT);
|
sleep(TIMEOUT);
|
||||||
let msg = Message::new(doc_name.clone(), Query::new(doc_name.clone()));
|
let msg = Message::new(Query::new(doc_name.clone()));
|
||||||
queue.send(msg.clone());
|
queue.send(msg.clone());
|
||||||
let mut result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
let mut result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
|
||||||
while result.get_message_id() != msg.get_message_id() {
|
while result.get_message_id() != msg.get_message_id() {
|
||||||
|
|||||||
@ -65,7 +65,7 @@ impl Session {
|
|||||||
|
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
let sender_id = queue.add_sender(tx);
|
let sender_id = queue.add_sender(tx);
|
||||||
let msg = Message::new(NameType::None, docdef);
|
let msg = Message::new(docdef);
|
||||||
let msg_id = msg.get_message_id().clone();
|
let msg_id = msg.get_message_id().clone();
|
||||||
let path = Path::new(
|
let path = Path::new(
|
||||||
Include::Just(msg_id),
|
Include::Just(msg_id),
|
||||||
@ -132,7 +132,7 @@ mod sessions {
|
|||||||
];
|
];
|
||||||
for path in paths.iter() {
|
for path in paths.iter() {
|
||||||
let reg = Register::new(id.clone(), RegMsg::AddRoute(path.clone()));
|
let reg = Register::new(id.clone(), RegMsg::AddRoute(path.clone()));
|
||||||
queue.send(Message::new(NameType::None, reg));
|
queue.send(Message::new(reg));
|
||||||
rx.recv_timeout(TIMEOUT).unwrap();
|
rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
}
|
}
|
||||||
Self {
|
Self {
|
||||||
@ -146,7 +146,7 @@ mod sessions {
|
|||||||
where
|
where
|
||||||
A: Into<MsgAction>,
|
A: Into<MsgAction>,
|
||||||
{
|
{
|
||||||
Message::new(Session::doc_names()[0].clone(), action)
|
Message::new(action)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn recv(&self) -> Result<Message, RecvTimeoutError> {
|
fn recv(&self) -> Result<Message, RecvTimeoutError> {
|
||||||
@ -159,7 +159,7 @@ mod sessions {
|
|||||||
|
|
||||||
fn send_registry_message(&self, msg: RegMsg) {
|
fn send_registry_message(&self, msg: RegMsg) {
|
||||||
let request = Register::new(self.sender_id.clone(), msg);
|
let request = Register::new(self.sender_id.clone(), msg);
|
||||||
self.queue.send(Message::new(NameType::None, request));
|
self.queue.send(Message::new(request));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -92,7 +92,7 @@ impl MoreThanText {
|
|||||||
None => new_session,
|
None => new_session,
|
||||||
};
|
};
|
||||||
let doc_name = Name::english("session");
|
let doc_name = Name::english("session");
|
||||||
let msg = Message::new(doc_name.clone(), action.clone());
|
let msg = Message::new(action.clone());
|
||||||
let msg_id = msg.get_message_id();
|
let msg_id = msg.get_message_id();
|
||||||
let path = Path::new(
|
let path = Path::new(
|
||||||
Include::Just(msg_id.clone()),
|
Include::Just(msg_id.clone()),
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
use super::MessageAction;
|
||||||
use crate::{
|
use crate::{
|
||||||
action::{CalcValue, Field, FieldType, MsgAction, Operand, Query, Reply},
|
action::{CalcValue, Field, FieldType, MsgAction, Operand, Query, Reply},
|
||||||
mtterror::{ErrorID, MTTError},
|
mtterror::{ErrorID, MTTError},
|
||||||
@ -9,19 +10,30 @@ use std::{
|
|||||||
collections::{HashMap, HashSet},
|
collections::{HashMap, HashSet},
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
use super::MessageAction;
|
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Message {
|
pub struct Message {
|
||||||
msg_id: Uuid,
|
msg_id: Uuid,
|
||||||
document_id: NameType,
|
// document_id: NameType,
|
||||||
action: MsgAction,
|
action: MsgAction,
|
||||||
route: Route,
|
route: Route,
|
||||||
// session: Option<?>
|
// session: Option<?>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Message {
|
impl Message {
|
||||||
|
pub fn new<A>(action: A) -> Self
|
||||||
|
where
|
||||||
|
A: Into<MsgAction>,
|
||||||
|
{
|
||||||
|
Self {
|
||||||
|
msg_id: Uuid::new_v4(),
|
||||||
|
action: action.into(),
|
||||||
|
route: Route::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
pub fn new<D, A>(doc_id: D, action: A) -> Self
|
pub fn new<D, A>(doc_id: D, action: A) -> Self
|
||||||
where
|
where
|
||||||
D: Into<NameType>,
|
D: Into<NameType>,
|
||||||
@ -34,6 +46,7 @@ impl Message {
|
|||||||
route: Route::default(),
|
route: Route::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
pub fn get_message_id(&self) -> &Uuid {
|
pub fn get_message_id(&self) -> &Uuid {
|
||||||
&self.msg_id
|
&self.msg_id
|
||||||
@ -65,7 +78,6 @@ impl Message {
|
|||||||
{
|
{
|
||||||
Self {
|
Self {
|
||||||
msg_id: self.msg_id.clone(),
|
msg_id: self.msg_id.clone(),
|
||||||
document_id: self.document_id.clone(),
|
|
||||||
action: action.into(),
|
action: action.into(),
|
||||||
route: Route::default(),
|
route: Route::default(),
|
||||||
}
|
}
|
||||||
@ -78,7 +90,6 @@ impl Message {
|
|||||||
{
|
{
|
||||||
Self {
|
Self {
|
||||||
msg_id: self.msg_id.clone(),
|
msg_id: self.msg_id.clone(),
|
||||||
document_id: doc_id.into(),
|
|
||||||
action: action.into(),
|
action: action.into(),
|
||||||
route: Route::default(),
|
route: Route::default(),
|
||||||
}
|
}
|
||||||
@ -94,14 +105,7 @@ mod messages {
|
|||||||
fn can_the_document_be_a_named_reference() {
|
fn can_the_document_be_a_named_reference() {
|
||||||
let dts = [Name::english("one"), Name::english("two")];
|
let dts = [Name::english("one"), Name::english("two")];
|
||||||
for document in dts.into_iter() {
|
for document in dts.into_iter() {
|
||||||
let msg = Message::new(
|
let msg = Message::new(MsgAction::Create(DocDef::new(document.clone())));
|
||||||
document.clone(),
|
|
||||||
MsgAction::Create(DocDef::new(document.clone())),
|
|
||||||
);
|
|
||||||
match &msg.document_id {
|
|
||||||
NameType::Name(data) => assert_eq!(data, &document),
|
|
||||||
_ => unreachable!("should have been a string id"),
|
|
||||||
}
|
|
||||||
match msg.get_action() {
|
match msg.get_action() {
|
||||||
MsgAction::Create(_) => {}
|
MsgAction::Create(_) => {}
|
||||||
_ => unreachable!("should have been a create document"),
|
_ => unreachable!("should have been a create document"),
|
||||||
@ -112,11 +116,7 @@ mod messages {
|
|||||||
#[test]
|
#[test]
|
||||||
fn can_the_document_be_an_id() {
|
fn can_the_document_be_an_id() {
|
||||||
let document = Uuid::new_v4();
|
let document = Uuid::new_v4();
|
||||||
let msg = Message::new(document.clone(), Query::new(document.clone()));
|
let msg = Message::new(Query::new(document.clone()));
|
||||||
match msg.document_id {
|
|
||||||
NameType::ID(data) => assert_eq!(data, document),
|
|
||||||
_ => unreachable!("should have been an id"),
|
|
||||||
}
|
|
||||||
match msg.get_action() {
|
match msg.get_action() {
|
||||||
MsgAction::Query(_) => {}
|
MsgAction::Query(_) => {}
|
||||||
_ => unreachable!("should have been an access query"),
|
_ => unreachable!("should have been an access query"),
|
||||||
@ -126,7 +126,7 @@ mod messages {
|
|||||||
#[test]
|
#[test]
|
||||||
fn do_messages_contain_routes() {
|
fn do_messages_contain_routes() {
|
||||||
let name = Name::english("whatever");
|
let name = Name::english("whatever");
|
||||||
let mut msg = Message::new(name.clone(), Query::new(name.clone()));
|
let mut msg = Message::new(Query::new(name.clone()));
|
||||||
let default_route = msg.get_route();
|
let default_route = msg.get_route();
|
||||||
match default_route.msg_id {
|
match default_route.msg_id {
|
||||||
Include::Just(_) => unreachable!("should defalt to all"),
|
Include::Just(_) => unreachable!("should defalt to all"),
|
||||||
@ -166,7 +166,7 @@ mod messages {
|
|||||||
fn is_the_message_id_random() {
|
fn is_the_message_id_random() {
|
||||||
let mut ids: Vec<Uuid> = Vec::new();
|
let mut ids: Vec<Uuid> = Vec::new();
|
||||||
for _ in 0..5 {
|
for _ in 0..5 {
|
||||||
let msg = Message::new(Name::english("tester"), Query::new(Name::english("test")));
|
let msg = Message::new(Query::new(Name::english("test")));
|
||||||
let id = msg.get_message_id().clone();
|
let id = msg.get_message_id().clone();
|
||||||
assert!(!ids.contains(&id), "{:?} containts {}", ids, id);
|
assert!(!ids.contains(&id), "{:?} containts {}", ids, id);
|
||||||
ids.push(id);
|
ids.push(id);
|
||||||
@ -176,14 +176,10 @@ mod messages {
|
|||||||
#[test]
|
#[test]
|
||||||
fn can_make_reply_message() {
|
fn can_make_reply_message() {
|
||||||
let name = Name::english("testing");
|
let name = Name::english("testing");
|
||||||
let msg = Message::new(name.clone(), Query::new(name.clone()));
|
let msg = Message::new(Query::new(name.clone()));
|
||||||
let responce = Reply::new(Name::english("something"));
|
let responce = Reply::new(Name::english("something"));
|
||||||
let reply = msg.response(responce);
|
let reply = msg.response(responce);
|
||||||
assert_eq!(reply.get_message_id(), msg.get_message_id());
|
assert_eq!(reply.get_message_id(), msg.get_message_id());
|
||||||
match &reply.document_id {
|
|
||||||
NameType::Name(data) => assert_eq!(data, &name),
|
|
||||||
_ => unreachable!("should have been a name"),
|
|
||||||
}
|
|
||||||
match reply.get_action() {
|
match reply.get_action() {
|
||||||
MsgAction::Reply(_) => {}
|
MsgAction::Reply(_) => {}
|
||||||
_ => unreachable!("should have been a reply"),
|
_ => unreachable!("should have been a reply"),
|
||||||
@ -193,14 +189,10 @@ mod messages {
|
|||||||
#[test]
|
#[test]
|
||||||
fn can_make_error_message() {
|
fn can_make_error_message() {
|
||||||
let name = Name::english("testing");
|
let name = Name::english("testing");
|
||||||
let msg = Message::new(name.clone(), Query::new(name.clone()));
|
let msg = Message::new(Query::new(name.clone()));
|
||||||
let err_msg = Uuid::new_v4().to_string();
|
let err_msg = Uuid::new_v4().to_string();
|
||||||
let result = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound));
|
let result = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound));
|
||||||
assert_eq!(result.get_message_id(), msg.get_message_id());
|
assert_eq!(result.get_message_id(), msg.get_message_id());
|
||||||
match &result.document_id {
|
|
||||||
NameType::Name(data) => assert_eq!(data, &name),
|
|
||||||
_ => unreachable!("should have been a name"),
|
|
||||||
}
|
|
||||||
match result.get_action() {
|
match result.get_action() {
|
||||||
MsgAction::Error(data) => match data.error_id() {
|
MsgAction::Error(data) => match data.error_id() {
|
||||||
ErrorID::DocumentNotFound => {}
|
ErrorID::DocumentNotFound => {}
|
||||||
@ -213,14 +205,12 @@ mod messages {
|
|||||||
#[test]
|
#[test]
|
||||||
fn can_make_a_response_message() {
|
fn can_make_a_response_message() {
|
||||||
let doc_id = Uuid::new_v4();
|
let doc_id = Uuid::new_v4();
|
||||||
let msg = Message::new(doc_id.clone(), Query::new(doc_id.clone()));
|
let msg = Message::new(Query::new(doc_id.clone()));
|
||||||
let data = Uuid::new_v4().to_string();
|
let data = Uuid::new_v4().to_string();
|
||||||
let result1 = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound));
|
let result1 = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound));
|
||||||
let result2 = msg.response(Reply::new(NameType::None));
|
let result2 = msg.response(Reply::new(NameType::None));
|
||||||
assert_eq!(result1.get_message_id(), msg.get_message_id());
|
assert_eq!(result1.get_message_id(), msg.get_message_id());
|
||||||
assert_eq!(result2.get_message_id(), msg.get_message_id());
|
assert_eq!(result2.get_message_id(), msg.get_message_id());
|
||||||
assert_eq!(result1.document_id, msg.document_id);
|
|
||||||
assert_eq!(result2.document_id, msg.document_id);
|
|
||||||
let action1 = result1.get_action();
|
let action1 = result1.get_action();
|
||||||
match action1 {
|
match action1 {
|
||||||
MsgAction::Error(err) => match err.error_id() {
|
MsgAction::Error(err) => match err.error_id() {
|
||||||
|
|||||||
@ -36,9 +36,7 @@ impl Router {
|
|||||||
|
|
||||||
fn remove_sender(&mut self, id: &Uuid) {
|
fn remove_sender(&mut self, id: &Uuid) {
|
||||||
let action = Register::new(Uuid::nil(), RegMsg::RemoveSender(id.clone()));
|
let action = Register::new(Uuid::nil(), RegMsg::RemoveSender(id.clone()));
|
||||||
self.doc_registry
|
self.doc_registry.send(Message::new(action)).unwrap();
|
||||||
.send(Message::new(NameType::None, action))
|
|
||||||
.unwrap();
|
|
||||||
self.senders.remove(id);
|
self.senders.remove(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,7 +135,7 @@ mod routers {
|
|||||||
fn can_pass_message() {
|
fn can_pass_message() {
|
||||||
let setup = Setup::new();
|
let setup = Setup::new();
|
||||||
let router = setup.get_router();
|
let router = setup.get_router();
|
||||||
let msg = Message::new(Name::english("task"), Query::new(Name::english("task")));
|
let msg = Message::new(Query::new(Name::english("task")));
|
||||||
router.send(msg.clone());
|
router.send(msg.clone());
|
||||||
let result = setup.recv().unwrap();
|
let result = setup.recv().unwrap();
|
||||||
assert_eq!(result.get_message_id(), msg.get_message_id());
|
assert_eq!(result.get_message_id(), msg.get_message_id());
|
||||||
@ -154,10 +152,7 @@ mod routers {
|
|||||||
receivers.insert(id, rx);
|
receivers.insert(id, rx);
|
||||||
}
|
}
|
||||||
for (id, recv) in receivers.iter() {
|
for (id, recv) in receivers.iter() {
|
||||||
let msg = Message::new(
|
let msg = Message::new(Query::new(Name::english(id.to_string().as_str())));
|
||||||
Name::english(id.to_string().as_str()),
|
|
||||||
Query::new(Name::english(id.to_string().as_str())),
|
|
||||||
);
|
|
||||||
router.forward(id, msg.clone());
|
router.forward(id, msg.clone());
|
||||||
let result = recv.recv_timeout(TIMEOUT).unwrap();
|
let result = recv.recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(result.get_message_id(), msg.get_message_id());
|
assert_eq!(result.get_message_id(), msg.get_message_id());
|
||||||
@ -191,7 +186,7 @@ mod routers {
|
|||||||
router.remove_sender(&removed);
|
router.remove_sender(&removed);
|
||||||
let router = setup.get_router();
|
let router = setup.get_router();
|
||||||
let removed_recv = receivers.remove(&removed).unwrap();
|
let removed_recv = receivers.remove(&removed).unwrap();
|
||||||
router.forward(&removed, Message::new(NameType::None, Query::internal()));
|
router.forward(&removed, Message::new(Query::internal()));
|
||||||
match removed_recv.recv_timeout(TIMEOUT) {
|
match removed_recv.recv_timeout(TIMEOUT) {
|
||||||
Err(err) => match err {
|
Err(err) => match err {
|
||||||
RecvTimeoutError::Disconnected => {}
|
RecvTimeoutError::Disconnected => {}
|
||||||
@ -212,10 +207,7 @@ mod routers {
|
|||||||
_ => unreachable!("got {:?}, should have been register", action),
|
_ => unreachable!("got {:?}, should have been register", action),
|
||||||
}
|
}
|
||||||
for (id, recv) in receivers.iter() {
|
for (id, recv) in receivers.iter() {
|
||||||
let msg = Message::new(
|
let msg = Message::new(Query::new(Name::english(id.to_string().as_str())));
|
||||||
Name::english(id.to_string().as_str()),
|
|
||||||
Query::new(Name::english(id.to_string().as_str())),
|
|
||||||
);
|
|
||||||
router.forward(id, msg.clone());
|
router.forward(id, msg.clone());
|
||||||
let result = recv.recv_timeout(TIMEOUT).unwrap();
|
let result = recv.recv_timeout(TIMEOUT).unwrap();
|
||||||
assert_eq!(result.get_message_id(), msg.get_message_id());
|
assert_eq!(result.get_message_id(), msg.get_message_id());
|
||||||
@ -276,7 +268,7 @@ mod queues {
|
|||||||
|
|
||||||
fn send_reg_msg(&self, msg: RegMsg) {
|
fn send_reg_msg(&self, msg: RegMsg) {
|
||||||
let reg_msg = Register::new(self.rx_id.clone(), msg);
|
let reg_msg = Register::new(self.rx_id.clone(), msg);
|
||||||
self.test_mod.send(Message::new(NameType::None, reg_msg));
|
self.test_mod.send(Message::new(reg_msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn recv(&self) -> Result<Message, RecvTimeoutError> {
|
fn recv(&self) -> Result<Message, RecvTimeoutError> {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user