type TestCase … type PodString … // NewPodString instantiates a PodString from the given namespace and name. func NewPodString(namespace string, podName string) PodString { … } // String converts back to a string func (pod PodString) String() string { … } func (pod PodString) split() (string, string) { … } // Namespace extracts the namespace func (pod PodString) Namespace() string { … } // PodName extracts the pod name func (pod PodString) PodName() string { … } type Peer … // Matches checks whether the Peer matches the PodString: // - an empty namespace means the namespace will always match // - otherwise, the namespace must match the PodString's namespace // - same goes for Pod: empty matches everything, otherwise must match exactly func (p *Peer) Matches(pod PodString) bool { … } type Reachability … // NewReachability instantiates a reachability func NewReachability(podStrings []PodString, defaultExpectation bool) *Reachability { … } // AllowLoopback expects all communication from a pod to itself to be allowed. // In general, call it after setting up any other rules since loopback logic follows no policy. func (r *Reachability) AllowLoopback() { … } // Expect sets the expected value for a single observation func (r *Reachability) Expect(from PodString, to PodString, isConnected bool) { … } // ExpectAllIngress defines that any traffic going into the pod will be allowed/denied (true/false) func (r *Reachability) ExpectAllIngress(pod PodString, connected bool) { … } // ExpectAllEgress defines that any traffic going out of the pod will be allowed/denied (true/false) func (r *Reachability) ExpectAllEgress(pod PodString, connected bool) { … } // ExpectPeer sets expected values using Peer matchers func (r *Reachability) ExpectPeer(from *Peer, to *Peer, connected bool) { … } // Observe records a single connectivity observation func (r *Reachability) Observe(fromPod PodString, toPod PodString, isConnected bool) { … } // Summary produces a useful summary of expected and observed data func (r *Reachability) Summary(ignoreLoopback bool) (trueObs int, falseObs int, ignoredObs int, comparison *TruthTable) { … } // PrintSummary prints the summary func (r *Reachability) PrintSummary(printExpected bool, printObserved bool, printComparison bool) { … }