galaxio-gatling-pro 1.3.0
simulation.conf now answers which keys a run requires, per protocol.
Added
- A key registry in
references/resource-files.md, checked against Picatinny's own
SimulationConfigon the0.xand1.xlines. Every default parameter with its type and the
condition that makes it required, then the custom keys each protocol declares. Required means
the getter carries no default, and because every accessor is alazy valthe throw lands at
first access — which is why a project can leave out what it never reads. - The two defaulted keys, named as traps.
stagesNumberdefaults to1, so a staged profile
missing it runs one stage at full intensity and reports a complete breaking-point test that
never stepped.testDurationdefaults to(rampDuration + stageDuration) * stagesNumber—
exactly the lengthmaxDurationmust exceed — so omitting it truncates the run, and it drags
rampDurationandstageDurationinto the required set for any simulation that reads it. intensityis a string, not a double.IntensityConvertertakes at most one digit after
the decimal point, so16.67fails where16.7or"1000 rpm"works.IntensityConverter
itself reads no config.baseUrlis scoped by the holder, not the request. Picatinny's accessor is lazy, but the
shared holder is not, so a JDBC-only simulation reaching into a holder that also builds an HTTP
protocol still forces the key.- Every protocol reference names its own config keys.
dbUrl,dbUseranddbPasswordfor
JDBC;kafkaUrlfor Kafka;amqpHost,amqpPort,amqpLoginandamqpPasswordfor AMQP;
jmsUrl,jmsUserandjmsPasswordfor JMS;baseUrlfor HTTP.usersandpacingare
named where the closed model introduces them. - What a
-Doverride can carry. System properties do not go through the HOCON parser, so
every value arrives as a string: both duration spellings work, but a list- or object-valued key
cannot be overridden this way and fails at startup with a type error.
Changed
${?VAR}is stated as the rule that makes a variable mandatory, not only as a secrets
idiom: with no default line above it, an unset variable leaves the key undefined and the run
stops on first read, naming it.migrate.mdcounted two 3.12 rows where the table has three. An upgrade following the
count leftstopInjectorin place, which does not exist from 3.12.- Duplication across dispatch axes removed. The Session invariant no longer repeats in
lang-scala.md, thesaveAs-needs-a-passing-check rule no longer repeats in
protocol-http.md, and the package-object trap is stated once inlang-scala.mdrather than
twice withstarter-tree.md. Facts repeated between sibling files on the same axis are left
alone: an agent reads one language file and one build file, never two.