Repository navigation
Run the 3.1r1 conformance tests - #481
Merged
Merged
Conversation
This was referenced Oct 14, 2026
jadamcrain
force-pushed
the
dnp3c-3.1r1
branch
from
October 15, 2026 17:50
efeb9dd to
d654bce
Compare
Runs dnp3c's revision 3.1r1 at subset level 3, against the dnp3c built locally (0.1.0-SNAPSHOT) until it's released. The plugin implements the actions 3.1r1 adds: cold restart support, setting an analog input, frozen counter and small analog input events, uninstalling frozen counters and analog inputs, normal and abnormal flags, an event on one point, and checking frozen counter events. Fixes to the test outstation that dnp3c's stricter checks need, which 2.7 passes with too: - a binary output in local mode clears ONLINE and keeps its other flags, rather than setting LOCAL_FORCED, and a command to it gets LOCAL (7), as TB2017-001's 8.6.4 tests and 3.1r1's check - an analog output among 10 to 19 accepts 70000, the 32-bit value 3.1r1's 8.4.1.2.13 commands device.ini gives the 3.1r1 values the outstation's setup implies, and lists the tests that fail on gaps in the dnp3 outstation.
The plugin implements IntegrationPlugin's kind-based methods: uninstall, generatePattern, checkOperate and checkNotOperate, in place of the per-type ones, with PointKind in place of InputKind. The configuration uses dnp3c's renamed keys (binaryOutput.* for control.*, one pattern for the input groups' event options, supports.doubleBitInput* and supports.analogInput*), and drops supports.noClassAssignment, an option dnp3c removed.
dnp3c with revision 3.1r1 isn't on Maven Central yet, so the conformance job checks it out at a pinned commit and installs the version conformance/pom.xml names. The packet capture check looks in the folder dnp3c now keeps 3.1r1's level 3 results in.
dnp3c now names the tests 3.1r1 doesn't number with their section's number and a letter, e.g. 8.13.2d and 8.21d, so the list of known gaps in device.ini uses those, and the conformance job builds the dnp3c commit that introduced them.
Uninstalling binary or analog output status only disabled their controls, and the points stayed in the database, so a read of them still returned data. Leave them out of the database too, as for the input types.
It answers a read of a point type the outstation doesn't have the same way for every type (dnp3c #70).
The conformance job becomes a matrix of two runs: revision 2.7 at subset level 2 and 3.1r1 at subset level 3, each with its own results artifact. A job keeps the name conformance, which branch protection requires, and passes only if both runs pass. Releases publish both reports, with an index linking them, and package both in conformance-results.zip.
Link the 3.1 rev 1 and 2.7 reports, and replace the text saying level 3 procedures are still being written.
jadamcrain
force-pushed
the
dnp3c-3.1r1
branch
from
October 15, 2026 18:15
dd22f32 to
54e6e16
Compare
dnp3c now excludes procedures through the configuration, each for one revision, and reports them as not run. Exclude 3.1r1's 8.26.2 (#480), so the run carries on to the procedures after it, and build with the dnp3c commit that qualifies exclusions by revision.
jadamcrain
marked this pull request as ready for review
October 15, 2026 20:28
dnp3c's tolerance on the times it measures is now an option, test.timingToleranceMs (dnp3c #93); the default stays 500 ms for timed intervals and is 500 ms, up from 200 ms, past each timeout.
The conformance tests run with device.ini, which the pom passes to dnp3c. device.properties no longer passes dnp3c's validation either.
dnp3c 0.2.0, with revision 3.1r1 and the timing tolerance option, is on Maven Central, so CI no longer builds dnp3c from source at a pinned commit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Runs the conformance tests under revision 3.1r1 of the DNP3 IED Certification Procedure, at subset level 3, in place of 2.7.
Changes
-rev 3.1r1at subset level 3.device.inisets 3.1r1's options, and lists the outstation gaps that some tests fail on, with their issues.IntegrationPlugin: oneuninstall,generatePattern,checkOperateandcheckNotOperatethat each take a kind, andPointKindin place ofInputKind. The configuration uses dnp3c's renamed keys.results/3.1r1/L3, where dnp3c now keeps that revision's results.Expect the conformance job to fail
A run stops at its first failure. The first known gap is #478: a read of a point type whose points are all uninstalled gets a null response, without IIN2.1 or IIN2.2. So the run stops at 8.13.2-4. The results, with the report, are uploaded either way.
Local results
device.inilists