Skip to content

New test framework (ginkgo) #1589

@eloycoto

Description

@eloycoto

As previously discussed in the community meeting, to create a POC of a new test framework using pure Golang instead using a bunch of bash scripts.

The list of test to migrate are:
Runtime Tests:

  • Policy enforcement
    • Default
    • Never
    • Always
    • Policy rules
      • L3/L4 rules Enable/disable
      • L7 Rules Enable/disable
      • Ingress Enable/disable
        • FromCIDR (16-cidr-ingress-policy.sh)
      • Egress Enable/disable
        • ToCIDR (16-cidr-ingress-policy.sh)
      • Invalid rules (20-cidr-limit.sh)
  • Connectivity
    • CTLocal enable (01-ct.sh)
    • CTLocal disable (01-ct.sh)
    • CT disable (01-ct.sh)
    • Nat46 (08-nat46.sh)
  • KV Store (Was not in place)
    • Consul (18-kvstore-fail.sh)
    • Etcd (18-kvstore-fail.sh)
  • Proxy/LB:
    • New proxy
    • L3/L7 policies for service
  • Service restart
    • Restore endpoints in case of restart
    • Check IP addr still correct (97-restore)
  • Cilium Monitor test
    • Verbose mode (13-monitor-filtering.sh)
    • Event types (13-monitor-filtering.sh)
    • From flag (13-monitor-filtering.sh)
    • To flag (13-monitor-filtering.sh)
    • Related-to (13-monitor-filtering.sh)
    • Multiple Monitor (17-multiple-monitors.sh)
  • Chaos Monkey test
    • Endpoint recovery on restart (96-restore-endpoints.sh)
    • Interfaces chaos (97-clean-leftovers.sh)

K8s tests:

  • Policy enforcement
    • Set to default:
      • Create new pods and check if disabled
      • Create a new l3/l4 policy and get applied correctly.
      • Create a new l7 policy and get applied correctly
      • Disable a policy and get disabled.
    • Set to Never:
      • Check all endpoints has policy disabled
      • Create a new policy and it didn't work
    • Set Always
      • Check all endpoint has policy enabled.
  • Tunnels (it was not tested)
    • Create a new DaemonSet using VXLAN
      • Nodes can ping
      • Cilium detect it correctly
      • Pods can ping
    • Create a new Daemonset using Geneve
      • Nodes can ping
      • Cilium detect it correctly
      • Pods can ping
  • Services:
    • Create a new k8s service
      • Check if can get access
    • Create a new IPv6 service [To-check]
    • Create a new NodePort service [To-check]
  • Benchmarking with reports to 3-party DB

The system should achieve the following:

  • Testing with multiple K8S versions [1.6, 1.7, 1.8]
  • Testing with new and old kernels.
  • Test a selected function without running all the test.
  • Report Junit to Jenkins.

Metadata

Metadata

Assignees

Labels

area/CIContinuous Integration testing issue or flakekind/enhancementThis would improve or streamline existing functionality.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions