test starts executing

feat/orm
Laurin Weger 2 weeks ago
parent 402e9ec3cd
commit 87481d060d
No known key found for this signature in database
GPG Key ID: 9B372BB0B792770F
  1. 28
      nextgraph/src/tests/orm.rs
  2. 26
      ng-verifier/src/orm/mod.rs

@ -7,13 +7,15 @@
// notice may not be copied, modified, or distributed except // notice may not be copied, modified, or distributed except
// according to those terms. // according to those terms.
use crate::local_broker::{doc_create, doc_sparql_construct, doc_sparql_update}; use crate::local_broker::{doc_create, doc_sparql_construct, doc_sparql_update, orm_start};
use crate::tests::create_or_open_wallet::create_or_open_wallet; use crate::tests::create_or_open_wallet::create_or_open_wallet;
use async_std::stream::{IntoStream, StreamExt};
use ng_net::app_protocol::{AppResponse, AppResponseV0, NuriV0};
use ng_net::orm::{ use ng_net::orm::{
BasicType, OrmSchemaDataType, OrmSchemaLiteralType, OrmSchemaPredicate, OrmSchemaShape, BasicType, OrmSchemaDataType, OrmSchemaLiteralType, OrmSchemaPredicate, OrmSchemaShape,
OrmShapeType, OrmShapeType,
}; };
use ng_verifier::orm::orm::shape_type_to_sparql; use ng_verifier::orm::shape_type_to_sparql;
use ng_repo::log_info; use ng_repo::log_info;
use std::collections::HashMap; use std::collections::HashMap;
@ -531,13 +533,11 @@ INSERT DATA {
// Generate and run query. This must not infinite loop. // Generate and run query. This must not infinite loop.
let query = shape_type_to_sparql(&shape_type.schema, &shape_type.shape, None).unwrap(); let query = shape_type_to_sparql(&shape_type.schema, &shape_type.shape, None).unwrap();
log_info!("cyclic query result:\n{}", query);
let triples = doc_sparql_construct(session_id, query, Some(doc_nuri.clone())) let triples = doc_sparql_construct(session_id, query, Some(doc_nuri.clone()))
.await .await
.unwrap(); .unwrap();
// Assert: All 6 triples (3 per person) should be returned. // Assert: All 6 triples (3 per person) should be returned.
log_info!("Triples:\n{:?}", triples);
assert_eq!(triples.len(), 6); assert_eq!(triples.len(), 6);
} }
@ -810,6 +810,24 @@ INSERT DATA {
shape: "http://example.org/TestObject".to_string(), shape: "http://example.org/TestObject".to_string(),
}; };
// log_info!("starting orm test");
let nuri = NuriV0::new_from(&doc_nuri).expect("parse nuri");
let (mut receiver, cancel_fn) = orm_start(nuri, shape_type, session_id)
.await
.expect("orm_start");
log_info!("orm_start called");
while let Some(app_response) = receiver.next().await {
let orm_json = match app_response {
AppResponse::V0(v) => match v {
AppResponseV0::OrmInitial(json) => Some(json),
_ => None,
},
}
.unwrap();
log_info!("ORM JSON arrived\n: {:?}", orm_json);
}
// //
} }

@ -13,6 +13,7 @@ pub mod validation;
use futures::channel::mpsc; use futures::channel::mpsc;
use ng_oxigraph::oxrdf::Subject; use ng_oxigraph::oxrdf::Subject;
use ng_repo::types::OverlayId;
use std::collections::HashMap; use std::collections::HashMap;
use std::collections::HashSet; use std::collections::HashSet;
@ -59,6 +60,8 @@ impl Verifier {
// ); // );
//let base = NuriV0::repo_id(&repo.id); //let base = NuriV0::repo_id(&repo.id);
log_debug!("querying construct\n{}\n\n", query);
let nuri_str = nuri.as_ref().map(|s| s.as_str()); let nuri_str = nuri.as_ref().map(|s| s.as_str());
let parsed = let parsed =
@ -133,8 +136,6 @@ impl Verifier {
triples_removed: &[Triple], triples_removed: &[Triple],
orm_changes: &mut OrmChanges, orm_changes: &mut OrmChanges,
) -> Result<(), NgError> { ) -> Result<(), NgError> {
let nuri_repo = nuri.repo();
// First in, last out stack to keep track of objects to validate (nested objects first). Strings are object IRIs. // First in, last out stack to keep track of objects to validate (nested objects first). Strings are object IRIs.
let mut shape_validation_queue: Vec<(Arc<OrmSchemaShape>, Vec<String>)> = vec![]; let mut shape_validation_queue: Vec<(Arc<OrmSchemaShape>, Vec<String>)> = vec![];
// Add root shape for first validation run. // Add root shape for first validation run.
@ -188,8 +189,7 @@ impl Verifier {
.unwrap() .unwrap()
.iter_mut() .iter_mut()
.find(|s| s.session_id == session_id && s.shape_type.shape == shape.iri) .find(|s| s.session_id == session_id && s.shape_type.shape == shape.iri)
.unwrap() .unwrap();
.clone();
if let Err(e) = add_remove_triples( if let Err(e) = add_remove_triples(
shape.clone(), shape.clone(),
@ -252,7 +252,7 @@ impl Verifier {
let shape_query = let shape_query =
shape_type_to_sparql(&schema, &shape_iri, Some(objects_to_fetch))?; shape_type_to_sparql(&schema, &shape_iri, Some(objects_to_fetch))?;
let new_triples = let new_triples =
self.query_sparql_construct(shape_query, Some(nuri_repo.clone()))?; self.query_sparql_construct(shape_query, Some(nuri_to_string(nuri)))?;
self.process_changes_for_shape_and_session( self.process_changes_for_shape_and_session(
nuri, nuri,
@ -491,8 +491,7 @@ impl Verifier {
) -> Result<Value, NgError> { ) -> Result<Value, NgError> {
// Query triples for this shape // Query triples for this shape
let shape_query = shape_type_to_sparql(&shape_type.schema, &shape_type.shape, None)?; let shape_query = shape_type_to_sparql(&shape_type.schema, &shape_type.shape, None)?;
// TODO: How to stringify nuri correctly? let shape_triples = self.query_sparql_construct(shape_query, Some(nuri_to_string(nuri)))?;
let shape_triples = self.query_sparql_construct(shape_query, Some(nuri.repo()))?;
let changes: OrmChanges = let changes: OrmChanges =
self.apply_triple_changes(&shape_triples, &[], nuri, Some(session_id.clone()))?; self.apply_triple_changes(&shape_triples, &[], nuri, Some(session_id.clone()))?;
@ -868,3 +867,16 @@ pub fn group_by_subject_for_shape<'a>(
return triples_by_subject; return triples_by_subject;
} }
fn nuri_to_string(nuri: &NuriV0) -> String {
// Get repo_id and overlay_id from the nuri
let repo_id = nuri.target.repo_id();
let overlay_id = if let Some(overlay_link) = &nuri.overlay {
overlay_link.clone().try_into().unwrap()
} else {
// Default overlay for the repo
OverlayId::outer(repo_id)
};
let graph_name = NuriV0::repo_graph_name(repo_id, &overlay_id);
graph_name
}

Loading…
Cancel
Save