You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by ms...@apache.org on 2020/03/10 01:03:51 UTC
[incubator-teaclave] branch develop updated: [proto] Add
new/constructor for small request/response structure of frontend/management
services
This is an automated email from the ASF dual-hosted git repository.
mssun pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git
The following commit(s) were added to refs/heads/develop by this push:
new e812790 [proto] Add new/constructor for small request/response structure of frontend/management services
e812790 is described below
commit e812790325f106c357fcbdfde56bb06cee4b4982
Author: Mingshen Sun <bo...@mssun.me>
AuthorDate: Mon Mar 9 17:12:19 2020 -0700
[proto] Add new/constructor for small request/response structure of frontend/management services
---
services/proto/src/teaclave_frontend_service.rs | 158 +++++++++++++++++++++
.../enclave/src/teaclave_management_service.rs | 135 ++++++------------
2 files changed, 200 insertions(+), 93 deletions(-)
diff --git a/services/proto/src/teaclave_frontend_service.rs b/services/proto/src/teaclave_frontend_service.rs
index e76b1ef..123371d 100644
--- a/services/proto/src/teaclave_frontend_service.rs
+++ b/services/proto/src/teaclave_frontend_service.rs
@@ -28,6 +28,16 @@ pub struct RegisterInputFileRequest {
pub crypto_info: TeaclaveFileCryptoInfo,
}
+impl RegisterInputFileRequest {
+ pub fn new(url: Url, hash: impl Into<String>, crypto_info: TeaclaveFileCryptoInfo) -> Self {
+ Self {
+ url,
+ hash: hash.into(),
+ crypto_info,
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendResponse::RegisterInputFile)]
#[into_request(TeaclaveManagementResponse::RegisterInputFile)]
#[derive(Debug, PartialEq)]
@@ -35,6 +45,14 @@ pub struct RegisterInputFileResponse {
pub data_id: String,
}
+impl RegisterInputFileResponse {
+ pub fn new(data_id: impl Into<String>) -> Self {
+ Self {
+ data_id: data_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendRequest::RegisterOutputFile)]
#[into_request(TeaclaveManagementRequest::RegisterOutputFile)]
#[derive(Debug)]
@@ -43,6 +61,12 @@ pub struct RegisterOutputFileRequest {
pub crypto_info: TeaclaveFileCryptoInfo,
}
+impl RegisterOutputFileRequest {
+ pub fn new(url: Url, crypto_info: TeaclaveFileCryptoInfo) -> Self {
+ Self { url, crypto_info }
+ }
+}
+
#[into_request(TeaclaveFrontendResponse::RegisterOutputFile)]
#[into_request(TeaclaveManagementResponse::RegisterOutputFile)]
#[derive(Debug)]
@@ -50,6 +74,14 @@ pub struct RegisterOutputFileResponse {
pub data_id: String,
}
+impl RegisterOutputFileResponse {
+ pub fn new(data_id: impl Into<String>) -> Self {
+ Self {
+ data_id: data_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendRequest::RegisterFusionOutput)]
#[into_request(TeaclaveManagementRequest::RegisterFusionOutput)]
#[derive(Debug)]
@@ -57,6 +89,12 @@ pub struct RegisterFusionOutputRequest {
pub owner_list: HashSet<String>,
}
+impl RegisterFusionOutputRequest {
+ pub fn new(owner_list: HashSet<String>) -> Self {
+ Self { owner_list }
+ }
+}
+
#[into_request(TeaclaveFrontendResponse::RegisterFusionOutput)]
#[into_request(TeaclaveManagementResponse::RegisterFusionOutput)]
#[derive(Debug)]
@@ -64,6 +102,14 @@ pub struct RegisterFusionOutputResponse {
pub data_id: String,
}
+impl RegisterFusionOutputResponse {
+ pub fn new(data_id: impl Into<String>) -> Self {
+ Self {
+ data_id: data_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendRequest::RegisterInputFromOutput)]
#[into_request(TeaclaveManagementRequest::RegisterInputFromOutput)]
#[derive(Debug)]
@@ -71,6 +117,14 @@ pub struct RegisterInputFromOutputRequest {
pub data_id: String,
}
+impl RegisterInputFromOutputRequest {
+ pub fn new(data_id: impl Into<String>) -> Self {
+ Self {
+ data_id: data_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendResponse::RegisterInputFromOutput)]
#[into_request(TeaclaveManagementResponse::RegisterInputFromOutput)]
#[derive(Debug)]
@@ -78,6 +132,14 @@ pub struct RegisterInputFromOutputResponse {
pub data_id: String,
}
+impl RegisterInputFromOutputResponse {
+ pub fn new(data_id: impl Into<String>) -> Self {
+ Self {
+ data_id: data_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendRequest::GetInputFile)]
#[into_request(TeaclaveManagementRequest::GetInputFile)]
#[derive(Debug)]
@@ -85,6 +147,14 @@ pub struct GetInputFileRequest {
pub data_id: String,
}
+impl GetInputFileRequest {
+ pub fn new(data_id: impl Into<String>) -> Self {
+ Self {
+ data_id: data_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendResponse::GetInputFile)]
#[into_request(TeaclaveManagementResponse::GetInputFile)]
#[derive(Debug)]
@@ -93,6 +163,15 @@ pub struct GetInputFileResponse {
pub hash: String,
}
+impl GetInputFileResponse {
+ pub fn new(owner: HashSet<String>, hash: impl Into<String>) -> Self {
+ Self {
+ owner,
+ hash: hash.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendRequest::GetOutputFile)]
#[into_request(TeaclaveManagementRequest::GetOutputFile)]
#[derive(Debug)]
@@ -100,6 +179,14 @@ pub struct GetOutputFileRequest {
pub data_id: String,
}
+impl GetOutputFileRequest {
+ pub fn new(data_id: impl Into<String>) -> Self {
+ Self {
+ data_id: data_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveFrontendResponse::GetOutputFile)]
#[into_request(TeaclaveManagementResponse::GetOutputFile)]
#[derive(Debug)]
@@ -108,6 +195,15 @@ pub struct GetOutputFileResponse {
pub hash: String,
}
+impl GetOutputFileResponse {
+ pub fn new(owner: HashSet<String>, hash: impl Into<String>) -> Self {
+ Self {
+ owner,
+ hash: hash.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveManagementRequest::RegisterFunction)]
#[into_request(TeaclaveFrontendRequest::RegisterFunction)]
#[derive(Debug)]
@@ -127,6 +223,14 @@ pub struct RegisterFunctionResponse {
pub function_id: String,
}
+impl RegisterFunctionResponse {
+ pub fn new(function_id: impl Into<String>) -> Self {
+ Self {
+ function_id: function_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveManagementRequest::GetFunction)]
#[into_request(TeaclaveFrontendRequest::GetFunction)]
#[derive(Debug)]
@@ -134,6 +238,14 @@ pub struct GetFunctionRequest {
pub function_id: String,
}
+impl GetFunctionRequest {
+ pub fn new(function_id: impl Into<String>) -> Self {
+ Self {
+ function_id: function_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveManagementResponse::GetFunction)]
#[derive(Debug)]
pub struct GetFunctionResponse {
@@ -163,6 +275,14 @@ pub struct CreateTaskResponse {
pub task_id: String,
}
+impl CreateTaskResponse {
+ pub fn new(task_id: impl Into<String>) -> Self {
+ Self {
+ task_id: task_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveManagementRequest::GetTask)]
#[into_request(TeaclaveFrontendRequest::GetTask)]
#[derive(Debug)]
@@ -170,6 +290,14 @@ pub struct GetTaskRequest {
pub task_id: String,
}
+impl GetTaskRequest {
+ pub fn new(task_id: impl Into<String>) -> Self {
+ Self {
+ task_id: task_id.into(),
+ }
+ }
+}
+
#[into_request(TeaclaveManagementResponse::GetTask)]
#[derive(Debug)]
pub struct GetTaskResponse {
@@ -196,6 +324,20 @@ pub struct AssignDataRequest {
pub output_map: HashMap<String, String>,
}
+impl AssignDataRequest {
+ pub fn new(
+ task_id: impl Into<String>,
+ input_map: HashMap<String, String>,
+ output_map: HashMap<String, String>,
+ ) -> Self {
+ Self {
+ task_id: task_id.into(),
+ input_map,
+ output_map,
+ }
+ }
+}
+
#[derive(Debug)]
pub struct AssignDataResponse;
@@ -206,6 +348,14 @@ pub struct ApproveTaskRequest {
pub task_id: String,
}
+impl ApproveTaskRequest {
+ pub fn new(task_id: impl Into<String>) -> Self {
+ Self {
+ task_id: task_id.into(),
+ }
+ }
+}
+
#[derive(Debug)]
pub struct ApproveTaskResponse;
@@ -216,6 +366,14 @@ pub struct InvokeTaskRequest {
pub task_id: String,
}
+impl InvokeTaskRequest {
+ pub fn new(task_id: impl Into<String>) -> Self {
+ Self {
+ task_id: task_id.into(),
+ }
+ }
+}
+
#[derive(Debug)]
pub struct InvokeTaskResponse;
diff --git a/tests/functional/enclave/src/teaclave_management_service.rs b/tests/functional/enclave/src/teaclave_management_service.rs
index 54cdfc6..d802df1 100644
--- a/tests/functional/enclave/src/teaclave_management_service.rs
+++ b/tests/functional/enclave/src/teaclave_management_service.rs
@@ -60,14 +60,10 @@ fn get_client(user_id: &str) -> TeaclaveManagementClient {
}
fn test_register_input_file() {
- let request = RegisterInputFileRequest {
- url: Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap(),
- hash: "deadbeefdeadbeef".to_string(),
- crypto_info: TeaclaveFileCryptoInfo::AesGcm128(AesGcm128CryptoInfo {
- key: [0x90u8; 16],
- iv: [0x89u8; 12],
- }),
- };
+ let url = Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap();
+ let crypto_info =
+ TeaclaveFileCryptoInfo::new("aes_gcm_128", &[0x90u8; 16], &[0x89u8; 12]).unwrap();
+ let request = RegisterInputFileRequest::new(url, "deadbeefdeadbeef", crypto_info);
let mut client = get_client("mock_user");
let response = client.register_input_file(request);
@@ -76,13 +72,10 @@ fn test_register_input_file() {
}
fn test_register_output_file() {
- let request = RegisterOutputFileRequest {
- url: Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap(),
- crypto_info: TeaclaveFileCryptoInfo::AesGcm128(AesGcm128CryptoInfo {
- key: [0x90u8; 16],
- iv: [0x89u8; 12],
- }),
- };
+ let crypto_info =
+ TeaclaveFileCryptoInfo::new("aes_gcm_128", &[0x90u8; 16], &[0x89u8; 12]).unwrap();
+ let url = Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap();
+ let request = RegisterOutputFileRequest::new(url, crypto_info);
let mut client = get_client("mock_user");
let response = client.register_output_file(request);
@@ -119,71 +112,57 @@ fn test_register_input_from_output() {
// not a owner
let mut client = get_client("mock_user_c");
let data_id = "output-file-00000000-0000-0000-0000-000000000001";
- let request = RegisterInputFromOutputRequest {
- data_id: data_id.to_string(),
- };
+ let request = RegisterInputFromOutputRequest::new(data_id);
let response = client.register_input_from_output(request);
assert!(response.is_err());
// output not ready
+ let url = Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap();
+ let crypto_info = TeaclaveFileCryptoInfo::default();
let mut client = get_client("mock_user1");
- let request = RegisterOutputFileRequest {
- url: Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap(),
- crypto_info: TeaclaveFileCryptoInfo::default(),
- };
+ let request = RegisterOutputFileRequest::new(url, crypto_info);
let response = client.register_output_file(request);
assert!(response.is_ok());
- let request = RegisterInputFromOutputRequest {
- data_id: response.unwrap().data_id,
- };
+ let request = RegisterInputFromOutputRequest::new(response.unwrap().data_id);
let response = client.register_input_from_output(request);
assert!(response.is_err());
- let request = RegisterInputFromOutputRequest {
- data_id: data_id.to_string(),
- };
+ let request = RegisterInputFromOutputRequest::new(data_id);
let response = client.register_input_from_output(request);
assert!(response.is_ok());
info!("{:?}", response);
}
fn test_get_output_file() {
- let request = RegisterOutputFileRequest {
- url: Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap(),
- crypto_info: TeaclaveFileCryptoInfo::default(),
- };
+ let url = Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap();
+ let crypto_info = TeaclaveFileCryptoInfo::default();
+ let request = RegisterOutputFileRequest::new(url, crypto_info);
let mut client = get_client("mock_user");
let response = client.register_output_file(request).unwrap();
let data_id = response.data_id;
- let request = GetOutputFileRequest {
- data_id: data_id.clone(),
- };
+ let request = GetOutputFileRequest::new(&data_id);
let response = client.get_output_file(request);
assert!(response.is_ok());
let mut client = get_client("mock_another_user");
- let request = GetOutputFileRequest { data_id };
+ let request = GetOutputFileRequest::new(&data_id);
let response = client.get_output_file(request);
assert!(response.is_err());
}
fn test_get_input_file() {
- let request = RegisterInputFileRequest {
- url: Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap(),
- hash: "deadbeef".to_string(),
- crypto_info: TeaclaveFileCryptoInfo::default(),
- };
+ let url = Url::parse("s3://s3.us-west-2.amazonaws.com/mybucket/puppy.jpg.enc?key-id=deadbeefdeadbeef&key=deadbeefdeadbeef").unwrap();
+ let crypto_info = TeaclaveFileCryptoInfo::default();
+ let request = RegisterInputFileRequest::new(url, "deadbeef", crypto_info);
let mut client = get_client("mock_user");
let response = client.register_input_file(request).unwrap();
let data_id = response.data_id;
- let request = GetInputFileRequest {
- data_id: data_id.clone(),
- };
+ let request = GetInputFileRequest::new(&data_id);
let response = client.get_input_file(request);
assert!(response.is_ok());
let mut client = get_client("mock_another_user");
- let request = GetInputFileRequest { data_id };
+ let request = GetInputFileRequest::new(&data_id);
let response = client.get_input_file(request);
assert!(response.is_err());
}
@@ -231,12 +210,10 @@ fn test_get_function() {
assert!(response.is_ok());
info!("{:?}", response.unwrap());
let mut client = get_client("mock_unauthorized_user");
- let request = GetFunctionRequest { function_id };
+ let request = GetFunctionRequest::new(function_id);
let response = client.get_function(request);
assert!(response.is_err());
- let request = GetFunctionRequest {
- function_id: "function-00000000-0000-0000-0000-000000000001".to_string(),
- };
+ let request = GetFunctionRequest::new("function-00000000-0000-0000-0000-000000000001");
let response = client.get_function(request);
assert!(response.is_ok());
info!("{:?}", response.unwrap());
@@ -639,42 +616,30 @@ fn test_approve_task() {
let response = client3.assign_data(request);
assert!(response.is_ok());
- let request = GetTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = GetTaskRequest::new(&task_id);
let response = client2.get_task(request);
assert_eq!(response.unwrap().status, TaskStatus::Ready);
// user_id not in task.participants
let mut unknown_client = get_client("non-participant");
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
let response = unknown_client.approve_task(request);
assert!(response.is_err());
//all participants approve the task
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
let response = client.approve_task(request);
assert!(response.is_ok());
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
let response = client1.approve_task(request);
assert!(response.is_ok());
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
let response = client2.approve_task(request);
assert!(response.is_ok());
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
let response = client3.approve_task(request);
assert!(response.is_ok());
- let request = GetTaskRequest { task_id };
+ let request = GetTaskRequest::new(&task_id);
let response = client2.get_task(request);
assert_eq!(response.unwrap().status, TaskStatus::Approved);
}
@@ -747,49 +712,33 @@ fn test_invoke_task() {
assert!(response.is_ok());
// task status != Approved
- let request = InvokeTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = InvokeTaskRequest::new(&task_id);
let response = client.invoke_task(request);
assert!(response.is_err());
//all participants approve the task
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
client.approve_task(request).unwrap();
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
client1.approve_task(request).unwrap();
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
client2.approve_task(request).unwrap();
- let request = ApproveTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = ApproveTaskRequest::new(&task_id);
client3.approve_task(request).unwrap();
- let request = GetTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = GetTaskRequest::new(&task_id);
let response = client2.get_task(request).unwrap();
assert_eq!(response.status, TaskStatus::Approved);
// user_id != task.creator
- let request = InvokeTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = InvokeTaskRequest::new(&task_id);
let response = client2.invoke_task(request);
assert!(response.is_err());
// invoke task
- let request = InvokeTaskRequest {
- task_id: task_id.clone(),
- };
+ let request = InvokeTaskRequest::new(&task_id);
client.invoke_task(request).unwrap();
- let request = GetTaskRequest { task_id };
+ let request = GetTaskRequest::new(&task_id);
let response = client2.get_task(request).unwrap();
assert_eq!(response.status, TaskStatus::Running);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org