blob: e6fe7f1ad10c8ecffb11dfd3ecc66bb9cdd64534 [file] [log] [blame]
/*
* 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 <lib/core/CHIPPersistentStorageDelegate.h>
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