ChargeLink Native
Developed byDEVlink

Plan and Run Tests: Scenarios, Suites and Campaigns

This chapter explains why the ChargeLink test objects exist, what each object controls, and how to use them without guessing. Start here when you need repeatable regression tests rather than a one-off simulator session.

The four objects in plain language

ObjectWhy it existsWhat it containsWhen you use it
ScenarioDescribes one behavior to proveInitial state, stimuli, expected state transitions, timeouts and verdict rulesOne focused test, such as a normal DC charge or an isolation fault
SuiteGroups related scenariosOrdered scenario IDs, shared defaults and stop/continue policyRegression testing a feature area or release
CampaignFreezes an executable test runProtocol, role, profile, PICS/PIXIT, evidence mode, repetitions, output path and environmentProducing a reproducible customer or release test result
PackageDelivers a licensed test catalogue and runnerCase catalogue, applicability model, profiles, campaign generation, execution and report schemaStructured protocol conformance-readiness testing

A useful rule is:

A scenario says what behavior to test. A suite says which tests belong together. A campaign says exactly how this run will be executed. A package says which licensed test catalogue and workflow are available.

Before running anything

Open PowerShell as the same Windows user that will run ChargeLink and create a clean working area:


$CL = 'C:\Program Files\ChargeLink Native\bin\chargelink.exe'
$Work = 'C:\ChargeLinkData\tests'
$Run = Join-Path $Work (Get-Date -Format 'yyyyMMdd-HHmmss')
New-Item -ItemType Directory -Force -Path $Run | Out-Null

& $CL --json doctor
& $CL --json profile list
& $CL --json scenario list
& $CL --json suite list

Why this matters:

  • doctor catches missing runtime folders, license or network prerequisites before a long run.
  • profile list tells you which charger/vehicle configurations are actually available.
  • scenario list and suite list prevent copying an obsolete identifier from an old report.
  • A timestamped output folder prevents evidence from different runs being mixed.

Run one scenario first

Use one scenario to validate the environment before launching a suite.


& $CL --json `
  --artifact-root "$Run\artifacts" `
  --runtime-root "$Run\runtime" `
  scenario run `
  --id <SCENARIO_ID>

Replace <SCENARIO_ID> with an identifier returned by scenario list.

After execution, inspect the result before proceeding:


Get-ChildItem "$Run\artifacts" -Recurse
Get-ChildItem "$Run\artifacts" -Recurse -Filter *.json |
  Select-Object FullName,Length,LastWriteTime

A valid run should make it possible to answer:

  1. Which ChargeLink version executed?
  2. Which protocol, role and profile were selected?
  3. Which scenario and inputs were used?
  4. What was the final verdict?
  5. Which trace and evidence files support that verdict?

Do not continue to a full suite if those answers are not visible in the artifacts.

Run a suite

A suite is appropriate when the individual scenario already works and you need broader coverage.


& $CL --json `
  --artifact-root "$Run\artifacts" `
  --runtime-root "$Run\runtime" `
  suite run `
  --id <SUITE_ID>

Use suite verify before customer or release execution:


& $CL --json suite verify --id <SUITE_ID>

Use suite export when the selected suite definition must be archived with the result:


& $CL --json suite export `
  --id <SUITE_ID> `
  --out "$Run\suite-definition"

Dry-run, replay and live evidence modes

The package and ATS workflows use three evidence modes.

ModeWhy to use itWhat it provesWhat it does not prove
dry-runValidate selection and applicability quicklyThe package, profile, PICS/PIXIT and campaign can be resolvedNo live protocol communication
replayRe-evaluate known traces deterministicallyVerdict logic against controlled evidenceCurrent DUT interoperability
liveExercise a real simulator/DUT connectionCurrent runtime behavior and captured evidenceAccredited certification by itself

Recommended progression:


dry-run → replay → live

This sequence isolates configuration errors before bench time is consumed.

Create a package-scoped PICS/PIXIT selection

PICS states what the system under test supports. PIXIT supplies implementation-specific values needed to execute tests. Generate these per package and role.


$Package = 'iso15118-2-evse'
$Role = 'evse'
$Pics = "$Run\pics.json"
$Pixit = "$Run\pixit.json"

& $CL --json conformance package pics-pixit `
  --package $Package `
  --role $Role `
  --pics $Pics `
  --pixit $Pixit `
  --executable-only

Review both JSON files. Do not accept defaults blindly. Confirm at least:

  • AC or DC energy transfer mode.
  • EIM or Plug & Charge authorization.
  • TLS enabled/disabled as required by the selected profile.
  • Supported services and optional features.
  • Network interface and addressing assumptions.
  • Voltage/current/power limits used by the test environment.
  • Certificate locations where PnC/TLS is selected.

Generate the campaign


& $CL --json conformance package campaign `
  --package $Package `
  --role $Role `
  --pics $Pics `
  --pixit $Pixit `
  --executable-only

The generated campaign is the frozen execution plan. Keep it with the final report. It should identify the selected package, role, profile, applicable cases and excluded/blocked cases.

Execute a complete package flow

For a first run, limit the number of cases:


& $CL --json `
  --license 'C:\ChargeLinkData\licenses\customer.cllic' `
  conformance package execute `
  --package $Package `
  --role $Role `
  --pics $Pics `
  --pixit $Pixit `
  --out "$Run\package-run" `
  --evidence-mode dry-run `
  --executable-only `
  --max-cases 10

When the dry-run is clean, repeat with replay or live:


& $CL --json `
  --license 'C:\ChargeLinkData\licenses\customer.cllic' `
  conformance package execute `
  --package $Package `
  --role $Role `
  --pics $Pics `
  --pixit $Pixit `
  --out "$Run\package-live" `
  --evidence-mode live `
  --executable-only

Interpreting results

Treat every case as one of these operational outcomes:

OutcomeMeaningOperator action
PassedExpected behavior and required evidence were observedRetain evidence and continue
FailedExecuted behavior violated a verdict ruleInspect trace, DUT logs and first failing step
BlockedRequired environment, hardware or prerequisite was unavailableCorrect prerequisite; do not call it a DUT failure
Not applicablePICS/PIXIT excluded the caseConfirm the exclusion accurately represents the DUT
ErrorRunner or infrastructure failedRepair environment and rerun; do not interpret as protocol verdict

A practical regression workflow

  1. Run doctor and save the JSON output.
  2. Record the ChargeLink version and license entitlements.
  3. Run one known-good scenario.
  4. Run the selected suite in dry-run or replay mode.
  5. Fix all infrastructure errors and blocked prerequisites.
  6. Execute the live campaign.
  7. Export the verdict report.
  8. Archive PICS, PIXIT, campaign, report, trace, logs and environment inventory together.
  9. Compare the new result with the last accepted baseline.

Common mistakes

Running a large package immediately: begin with --max-cases 10 so configuration errors are found quickly.

Changing PICS/PIXIT after the run: any change creates a different campaign. Regenerate and rerun.

Calling blocked tests failed: blocked means the test did not reach a valid verdict because a prerequisite was absent.

Mixing outputs: always use a new output directory for each run.

Treating an engineering package as accredited certification: ChargeLink produces conformance-readiness and engineering evidence. Certification claims require the applicable accredited process and laboratory boundary.