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