]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UnitTestFrameworkPkg/Include/Library/UnitTestPersistenceLib.h
UnitTestFrameworkPkg: Library classes private to public
[mirror_edk2.git] / UnitTestFrameworkPkg / Include / Library / UnitTestPersistenceLib.h
diff --git a/UnitTestFrameworkPkg/Include/Library/UnitTestPersistenceLib.h b/UnitTestFrameworkPkg/Include/Library/UnitTestPersistenceLib.h
new file mode 100644 (file)
index 0000000..be29e07
--- /dev/null
@@ -0,0 +1,76 @@
+/** @file\r
+  This header file describes a library that contains functions to save and\r
+  restore unit test internal state, in case the test needs to pause and resume\r
+  (eg. a reboot-based test).\r
+\r
+  Copyright (c) Microsoft Corporation.<BR>\r
+  Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef _UNIT_TEST_PERSISTENCE_LIB_H_\r
+#define _UNIT_TEST_PERSISTENCE_LIB_H_\r
+\r
+#include <UnitTestFrameworkTypes.h>\r
+\r
+#define UNIT_TEST_PERSISTENCE_LIB_VERSION  1\r
+\r
+/**\r
+  Determines whether a persistence cache already exists for\r
+  the given framework.\r
+\r
+  @param[in]  FrameworkHandle   A pointer to the framework that is being persisted.\r
+\r
+  @retval     TRUE\r
+  @retval     FALSE   Cache doesn't exist or an error occurred.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+DoesCacheExist (\r
+  IN UNIT_TEST_FRAMEWORK_HANDLE  FrameworkHandle\r
+  );\r
+\r
+/**\r
+  Will save the data associated with an internal Unit Test Framework\r
+  state in a manner that can persist a Unit Test Application quit or\r
+  even a system reboot.\r
+\r
+  @param[in]  FrameworkHandle   A pointer to the framework that is being persisted.\r
+  @param[in]  SaveData          A pointer to the buffer containing the serialized\r
+                                framework internal state.\r
+\r
+  @retval     EFI_SUCCESS   Data is persisted and the test can be safely quit.\r
+  @retval     Others        Data is not persisted and test cannot be resumed upon exit.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SaveUnitTestCache (\r
+  IN UNIT_TEST_FRAMEWORK_HANDLE  FrameworkHandle,\r
+  IN UNIT_TEST_SAVE_HEADER       *SaveData\r
+  );\r
+\r
+/**\r
+  Will retrieve any cached state associated with the given framework.\r
+  Will allocate a buffer to hold the loaded data.\r
+\r
+  @param[in]  FrameworkHandle   A pointer to the framework that is being persisted.\r
+  @param[in]  SaveData          A pointer pointer that will be updated with the address\r
+                                of the loaded data buffer.\r
+\r
+  @retval     EFI_SUCCESS       Data has been loaded successfully and SaveData is updated\r
+                                with a pointer to the buffer.\r
+  @retval     Others            An error has occurred and no data has been loaded. SaveData\r
+                                is set to NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+LoadUnitTestCache (\r
+  IN  UNIT_TEST_FRAMEWORK_HANDLE  FrameworkHandle,\r
+  OUT UNIT_TEST_SAVE_HEADER       **SaveData\r
+  );\r
+\r
+#endif\r