Integrating with a CI/CD/CT System

Huxelerate SDV Performance can be seamlessly integrated into Continuous Integration (CI), Continuous Delivery (CD), and Continuous Testing (CT) systems. This integration enables automatic performance analysis of your software and hardware architecture whenever changes are made to the codebase.

The following sections provide guidelines and examples for building a CI/CD/CT pipeline that incorporates Huxelerate SDV Performance.

Common Pipeline Prerequisites

To create the pipelines described in this document, ensure the following:

  • An Huxelerate SDV Performance platform Normal user account to execute the pipeline. Refer to the Organization Settings section for instructions on creating a user.

    • The pipeline will use this user’s REST API token as a secret for platform authentication. Refer to the Settings section to learn how to generate a REST API token.

  • An Huxelerate SDV Performance platform Project to store performance reports. Refer to the System Definition section for project creation details.

Interactive REST API Documentation

Explore all REST API endpoints interactively at: Huxelerate SDV Performance API Documentation.

Pipeline: Performance Analysis of AUTOSAR-Compliant Software

This pipeline targets AUTOSAR-compliant software and generates performance reports for each Runnable Entity in the software.

Pipeline Overview

Pipeline Additional Prerequisites

To implement this pipeline, you will need:

Additionally, for each Software Component Type to analyze, you must know:

  • The location of the software component’s source code (implementation and header files) in your codebase.

  • The location of the ARXML description models of the software component in your codebase.

  • (Optional) A CSV file with input data for analysis. Refer to the generate_csv_template command documentation for details.

Step 1: Generate HPROF Files for a Software Component Type

Execution Scope: One execution per Software Component Type in your codebase.

Inputs:

  • Source code of the software component (implementation and header files).

  • ARXML description models of the software component.

  • (Optional) CSV file with input data for analysis.

Outputs:

  • A LOG file detailing the generation process (success or failure).

  • For each Runnable Entity in the Software Component Type, one HPROF file (if successful).

Use the generate_hprof command of the Huxelerate autosar utility to generate HPROF files.

Hint: If using the cloud for HPROF generation, refer to the relevant documentation for CLI usage instructions.

Step 2: Upload HPROF Files to the Platform

Execution Scope: One execution per HPROF file generated in Step 1.

Inputs:

  • REST API token of the user executing the pipeline.

  • Project ID where the HPROF file will be uploaded.

  • The HPROF file to upload.

Outputs:

  • Details of the uploaded HPROF file (ID, name, etc.).

Upload HPROF files using the REST API endpoint:

PUT https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/hprofs

You can associate tags with each HPROF file for easier searching and filtering. Useful tags include:

  • Software Composition name(s) associated with the HPROF file.

  • Version of the Software Component Type or System associated with the HPROF file.

Step 3: Run Performance Analysis

Execution Scope: One execution per HPROF file uploaded in Step 2.

Inputs:

  • REST API token of the user executing the pipeline.

  • Project ID where the HPROF file was uploaded.

  • HPROF file ID (from Step 2).

Outputs:

  • Details of the analysis (ID, name, etc.).

Run performance analysis using the REST API endpoint:

PUT https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/runnable-analyses/

Specify a target hardware (e.g., an ECU Type core) for the analysis. Retrieve available ECU Types and cores using the REST API endpoint:

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/ecu-types/

Result

After completing this pipeline, performance analysis results will be available in the specified project.

Pipeline: Architectural Analysis of AUTOSAR-Compliant Systems

This pipeline targets AUTOSAR-compliant systems and provides structural details independently of the software implementation. Unlike the previous pipeline, it does not require HPROF file generation but relies on ARXML description models.

Pipeline Overview

Pipeline Additional Prerequisites

To implement this pipeline, you will need:

  • ARXML description models of the system:

    • Either a single ARXML ECU Extract or SYSTEM Extract file.

    • Or multiple ARXML files collectively describing the system (e.g., files used in the previous pipeline).

  • ECU Configuration ARXML files describing, for each ECU in the system, the Runnable Entities (grouped into Tasks) it executes. These files are typically generated by your organization’s ECU Configuration tool (e.g., Vector DaVinci).

Step 1: Create a New Scenario

Create a new scenario to reflect the system’s structure. Use the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios

Scenarios can be created empty or by copying an existing scenario’s structure. In the latter case, some subsequent steps may be unnecessary.

Step 2: Create ECU(s)

Execution Scope: One execution per ECU in the system.

Create one ECU entry for each ECU in your system using the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/ecus

Specify the ECU Type when creating an ECU. Retrieve available ECU Types using the REST API endpoint:

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/ecu-types/

Hint: If the scenario was created by copying an existing scenario, this step may be unnecessary.

Step 3: Upload the System Definition

Upload ARXML description models of the system using the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs

This endpoint accepts:

  • A single ARXML file (ECU Extract or SYSTEM Extract).

  • Multiple ARXML files in a Zip archive.

Specify the following parameters:

  • system_definition_entity_type = "swc" to indicate a Software Component-based System Definition.

  • description_standard = "ARXML" for ARXML format files.

Optional parameters to resolve conflicts during upload:

  • update_duplicates: Update existing elements in the scenario.

  • regenerate_unsupported_uuid: Regenerate non-UUID4-compliant UUIDs.

  • regenerate_duplicated_uuid: Regenerate duplicated UUIDs.

Check upload status using the REST API endpoint:

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs/{id_job}

Confirm successful uploads using:

PATCH https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs/{id_job}

Body: {"confirm": true}

Clear failed jobs using:

DELETE https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/jobs/{id_job}

Step 4: Create a New Task Mapping

Create a Task mapping to map Runnable Entities to ECUs and their cores. Use the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings

Task mappings can be created empty or by copying an existing mapping’s structure. In the latter case, some subsequent steps may be unnecessary.

Step 5: Upload Task Mapping from ECU Configuration ARXML Files

Upload ECU Configuration ARXML files to populate the Task mapping using the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs

This endpoint accepts:

  • A single ARXML file containing the ECU Configuration.

  • Multiple ARXML files in a Zip archive.

Specify the following parameters:

  • system_definition_entity_type = "ecuc" to indicate an ECU Configuration-based Task mapping.

  • description_standard = "ARXML" for ARXML format files.

  • id_mapping: Target Task mapping ID.

  • id_ecu: Target ECU ID (repeat for each ECU in the system).

Optional parameters to resolve conflicts during upload:

  • regenerate_unsupported_uuid: Regenerate non-UUID4-compliant UUIDs.

  • regenerate_duplicated_uuid: Regenerate duplicated UUIDs.

Check upload status using the REST API endpoint:

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs/{id_job}

Confirm successful uploads using:

PATCH https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs/{id_job}

Body: {"confirm": true}

Clear failed jobs using:

DELETE https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/mappings/{id_mapping}/task-mapping/jobs/{id_job}

Result

After completing this pipeline, explore the interactive System Structure report at:

https://sdvperformance.huxelerate.it/projects/{id_project}/scenarios/{id_scenario}/system/scenario

Replace {id_project} and {id_scenario} with the respective IDs used in the pipeline.

Pipeline: System-level Performance Analysis

After having performed both:

you can run system-level performance analyses to evaluate the overall performance of your system to obtain a comprehensive view of the usage of resources and the timing performance of your system.

This pipeline generates system-level reports focusing both on Resource Usage and System Timing performance.

Pipeline Overview

Pipeline Additional Prerequisites

To implement this pipeline, you will need:

  • A scenario containing

    • the definition of the system’s architecture, and

    • (optionally) the definition of the system’s Task mapping;

  • For each Runnable Entity in the system, a performance analysis report.

Both these prerequisites can be satisfied, for example, by executing the previous two pipelines (see Pipeline: Performance Analysis of AUTOSAR-Compliant Software and Pipeline: Architectural Analysis of AUTOSAR-Compliant Systems) or a variant of them that better suits your system’s design.

Step 1: Identify the target Scenario’s information relevant to the analysis

Given:

  • a target project (identified by its ID: {id_project}),

GET https://api.sdvperformance.huxelerate.it/v1.0/projects
  • a target scenario in that project (identified by its ID: {id_scenario}), and

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios
  • (optionally) a target Task mapping in that scenario (identified by its ID: {id_mapping}),

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/mappings

retrieve the list of the ECUs in the scenario (each identified by its ID: {id_ecu}):

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/scenarios/{id_scenario}/system-definition/ecus

Step 2.RA: Create a Resource Analysis for each ECU in the scenario

To create a new Resource Analysis for each ECU in the scenario, use the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/resource-analyses

This endpoint requires the following JSON parameters:

  • name: A descriptive name for the analysis report.

  • id_scenario: The ID of the scenario to analyze.

  • id_ecu: The ID of the ECU to analyze.

  • hprof_selector: the policy to apply when selecting the Runnable Performance reports to use in the analysis for each Runnable Entity. It can be one of the following:

    • { "hprof_ids": [...] }: selects the Runnable Performance reports based on their IDs.

    • { "tag": "{tag}" }: for each Runnable Entity, selects the latest Runnable Performance reports having the specified tag, if any.

    • {}: for each Runnable Entity, selects the latest Runnable Performance report, if any.

    Optionally, "allow_partial_selection": false can be added to the hprof_selector to indicate that the analysis should fail if any Runnable Entity lacks a selected Runnable Performance report.

Moreover, the following optional parameters can be specified:

  • id_mapping: The ID of the Task mapping to use for the analysis. If not specified, the analysis will assume that every Runnable Entity inside the scenario is mapped to the first core of the first ECU in the scenario.

Once the analysis is created, it will be queued for execution. You can check its status and results using the REST API endpoint:

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/resource-analyses/{id_resource_analysis}

Once the status field of the analysis is ready, the analysis results will be available on the web platform at the URL in the report field.

Step 2.TA: Create a Timing Analysis for the scenario

To create a new Timing Analysis for the scenario, use the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/timing-analyses

This endpoint requires the following JSON parameters:

  • name: A descriptive name for the analysis report.

  • id_scenario: The ID of the scenario to analyze.

  • id_mapping: The ID of the Task mapping to use for the analysis.

  • hprof_selector: the policy to apply when selecting the Runnable Performance reports to use in the analysis for each Runnable Entity. It can be one of the following:

    • { "hprof_ids": [...] }: selects the Runnable Performance reports based on their IDs.

    • { "tag": "{tag}" }: for each Runnable Entity, selects the latest Runnable Performance reports having the specified tag, if any.

    • {}: for each Runnable Entity, selects the latest Runnable Performance report, if any.

    Optionally, "allow_partial_selection": false can be added to the hprof_selector to indicate that the analysis should fail if any Runnable Entity lacks a selected Runnable Performance report.

  • runnable_statistics: either “gaussian” or “maximum”, indicating the statistical method to use for computing the execution time of each Runnable Entity in the analysis.

Once the analysis is created, it will be queued for execution. You can check its status and results using the REST API endpoint:

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/timing-analyses/{id_timing_analysis}

Once the status field of the analysis is ready, the analysis results will be available on the web platform at the URL in the report field.

(optional) Step 3: Share the analysis results

For both Resource Analysis and Timing Analysis, you can share the analysis results with other users by using the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/{[resource|timing]}-analyses/{id_[resource|timing]_analysis}/shares

Once created, the share link (field: "link_identifier") and its password (field: "password") can be used to give direct access to the analysis report to other users. Warning: apart from the result of the POST request, the password cannot be retrieved again. If lost, the share link should be deleted and a new one created.

Moreover, only for Resource Analysis, you can obtain a quick summary of the analysis in HTML or JSON format via the REST API endpoint:

GET https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/resource-analyses/{id_resource_analysis}/summary

This summary is useful to be embedded in quick overviews of the system’s performance, for example in a CI/CD/CT pipeline report or result notification.

(optional) Step 4: Compare the analysis results

If you have multiple Resource Analysis or Timing Analysis reports for the project, you can compare them using the REST API endpoint:

POST https://api.sdvperformance.huxelerate.it/v1.0/projects/{id_project}/{[resource|timing]}-analyses/comparisons

In terms of functionality, the comparison reports behave like the individual analysis reports (e.g., they can be shared with other users, and for Resource Analysis they can be summarized in HTML or JSON format).

Result

The system-level performance analysis reports will be available in the specified project after completing this pipeline.

You can access them by browsing the web platform or via the provided share links.