Validate MeterConfig against MeterSpec.Type constraints - #151
Open
xovishnukosuri wants to merge 1 commit into
Open
xovishnukosuri wants to merge 1 commit into
xovishnukosuri wants to merge 1 commit into
Conversation
P4Runtime v1.4.0 added MeterSpec.Type (TWO_RATE_THREE_COLOR, SINGLE_RATE_THREE_COLOR, SINGLE_RATE_TWO_COLOR) with specific field constraints for each type. The shell was not reading or enforcing these constraints. This change: - Reads spec.type from the meter's P4Info in _MeterEntryBase - Adds _MeterConfig.validate() which raises UserError if the config violates the constraints imposed by the meter's spec.type - Calls validate() from _MeterEntryBase._validate_msg() and from TableEntry._validate_msg() for tables with a direct meter - Adds two new meter fixtures (MeterB, MeterC) to the test P4Info and three new unit tests covering all three type validations Closes p4lang#149 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Summary
P4Runtime v1.4.0 added
MeterSpec.Type(TWO_RATE_THREE_COLOR, SINGLE_RATE_THREE_COLOR, SINGLE_RATE_TWO_COLOR) with specific field constraints for each type. The shell was readingspec.unitbut ignoringspec.type, so invalid configs could be silently sent to the switch.This PR:
spec.typefrom the meter's P4Info in_MeterEntryBase.__init___MeterConfig.validate(spec_type)which raisesUserErrorif the config violates the type's constraints:TWO_RATE_THREE_COLOR:eburstmust be 0SINGLE_RATE_THREE_COLOR:cir == pirandcburst == pburstSINGLE_RATE_TWO_COLOR:cir == pir,cburst == pburst, andeburst == 0validate()from_MeterEntryBase._validate_msg()(forMeterEntryandDirectMeterEntry) and fromTableEntry._validate_msg()for tables with a direct meterMeterBwithSINGLE_RATE_THREE_COLOR,MeterCwithSINGLE_RATE_TWO_COLOR) to the test P4InfoCloses #149
Test plan
nose2 p4runtime_sh— all 57 pass, including 3 new testseburston a TWO_RATE_THREE_COLOR meter and callingmodify()raisesUserErroreburstbut rejectcir != pir🤖 Generated with Claude Code