@@ -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,27 @@ 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+
94+ // o.Expect(cmd.ProcessState.ExitCode()).To(o.BeNumerically("==", 0), "oc-netobserv returned non-zero exit code")
9295 flowsJsonfile , err := getFlowsJSONFile ()
9396 o .Expect (err ).NotTo (o .HaveOccurred ())
9497 flowsFile , err := os .Open (flowsJsonfile )
9598 o .Expect (err ).NotTo (o .HaveOccurred ())
9699 defer flowsFile .Close ()
100+
97101 decoder := json .NewDecoder (flowsFile )
98102 _ , err = decoder .Token ()
99103 o .Expect (err ).NotTo (o .HaveOccurred ())
100104 var flow struct {
101105 Sampling float64 `json:"Sampling"`
102106 }
107+
103108 atLeastOneFlowFound := false
104109 for decoder .More () {
105110 err := decoder .Decode (& flow )
@@ -115,27 +120,27 @@ var _ = g.Describe("NetObserv CLI e2e integration test suite", g.Serial, func()
115120 // capture upto 500KB with exclude_interfaces=genev_sys_6081
116121 cliArgs := []string {"flows" , "--exclude_interfaces=genev_sys_6081" , "--copy=true" , "--max-bytes=500000" , "--max-time=1m" }
117122 cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
118- err := cmd . Run ( )
123+ _ , err := pty . Start ( cmd )
119124 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" )
125+
126+ clientset , err := getNewClient ()
127+ o .Expect (err ).NotTo (o .HaveOccurred ())
128+ _ , err = isCLIDone (clientset , cliNS )
129+
130+ // o.Expect(cmd.ProcessState.ExitCode()).To(o.BeNumerically("==", 0), "oc-netobserv returned non-zero exit code")
128131 flowsJsonfile , err := getFlowsJSONFile ()
129132 o .Expect (err ).NotTo (o .HaveOccurred ())
130133 flowsFile , err := os .Open (flowsJsonfile )
131134 o .Expect (err ).NotTo (o .HaveOccurred ())
132135 defer flowsFile .Close ()
136+
133137 decoder := json .NewDecoder (flowsFile )
134138 _ , err = decoder .Token ()
135139 o .Expect (err ).NotTo (o .HaveOccurred ())
136140 var flow struct {
137141 Interfaces []string `json:"Interfaces"`
138142 }
143+
139144 for decoder .More () {
140145 err := decoder .Decode (& flow )
141146 o .Expect (err ).NotTo (o .HaveOccurred ())
@@ -150,17 +155,9 @@ var _ = g.Describe("NetObserv CLI e2e integration test suite", g.Serial, func()
150155 // Run metrics command
151156 cliArgs := []string {"metrics" }
152157 cmd := exec .Command (ocNetObservBinPath , cliArgs ... )
153- err := cmd . Run ( )
158+ _ , err := pty . Start ( cmd )
154159 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- }()
160+ // o.Expect(cmd.ProcessState.ExitCode()).To(o.BeNumerically("==", 0), "oc-netobserv metrics command returned non-zero exit code")
164161
165162 clientset , err := getNewClient ()
166163 o .Expect (err ).NotTo (o .HaveOccurred ())
0 commit comments