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 2021/12/02 02:28:13 UTC

[incubator-teaclave] branch master updated: [Mod] Persistent MockDB in test mode. (#580)

This is an automated email from the ASF dual-hosted git repository.

mssun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git


The following commit(s) were added to refs/heads/master by this push:
     new 9106408  [Mod] Persistent MockDB in test mode. (#580)
9106408 is described below

commit 910640830c086d66d34940d46fa0205d10185b9c
Author: Zhaofeng Chen <zf...@apache.org>
AuthorDate: Wed Dec 1 18:28:07 2021 -0800

    [Mod] Persistent MockDB in test mode. (#580)
    
    Co-authored-by: zf <ch...@baidu.com>
---
 services/storage/enclave/src/lib.rs     | 35 +++++++++++++++++++++++++++++----
 services/storage/enclave/src/service.rs | 17 ----------------
 2 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/services/storage/enclave/src/lib.rs b/services/storage/enclave/src/lib.rs
index a456bed..4bf8252 100644
--- a/services/storage/enclave/src/lib.rs
+++ b/services/storage/enclave/src/lib.rs
@@ -77,10 +77,12 @@ fn start_service(config: &RuntimeConfig) -> Result<()> {
 
     let (sender, receiver) = channel();
     thread::spawn(move || {
-        let opt = rusty_leveldb::in_memory();
-        let storage = DB::open("teaclave_db", opt).expect("cannot open teaclave_db");
-        let mut storage_service =
-            service::TeaclaveStorageService::new(RefCell::new(storage), receiver);
+        #[cfg(test_mode)]
+        let db = test_mode::create_mock_db();
+        #[cfg(not(test_mode))]
+        let db = create_teaclave_db();
+
+        let mut storage_service = service::TeaclaveStorageService::new(RefCell::new(db), receiver);
         storage_service.start();
     });
 
@@ -100,6 +102,31 @@ fn start_service(config: &RuntimeConfig) -> Result<()> {
     Ok(())
 }
 
+#[cfg(not(test_mode))]
+pub(crate) fn create_teaclave_db() -> DB {
+    let opt = rusty_leveldb::in_memory();
+    let database = DB::open("teaclave_db", opt).expect("cannot open teaclave_db");
+    database
+}
+
+#[cfg(test_mode)]
+mod test_mode {
+    use super::*;
+    pub(crate) fn create_mock_db() -> DB {
+        let key = [
+            0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a,
+            0x09, 0x08,
+        ];
+        let opt = rusty_leveldb::Options::new_disk_db_with(key);
+        let mut database = DB::open("mock_db", opt).unwrap();
+        database.put(b"test_get_key", b"test_get_value").unwrap();
+        database
+            .put(b"test_delete_key", b"test_delete_value")
+            .unwrap();
+        database
+    }
+}
+
 #[handle_ecall]
 fn handle_start_service(input: &StartServiceInput) -> TeeServiceResult<StartServiceOutput> {
     match start_service(&input.config) {
diff --git a/services/storage/enclave/src/service.rs b/services/storage/enclave/src/service.rs
index 77b9713..94030d5 100644
--- a/services/storage/enclave/src/service.rs
+++ b/services/storage/enclave/src/service.rs
@@ -155,9 +155,6 @@ impl<'a> DBQueue<'a> {
 
 impl TeaclaveStorageService {
     pub(crate) fn start(&mut self) {
-        #[cfg(test_mode)]
-        test_mode::repalce_with_mock_database(self);
-
         loop {
             let request = match self.receiver.recv() {
                 Ok(req) => req,
@@ -228,20 +225,6 @@ impl TeaclaveStorage for TeaclaveStorageService {
     }
 }
 
-#[cfg(test_mode)]
-mod test_mode {
-    use super::*;
-    pub(crate) fn repalce_with_mock_database(service: &mut TeaclaveStorageService) {
-        let opt = rusty_leveldb::in_memory();
-        let mut database = DB::open("mock_db", opt).unwrap();
-        database.put(b"test_get_key", b"test_get_value").unwrap();
-        database
-            .put(b"test_delete_key", b"test_delete_value")
-            .unwrap();
-        service.database.replace(database);
-    }
-}
-
 #[cfg(feature = "enclave_unit_test")]
 pub mod tests {
     use super::*;

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org