Add a new artifact module which provides DTS with remote and local file
management capabilities. A new Artifact class is provided which acts as
an abstract representation of a file that is present in any node in the
testbed model. The same provides several helper file management
functions, including open, which returns an ArtifactFile class which
behaves like a standard Python file object for easy interoperability.
Moreover, add a novel directory tree structure for both the remote
temporary and local output directories. This structure would represent
the test suites and test cases in structured folders as appropriate,
where each artifact will be stored. The location of the artifact is
determined by the time when it was first defined. If an artifact was
defined during a test case stage, this will be placed in the test case's
own folder.
Signed-off-by: Luca Vizzarro <luca.vizzarro@arm.com>
Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
---
+ def touch(self, mode: int = 0o644) -> None:
+ """Touch the artifact file, creating it if it does not exist.
+
Oh yeah - is there a reason why we don't call touch in the init function? running touch should be idempotent so we aren't worried about it being called too many times. I was reminded when I saw in the softnic testsuite that it is being called in the testsuite setup. Maybe this is extra work on the testsuite side for no reason.