 Welcome to the CTS learning series chapter 5 testing a non-OSS UOC example video 3 demonstration of a PCS conformance test In this video, we will Demonstrate how to construct a project configuration file for a PCS UOC perform a successful conformance test perform an unsuccessful conformance test and Suggest ways to troubleshoot common errors while testing a PCS UOC as Mentioned in chapter 5 video 1 will be testing balsa's UOC's This video in particular will test balsa's PCS UOC called ATC or air traffic control For more information about balsa and how balsa is organized Please consult the face technical standard the reference implementation guide and the software suppliers getting started guide Let's open the project configuration list and make a new project configuration Let's name it CTS learning series PCS demonstration and we'll save it in the CTS learning series directory After clicking okay, we are presented with a project configuration builder For this video, we will be demonstrating the construction of the PCFG But for more information about the options provided in the PCFG, please refer to chapter 3 video 4 Let's first select the base directory I'm going to set the base directory as home CTS user Next our segment is going to be PCS Balsa's UOC's are all written in C++, so we will select C++ as our language Our profile is going to be safety base as that is the face profile The balsa PCS UOC is written to and what we configured the toolchain to test as well Our partition is going to be POSIX as our OS does not provide any of the R and 653 APIs Let's provide the location of our toolchain configuration file as well Finally, the UOP name is used to identify the UOP Let's enter CTS learning series PCS example In the data model tab, let's provide the shared data model location and the UOP supplied model location Balsa's USM does not have entity uniqueness or observable uniqueness So we can leave those options unchecked In the UOP drop-down that was automatically populated. We must select ATC underscore manager as that is our UOP's name In the gold standard libraries tab, let's provide the location of an empty folder We will set this as home CTS user GSL's in the object libraries tab We must then supply the include paths and the include files for the PCS UOC As mentioned before Analyzing balsa is out of scope for this video However, each of the header files that the ATC UOC uses must be provided in order to check for conformance The list of included header files and paths are listed on the screen These paths and files must be set in their respective sections in the project configuration builder As mentioned in chapter 1 video 1 and chapter 3 video 2 There are two methods of testing UOC's for conformance The target linker and the host linker methods We will be using the target linker method This means that we must provide object files that were compiled against the gold standard libraries We don't have the object files yet as we haven't generated the gold standard libraries or built balsa against them For now, we'll leave it blank Continuing down we are provided an option for providing factory functions as As mentioned in chapter 1 video 1 and chapter 3 video 4 Factory functions are concrete implementations of methods that allow the CTS to test for implementations of the provided interfaces The factory function header file is generated alongside the gold standard libraries So before we can provide the factory functions CPP file, we must generate the GSL's For now, we'll leave this blank Now we select the interfaces that the ATC UOC uses the ATC UOC implements the LCM initializable, LCM configurable and LCM stateful interfaces the ATC UOC uses configuration services and health and fault monitoring or HMFM interface The notes and project info tabs do not contribute to the project configuration validation or conformance testing so we can ignore these tabs We have intentionally left the target linker section and the factory function sections blank To fill these sections in let's generate the gold standard libraries by pressing the bookmark icon After the generation finishes, let's take a closer look at what is generated in the directory We can see a list of libraries and a readme file Let's look at the readme that was generated The readme lists the valid GSL's that were generated as well as the associated include directories that should be used to build objects to test with the CTS Including the files that were just generated Let's take a closer look at those files if we point to the GSL include directory We can see the CTS factory functions header file and a face sub directory Let's open the CTS factory functions dot HPP Here we can see the function signatures. We must implement in order to be face conformant These were generated based on the supplied options from the project configuration file Let's exit this file and look at the face sub directory Here we have the generated header files. We must include while developing give overseas How to use these files are out of scope for this video series But it is important to understand that the GSL generation process generates these files as well For now what we're focused on is the libraries and factory function headers Balsa was written to the face technical standard and correctly implements the interfaces required to be face conformant If you download balsa from the open group website It already comes with the factory function implementation that is required to be written We are going to write the factory function implementation ourselves Let's do that now by opening a text editor and creating a file called ATC factory functions dot CPP Let's include the CTS factory functions HPP header file and the header file for the ATC UAC Which is where the ATC class is defined and implements each of the required functions Then we'll copy and paste all of the required functions from the header to the source file And return a new instance of the ATC class for each function Implementation now the CTS may understand that the ATC UAC implements each of the required functions Let's put the path to this factory functions CPP file in the project configuration builders factory functions option Finally we need to create our object files Balsa has a build process that uses make Although we are not going to analyze the build process It is important to note that there are two ways of building balsa One to build for face conformance and one to build without face conformance In our case we are going to build the ATC UAC for conformance When we build balsa detects the gold standard libraries to build against Balsa contains configuration options to provide the path for the gold standard libraries Before we build we must make sure that the path is correct Or else balsa won't be able to find the GSLs Finally we may enter our build command Enter make-f makefile.conformance ATC Balsa will build and create an object file The file extension for the object file will be .rel Let's provide the newly created .rel file in the target linker section We can now press the test UAC conformance button The progress bar will fill up as the conformance tests are being performed Just like the data model conformance testing we performed in chapter 4 We are shown the conformance test result with the output file location at the bottom of the interface It looks like we were successful in our test In chapter 5, video 7, we will open the conformance test report And talk about the test results for non-OSS UACs Let's intentionally create an error by selecting an interface our PCS doesn't use Let's select the test UAC conformance button and see what happens It looks like we failed the test It is important to keep track of the used and unused interfaces that your UAC provides In order to properly select it during the conformance process Thank you for watching In the next video, entitled demonstration of a P-TRIPLE-S conformance test We will demonstrate how to construct a project configuration file for a P-TRIPLE-S UAC Perform a successful conformance test on a P-TRIPLE-S UAC and perform an unsuccessful conformance test on a P-TRIPLE-S UAC and suggest ways to troubleshoot common errors while testing a P-TRIPLE-S UAC