@@ -6,29 +6,33 @@ import (
66 "os"
77 "os/exec"
88
9+ "github.com/creack/pty"
910 g "github.com/onsi/ginkgo/v2"
1011 o "github.com/onsi/gomega"
1112 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1213)
1314
14- var _ = g .Describe ("NetObserv CLI e2e integration test suite" , g .Serial , func () {
15+ var _ = g .Describe ("NetObserv CLI e2e integration test suite" , g .Ordered , func () {
1516 cliNS := "netobserv-cli"
1617
18+ // cleanup after each test
19+ g .AfterEach (func () {
20+ cliArgs := []string {"cleanup" }
21+ cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
22+ err := cmd .Run ()
23+ o .Expect (err ).NotTo (o .HaveOccurred ())
24+ })
25+
1726 g .It ("OCP-73458: Verify all CLI pods are deployed" , g .Label ("Sanity" ), func () {
1827 cliArgs := []string {"flows" , "--copy=false" }
1928 cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
20- err := cmd .Start ()
29+ _ , err := pty .Start (cmd )
2130 o .Expect (err ).NotTo (o .HaveOccurred ())
22- // cleanup()
23- defer func () {
24- cliArgs := []string {"cleanup" }
25- cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
26- err := cmd .Run ()
27- o .Expect (err ).NotTo (o .HaveOccurred ())
28- }()
31+
2932 var allPods []string
3033 clientset , err := getNewClient ()
3134 o .Expect (err ).NotTo (o .HaveOccurred ())
35+
3236 nodes , err := getClusterNodes (clientset , & metav1.ListOptions {})
3337 // agent pods + collector pods
3438 totalExpectedPods := len (nodes ) + 1
@@ -45,24 +49,25 @@ var _ = g.Describe("NetObserv CLI e2e integration test suite", g.Serial, func()
4549 nsfilter := "openshift-monitoring"
4650 cliArgs := []string {"flows" , fmt .Sprintf ("--query=SrcK8S_Namespace=~\" %s\" " , nsfilter ), "--copy=true" , "--max-bytes=500000" , "--max-time=1m" }
4751 cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
48- err := cmd . Run ( )
52+ _ , err := pty . Start ( cmd )
4953 o .Expect (err ).NotTo (o .HaveOccurred ())
50- // cleanup()
51- defer func () {
52- cliArgs := []string {"cleanup" }
53- cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
54- err := cmd .Run ()
55- o .Expect (err ).NotTo (o .HaveOccurred ())
56- }()
57- o .Expect (cmd .ProcessState .ExitCode ()).To (o .BeNumerically ("==" , 0 ), "oc-netobserv returned non-zero exit code" )
54+
55+ clientset , err := getNewClient ()
56+ o .Expect (err ).NotTo (o .HaveOccurred ())
57+ _ , err = isCLIDone (clientset , cliNS )
58+ o .Expect (err ).NotTo (o .HaveOccurred (), "CLI didn't finished" )
59+
60+ // o.Expect(cmd.ProcessState.ExitCode()).To(o.BeNumerically("==", 0), "oc-netobserv returned non-zero exit code")
5861 flowsJsonfile , err := getFlowsJSONFile ()
5962 o .Expect (err ).NotTo (o .HaveOccurred ())
6063 flowsFile , err := os .Open (flowsJsonfile )
6164 o .Expect (err ).NotTo (o .HaveOccurred ())
6265 defer flowsFile .Close ()
66+
6367 decoder := json .NewDecoder (flowsFile )
6468 _ , err = decoder .Token ()
6569 o .Expect (err ).NotTo (o .HaveOccurred ())
70+
6671 var flow struct {
6772 SrcK8sNamespace string `json:"SrcK8S_Namespace"`
6873 }
@@ -79,27 +84,28 @@ var _ = g.Describe("NetObserv CLI e2e integration test suite", g.Serial, func()
7984 // capture upto 500KB with sampling=1
8085 cliArgs := []string {"flows" , "--sampling=1" , "--copy=true" , "--max-bytes=500000" , "--max-time=1m" }
8186 cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
82- err := cmd . Run ( )
87+ _ , err := pty . Start ( cmd )
8388 o .Expect (err ).NotTo (o .HaveOccurred ())
84- // cleanup()
85- defer func () {
86- cliArgs := []string {"cleanup" }
87- cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
88- err := cmd .Run ()
89- o .Expect (err ).NotTo (o .HaveOccurred ())
90- }()
91- o .Expect (cmd .ProcessState .ExitCode ()).To (o .BeNumerically ("==" , 0 ), "oc-netobserv returned non-zero exit code" )
89+
90+ clientset , err := getNewClient ()
91+ o .Expect (err ).NotTo (o .HaveOccurred ())
92+ _ , err = isCLIDone (clientset , cliNS )
93+ o .Expect (err ).NotTo (o .HaveOccurred (), "CLI didn't finished" )
94+
95+ // o.Expect(cmd.ProcessState.ExitCode()).To(o.BeNumerically("==", 0), "oc-netobserv returned non-zero exit code")
9296 flowsJsonfile , err := getFlowsJSONFile ()
9397 o .Expect (err ).NotTo (o .HaveOccurred ())
9498 flowsFile , err := os .Open (flowsJsonfile )
9599 o .Expect (err ).NotTo (o .HaveOccurred ())
96100 defer flowsFile .Close ()
101+
97102 decoder := json .NewDecoder (flowsFile )
98103 _ , err = decoder .Token ()
99104 o .Expect (err ).NotTo (o .HaveOccurred ())
100105 var flow struct {
101106 Sampling float64 `json:"Sampling"`
102107 }
108+
103109 atLeastOneFlowFound := false
104110 for decoder .More () {
105111 err := decoder .Decode (& flow )
@@ -115,27 +121,28 @@ var _ = g.Describe("NetObserv CLI e2e integration test suite", g.Serial, func()
115121 // capture upto 500KB with exclude_interfaces=genev_sys_6081
116122 cliArgs := []string {"flows" , "--exclude_interfaces=genev_sys_6081" , "--copy=true" , "--max-bytes=500000" , "--max-time=1m" }
117123 cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
118- err := cmd . Run ( )
124+ _ , err := pty . Start ( cmd )
119125 o .Expect (err ).NotTo (o .HaveOccurred ())
120- // cleanup()
121- defer func () {
122- cliArgs := []string {"cleanup" }
123- cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
124- err := cmd .Run ()
125- o .Expect (err ).NotTo (o .HaveOccurred ())
126- }()
127- o .Expect (cmd .ProcessState .ExitCode ()).To (o .BeNumerically ("==" , 0 ), "oc-netobserv returned non-zero exit code" )
126+
127+ clientset , err := getNewClient ()
128+ o .Expect (err ).NotTo (o .HaveOccurred ())
129+ _ , err = isCLIDone (clientset , cliNS )
130+ o .Expect (err ).NotTo (o .HaveOccurred (), "CLI didn't finished" )
131+
132+ // o.Expect(cmd.ProcessState.ExitCode()).To(o.BeNumerically("==", 0), "oc-netobserv returned non-zero exit code")
128133 flowsJsonfile , err := getFlowsJSONFile ()
129134 o .Expect (err ).NotTo (o .HaveOccurred ())
130135 flowsFile , err := os .Open (flowsJsonfile )
131136 o .Expect (err ).NotTo (o .HaveOccurred ())
132137 defer flowsFile .Close ()
138+
133139 decoder := json .NewDecoder (flowsFile )
134140 _ , err = decoder .Token ()
135141 o .Expect (err ).NotTo (o .HaveOccurred ())
136142 var flow struct {
137143 Interfaces []string `json:"Interfaces"`
138144 }
145+
139146 for decoder .More () {
140147 err := decoder .Decode (& flow )
141148 o .Expect (err ).NotTo (o .HaveOccurred ())
@@ -150,17 +157,9 @@ var _ = g.Describe("NetObserv CLI e2e integration test suite", g.Serial, func()
150157 // Run metrics command
151158 cliArgs := []string {"metrics" }
152159 cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
153- err := cmd . Run ( )
160+ _ , err := pty . Start ( cmd )
154161 o .Expect (err ).NotTo (o .HaveOccurred ())
155- o .Expect (cmd .ProcessState .ExitCode ()).To (o .BeNumerically ("==" , 0 ), "oc-netobserv metrics command returned non-zero exit code" )
156-
157- // cleanup()
158- defer func () {
159- cliArgs := []string {"cleanup" }
160- cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
161- err := cmd .Run ()
162- o .Expect (err ).NotTo (o .HaveOccurred ())
163- }()
162+ // o.Expect(cmd.ProcessState.ExitCode()).To(o.BeNumerically("==", 0), "oc-netobserv metrics command returned non-zero exit code")
164163
165164 clientset , err := getNewClient ()
166165 o .Expect (err ).NotTo (o .HaveOccurred ())
0 commit comments