/* * Copyright (c) 2022 Project CHIP Authors * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include namespace chip { namespace audit { /** * @brief Execute a storage API compliance audit to validate PersistentStorageDelegate implemented in a * final integration. * * This audit runs a device-based test that validates the internals of whatever back-end is used to implement * the PersistentStorageDelegate interface, which is used across the board. If it fails, the device may not * function as expected and subtly fail important functionality of the Matter stack. * * The audit uses ChipLogError against the `Automation` module for assertions failure details.. * * @param storage - Reference to the PersistentStorageDelegate that would be passed in chip::Server::InitParams * or chip::Controller::FactoryInitParams. * * @return true on success, otherwise false on failure */ bool ExecutePersistentStorageApiAudit(PersistentStorageDelegate & storage); /** * @brief Execute a storage API load test audit to validate bare-minimum storage requirements * for spec-mandated minimums. * * This audit runs a device-based test that validates the storage of a large number of * persistent storage values, consistent with a "full loaded" configuration of just * the minima required by spec. * * If it fails, the device may not function as expected and subtly fail important functionality of * the Matter stack. Furthermore, if it fails, it MAY FAIL at runtime later. This audit DOES NOT * GUARANTEE the fitness overall of the implementation. It is mostly used as a helpful "smoke test" * for conditions that are quite complex to reproduce at runtime in integration tests. * * Overall the audit attempts to: * - Store the equivalent of 5 full fabric tables * - Each with full Access Control List with the required minimum-to-be-supported entries * - Store additional metadata known to be required by the SDK, depending on some * feature flags. * * The contents are not real, but the sizing of the keys and values is representative of * worst case. * * Because this audit does not have access to internal constants of all the underlying modules, * consider this starting version to be a "point in time" check. Refinements will be done * via integration tests. * * The audit uses ChipLogError against the `Automation` module for assertions failure details. * * @param storage - Reference to the PersistentStorageDelegate that would be passed in chip::Server::InitParams * or chip::Controller::FactoryInitParams. * * @return true on success, otherwise false on failure */ bool ExecutePersistentStorageLoadTestAudit(PersistentStorageDelegate & storage); } // namespace audit } // namespace chip