Skip to content

Add compliance testing covering gRIBI test cases.#30

Merged
robshakir merged 106 commits intomainfrom
rib8
Jun 19, 2021
Merged

Add compliance testing covering gRIBI test cases.#30
robshakir merged 106 commits intomainfrom
rib8

Conversation

@robshakir
Copy link
Copy Markdown
Member

commit be4411927108f360c7750aa88bca11d584dc9753
Author: Rob Shakir <robjs@google.com>
Date:   Thu Jun 17 21:21:37 2021 -0700

    Tidy go.mod

commit 3e53f0b8b40223caf21bab0dca6b8fa20caeba97
Author: Rob Shakir <robjs@google.com>
Date:   Thu Jun 17 21:17:38 2021 -0700

    Add compliance tests and refactor checks.
    
      * (M) chk/chk.go
      * (M) chk/chk_test.go
        -  improve checking ability by using generic inputs from the fluent
           library.
      * (M) client/client.go
        - add close method, and operation details to returned messages.
      * (M) compliance/compliance.go
      * (M) compliance/compliance_test.go
        - New compliance tests that cover NHG->NH, and random order of
          operations.
      * (M) constants/const.go
        - Mapping of constants to protobuf constants.
        - fix MODIFY->REPLACE>
      * (M) demo/ipv4/ipv4_test.go
      * (M) device/device_test.go
        -  Update test name to match compliance test name cahnge.
      * (M) fluent/fluent.go
      * (M) fluent/fluent_test.go
        - Make gRIBIClient public so that more reusable tests can be built.
        - Add builder for results messages.
      * (M) go.mod
        -  Go housekeeping
      * (M) rib/rib_test.go
        - MODIFY->REPLACE to match proto terminology.

robshakir added 30 commits June 8, 2021 14:49
  * (M) aft/oc.go
  * (M) aft/update.sh
    - Update generated code.
  * (M) go.mod
  * (M) go.sum
    - Go mod tidying.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    - Add IPv4 entry add and delete.
  * (M) go.mod
  * (M) go.sum
    -  Tidy up modules.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    -  Add support for network instances in the RIB rather than
       a single RIB.
  * (M) client/client.go
    - TODO comment about handling coalescing.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    - Add support for adding NHG and NHs to the RIB.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    - Validate any candidate RIB against the OpenConfig schema before
      adding it to the RIB.
  * (M) aft/oc.go
  * (M) aft/update.sh
    - Add delete methods.
  * (M) go.mod
  * (M) go.sum
    - Tidy up modules.
  * (M) rib/rib.go
    - Add support for a simple callback function that is run after
      every update to the RIB.
    - Fix a defect with implicit replace whereby we did not delete the
      RIB entry before doing MergeStructInto meaning that for some
      leaf-lists we ended up appending to the contents of the RIB.
  * (M) rib/rib_test.go
    - Add test cases for the above functionality - including a test
      case demonstrating how gNMI Notifications can be generated.
* Add an initial implementation of a resolved-RIB.

Background -- we want the gRIBI server to be able build both a RIB that
is efficient for it to do gRIBI operations with, as well as a software
emulated 'resolved RIB' / 'FIB' whereby we can say something like "where
will this packet go based on what gRIBI is programmed?". This package
starts this implementation.

  * (M) aft/oc.go
    - Update generated code.
  * (M) go.mod
  * (M) go.sum
    - New dependencies on kentik/patricia
  * (A) ocrt/oc.go
  * (A) ocrt/update.sh
    - Generated routing specific OpenConfig Go structs.
  * (A) ocrt/yang/deviations.yang
    - Deviations to reduce the size of the generated oc.go.
  * (M) rib/rib.go
    - Fix handling of implicit replace.
  * (A) sysrib/sysrib.go
  * (A) sysrib/sysrib_test.go
    -  Initial system RIB implementation. This package currently parses
        OpenConfig to build a list of all of the connected routes that
        are on the system.

* Address review comments.
  * (A) gnmit/gnmit.go
  * (A) gnmit/gnmit_test.go
    - Wrap the openconfig/gnmi libraries to create a single-device
      cache that can be used to send gNMI updates to from the overall
      fake device.
  * (M) go.mod
  * (M) go.sum
    - move off ygot development branch.
  * (M) rib/rib.go
    -  Adopt change to protomap API in ygot.
  * (M) server/server.go
    -  Add goroutines to server Modify handler to allow concurrent
       processing.
  * (M) gnmit/gnmit_test.go
    - deflake test by:
      - checking for presence of correct leaves before syncresponse.
      - ignoring update order.
  * (M) fluent/fluent.go
  * (M) fluent/fluent_test.go
    - Add support for generating basic IPv4Entry types in the
      fluent API.
    - Ensure coverage of the builder functions in the fluent
      library.
  * (M) client/client.go
    - Fix duplicate queueing for AFTOperations during send queueing.
    - Handle received operations from the server by removing them
      from the pending queue.
  * (M) fluent/fluent.go
    - Simplfy mapping to canonical reason codes.
  * (M) fluent/fluent_test.go
    - Add an integration test for a simple IPv4 entry.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    - Define a type for the RIB function hook.
    - add locking across network instances.
    - change ribHolder to be publicly accessible.
  * (M) server/server.go
    - Define a const for the default network instance name.
    - Add handling for specifying a RIBHook when initialising the
      server.
    - Add handling for doing an IPv4 add operation.
@robshakir robshakir changed the base branch from main to rib7 June 18, 2021 04:23
Base automatically changed from rib7 to main June 18, 2021 15:03
  * (M) fluent/fluent.go
  * (M) fluent/fluent_test.go
    - Make gRIBIClient public so that more reusable tests can be built.
    - Add builder for results messages.
 * (M) client/client.go
   - add close method, and operation details to returned messages.
  * (M) constants/const.go
    - Mapping of constants to protobuf constants.
    - fix MODIFY->REPLACE>
@robshakir robshakir changed the base branch from main to rib7.1 June 18, 2021 15:15
@robshakir robshakir added this to the public-release milestone Jun 18, 2021
Base automatically changed from rib7.1 to main June 18, 2021 15:40
@robshakir robshakir requested a review from sthesayi June 18, 2021 15:40
Copy link
Copy Markdown
Contributor

@sthesayi sthesayi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are writing code faster than I can skim them :)

Comment thread chk/chk.go
@robshakir
Copy link
Copy Markdown
Member Author

Thanks for all the reviews!

This has been quite the sprint, but I think almost all of the core infrastructure for TE-* gRIBI tests is now here; and the fake server should be usable for controller integration -- the rate of code should slow down :-)

@robshakir robshakir merged commit 7866ca2 into main Jun 19, 2021
@robshakir robshakir deleted the rib8 branch June 19, 2021 13:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants