Skip to content

Create script for "TestCongfigurationRelease" #332

Description

@Sveino
# Two-Level Release Process for Test Configurations

## Overview

The release process should consist of **two distinct levels**:

1. **Test Configuration Release** – generated automatically and used for development, validation, and automatic testing.
2. **Package Release** – generated automatically when creating an official GitHub Release and distributed to users.

---

## Level 1 – Test Configuration Release

The first step is to generate a **TestConfigurationRelease** with the following directory structure:

```text
<TestConfigurationPackageName>/
├── manifest.xml
├── manifest.trig
├── manifest.json
├── instance/
│   ├── Grid/
│       └── <serialization>/          # e.g. cimxml, TriG, JSON-LD
│           └── <files>
│   ├── NetworkCode/
│   ├── boundaryData/
│   ├── commonData/
│   └── referenceData/
│       └── <serialization>/          # e.g. cimxml, TriG, JSON-LD
│           └── <files>
```

### Generation

The directory structure shall be generated automatically by scripts and **must not be edited manually**.

This generated structure is the input used by the scenario test scripts and interoperability tests.

### Validation

The original source data should **not** be validated automatically, as it must be possible to create both valid and intentionally invalid (negative) test cases.

Validation shall instead be performed on the generated **TestConfigurationRelease**.

### Processing

The generation scripts shall:

- Collect the required source data regardless of how it is organised in the repository.
- Generate the standard release structure.
- Add timestamps to generated filenames where appropriate.
- Remove previously generated output before creating a new release.

---

## Test Configurations

Each test shall reference a specific **TestConfigurationRelease**.

A test configuration should contain **only the files required** for that test.

For example:

- **FullReliCapGridBaseCase**
  - Imports the complete ReliCapGrid dataset.
  - Executes a power flow on the complete model.

In the future, additional scripts can validate that the results produced by a tool are within the specified numerical tolerances.

---

## Level 2 – Package Release

The second release level corresponds to the work already started in:

- `buildScripts/create_cgm_zip.py`
- `.github/workflows/release_packages.yml`

These scripts and validations shall be executed automatically whenever a **GitHub Release** is created.

The workflow shall:

- Generate the official release packages.
- Execute the required validation.
- Produce the distributable artefacts for the release.

---

## Benefits

- Clear separation between test configuration generation and official package releases.
- Fully reproducible test configurations.
- Support for both positive and negative interoperability test cases.
- Consistent package generation for every GitHub Release.
- Simplified CI/CD pipeline with clearly defined responsibilities.

We will have two level of release.
First step is to create the content in "TestCongfigurationRelease" with the following structure:

manifest.xml
manifest.trig
manifest.json

  • instanse
    • Grid
    • NetworkCode
    • boundaryData
    • commonData
    • referenceData
  • --<format - e.g. cimxml/TriG/JSON-LD>
    • --

This structure is create by scripts and not manually edited. This is the structure that we are doing senario test script on.
In general we do not run any validation on the source data - as we shall be allow to create negative test cases. The validation is run on "TestCongfigurationRelease"

This takes the relevant source data - but not structure by authority. It add the datatime on the file name. It shall remove previous data.

All test is referring to the TestConfigurationRelease that shall be used. We only include the necessary file. So "FullReliCapGridBaseCase" is used to the test case import the complete ReliCapGrid and run power flow on the complete model. We can later create script to validate if the tools result is inside the allowed tolerance.

The second state release is what has been started on buildScripts/create_cgm_zip.py and .github/workflows/release_packages.yml
This set of script and validation shall be triggered when a Release is created so that we create the necessary file for a given release.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions