tf_fuzz: rewrite test suite generator
Rewrite the test suite generator to be compatible with the current
regression test runner.
Originally, special support for TF-Fuzz was built into the test build
system; however, this rewrite uses the out-of-tree test suite mechanism
instead. This provides all the functionality needed for TF-Fuzz suites
to run, so special support for them is no longer needed. The TF-Fuzz
related CMake flags also no longer work, so should probably be removed
in the future.
- Changes to the regression tester also broke header includes in many of
the demo tests -- for now, these tests have been disabled.
- Test suite boilerplate is now defined with Jinja templates. This
should make changing the layout of the generated test suite easier in
the future.
- Only files with the .test extension in the input directory are treated
as tests, instead of all files. The previous tester would break on
folders with READMEs / non test content, but now these are ignored.
Change-Id: I76d282bb8f0bedff4b32cc8a367d6a1f465ceb0a
Signed-off-by: Nik Dewally <Nik.Dewally@arm.com>
diff --git a/docs/tf_fuzz/source_structure/index.rst b/docs/tf_fuzz/source_structure/index.rst
index 76dc653..3926f66 100644
--- a/docs/tf_fuzz/source_structure/index.rst
+++ b/docs/tf_fuzz/source_structure/index.rst
@@ -2,13 +2,96 @@
Source Structure
################
-
.. toctree::
:maxdepth: 1
:glob:
*
+*************
+Code Overview
+*************
+To help understand the code, below is a C++-class hierarchy used in this code
+base. They are explained further in the documents in their respective
+directories, so the file names where the classes are defined is listed below (this,
+very roughly in order of functional interactions, of chronological usage during
+execution, and of most-to-least importance):
+
+.. code-block:: bash
+
+ template_line ./template/template_line.hpp
+ sst_template_line ./template/template_line.hpp
+ read_sst_template_line ./template/sst_template_line.hpp
+ remove_sst_template_line ./template/sst_template_line.hpp
+ set_sst_template_line ./template/sst_template_line.hpp
+ policy_template_line ./template/template_line.hpp
+ read_policy_template_line ./template/crypto_template_line.hpp
+ set_policy_template_line ./template/crypto_template_line.hpp
+ key_template_line ./template/template_line.hpp
+ read_key_template_line ./template/crypto_template_line.hpp
+ remove_key_template_line ./template/crypto_template_line.hpp
+ set_key_template_line ./template/crypto_template_line.hpp
+ security_template_line ./template/template_line.hpp
+ security_hash_template_line ./template/secure_template_line.hpp
+
+ psa_call ./calls/psa_call.hpp
+ crypto_call ./calls/psa_call.hpp
+ policy_call ./calls/crypto_call.hpp
+ init_policy_call ./calls/crypto_call.hpp
+ reset_policy_call ./calls/crypto_call.hpp
+ add_policy_usage_call ./calls/crypto_call.hpp
+ set_policy_lifetime_call ./calls/crypto_call.hpp
+ set_policy_type_call ./calls/crypto_call.hpp
+ set_policy_algorithm_call ./calls/crypto_call.hpp
+ set_policy_usage_call ./calls/crypto_call.hpp
+ get_policy_lifetime_call ./calls/crypto_call.hpp
+ get_policy_type_call ./calls/crypto_call.hpp
+ get_policy_algorithm_call ./calls/crypto_call.hpp
+ get_policy_usage_call ./calls/crypto_call.hpp
+ get_policy_size_call ./calls/crypto_call.hpp
+ get_policy_call ./calls/crypto_call.hpp
+ key_call ./calls/crypto_call.hpp
+ generate_key_call ./calls/crypto_call.hpp
+ create_key_call ./calls/crypto_call.hpp
+ copy_key_call ./calls/crypto_call.hpp
+ read_key_data_call ./calls/crypto_call.hpp
+ remove_key_call ./calls/crypto_call.hpp
+ sst_call ./calls/psa_call.hpp
+ sst_remove_call ./calls/sst_call.hpp
+ sst_get_call ./calls/sst_call.hpp
+ sst_set_call ./calls/sst_call.hpp
+ security_call ./calls/psa_call.hpp
+ hash_call ./calls/security_call.hpp
+
+ boilerplate ./boilerplate/boilerplate.hpp
+
+ psa_asset ./assets/psa_asset.hpp
+ crypto_asset ./assets/crypto_asset.hpp
+ policy_asset ./assets/crypto_asset.hpp
+ key_asset ./assets/crypto_asset.hpp
+ sst_asset ./assets/sst_asset.hpp
+
+ tf_fuzz_info ./tf_fuzz.hpp
+
+ variables ./utility/variables.hpp
+ crc32 ./utility/compute.hpp
+
+ gibberish ./utility/gibberish.hpp
+
+ expect_info ./utility/data_blocks.hpp
+ set_data_info ./utility/data_blocks.hpp
+ asset_name_id_info ./utility/data_blocks.hpp
+
+
+TF-Fuzz now has better-organized management of variables in the generated code.
+In particular, it maintains a list of variables named in the test template, and
+implicit in the code, notably variables assets are ``read`` into. It also now has
+completely separate execution phases to parse the test template, simulate the
+sequence of PSA calls generated, and write out the expected results. That
+simulation is only in enough detail to predict expected results. Since TF-Fuzz
+currently mostly addresses only SST calls, that simulation is very simple in
+nature -- just tracking data movement.
+
--------------
*Copyright (c) 2024, Arm Limited. All rights reserved.*