xtest storage: add case 6019 for storage independence
The TA's storage should be independent of each other. What ever
TA #2 do should not affect TA #1's stroage.
Signed-off-by: Jianhui Li <airbak.li@hisilicon.com>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
diff --git a/host/xtest/regression_6000.c b/host/xtest/regression_6000.c
index 8c0e953..2016311 100644
--- a/host/xtest/regression_6000.c
+++ b/host/xtest/regression_6000.c
@@ -1815,6 +1815,87 @@
DEFINE_TEST_MULTIPLE_STORAGE_IDS(xtest_tee_test_6018)
+static void xtest_tee_test_6019_single(ADBG_Case_t *c, uint32_t storage_id)
+{
+ TEEC_Session sess;
+ TEEC_Session sess2;
+ uint32_t orig;
+ uint32_t obj;
+ uint32_t obj2;
+ uint8_t out[10] = { 0 };
+ uint32_t count;
+
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c,
+ xtest_teec_open_session(&sess, &storage_ta_uuid, NULL, &orig)))
+ return;
+
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c,
+ xtest_teec_open_session(&sess2, &storage2_ta_uuid, NULL,
+ &orig)))
+ goto exit3;
+
+ /* TA #1 creates a persistent object */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c,
+ fs_create(&sess, file_01, sizeof(file_01),
+ TEE_DATA_FLAG_ACCESS_WRITE |
+ TEE_DATA_FLAG_ACCESS_WRITE_META |
+ TEE_DATA_FLAG_OVERWRITE, 0, data_00,
+ sizeof(data_00), &obj, storage_id)))
+ goto exit2;
+
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_close(&sess, obj)))
+ goto exit1;
+
+ /* TA #2 creates a persistent object */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c,
+ fs_create(&sess2, file_01, sizeof(file_01),
+ TEE_DATA_FLAG_ACCESS_WRITE |
+ TEE_DATA_FLAG_ACCESS_WRITE_META |
+ TEE_DATA_FLAG_OVERWRITE, 0, data_01,
+ sizeof(data_01), &obj2, storage_id)))
+ goto exit1;
+
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_close(&sess2, obj2)))
+ goto exit;
+
+ /* TA #1 open and read */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c,
+ fs_open(&sess, file_01, sizeof(file_01),
+ TEE_DATA_FLAG_ACCESS_READ |
+ TEE_DATA_FLAG_ACCESS_WRITE_META, &obj, storage_id)))
+ goto exit;
+
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_read(&sess, obj, out, 10, &count)))
+ goto exit;
+
+ /* verify */
+ (void)ADBG_EXPECT_BUFFER(c, data_00, 10, out, count);
+
+ /* TA #2 open and read */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c,
+ fs_open(&sess2, file_01, sizeof(file_01),
+ TEE_DATA_FLAG_ACCESS_READ |
+ TEE_DATA_FLAG_ACCESS_WRITE_META, &obj2, storage_id)))
+ goto exit;
+
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_read(&sess2, obj2, out, 10, &count)))
+ goto exit;
+
+ /* verify */
+ (void)ADBG_EXPECT_BUFFER(c, data_01, 10, out, count);
+
+exit:
+ ADBG_EXPECT_TEEC_SUCCESS(c, fs_unlink(&sess2, obj2));
+exit1:
+ ADBG_EXPECT_TEEC_SUCCESS(c, fs_unlink(&sess, obj));
+exit2:
+ TEEC_CloseSession(&sess2);
+exit3:
+ TEEC_CloseSession(&sess);
+}
+
+DEFINE_TEST_MULTIPLE_STORAGE_IDS(xtest_tee_test_6019)
+
ADBG_CASE_DEFINE(regression, 6001, xtest_tee_test_6001,
"Test TEE_CreatePersistentObject");
ADBG_CASE_DEFINE(regression, 6002, xtest_tee_test_6002,
@@ -1851,3 +1932,4 @@
ADBG_CASE_DEFINE(regression, 6017, xtest_tee_test_6017,
"Test Persistent objects info");
ADBG_CASE_DEFINE(regression, 6018, xtest_tee_test_6018, "Large object");
+ADBG_CASE_DEFINE(regression, 6019, xtest_tee_test_6019, "Storage independence");