@@ -3,6 +3,7 @@ package e2e
3
3
import (
4
4
"encoding/base64"
5
5
"fmt"
6
+ "net"
6
7
"os"
7
8
"strings"
8
9
"testing"
@@ -2072,60 +2073,72 @@ func TestSingleNodeNetworkReport(t *testing.T) {
2072
2073
})
2073
2074
defer tc .Cleanup ()
2074
2075
2076
+ if err := tc .NPMInstallPlaywright (); err != nil {
2077
+ t .Fatalf ("fail to setup playwright: %v" , err )
2078
+ }
2079
+
2075
2080
if err := tc .SetNetworkReport (true ); err != nil {
2076
2081
t .Fatalf ("failed to enable network reporting: %v" , err )
2077
2082
}
2078
2083
2079
2084
downloadECRelease (t , tc , 0 )
2080
2085
installSingleNode (t , tc )
2081
- if stdout , stderr , err := tc .SetupPlaywrightAndRunTest ("deploy-app" ); err != nil {
2086
+
2087
+ if err := tc .BypassKurlProxy (); err != nil {
2088
+ t .Fatalf ("fail to bypass kurl-proxy: %v" , err )
2089
+ }
2090
+
2091
+ if stdout , stderr , err := tc .RunPlaywrightTest ("deploy-app" ); err != nil {
2082
2092
t .Fatalf ("fail to run playwright test deploy-app: %v: %s: %s" , err , stdout , stderr )
2083
2093
}
2084
2094
2085
2095
checkInstallationState (t , tc )
2086
2096
checkNodeJoinCommand (t , tc , 0 )
2087
2097
2098
+ // TODO: network events can came a few seconds to flow from cluster-provisioner, should look into ways to signal when a report has finished
2099
+ time .Sleep (20 * time .Second )
2100
+
2088
2101
if err := tc .SetNetworkReport (false ); err != nil {
2089
2102
t .Fatalf ("failed to disable network reporting: %v" , err )
2090
2103
}
2091
2104
2092
- // TODO: network events can came a few seconds to flow from cluster-provisioner, should look into ways to signal when a report has finished
2093
- time .Sleep (5 * time .Second )
2094
-
2095
- networkEvents , _ , err := tc .CollectNetworkReport ()
2105
+ networkEvents , err := tc .CollectNetworkReport ()
2096
2106
if err != nil {
2097
2107
t .Fatalf ("failed to collect network report: %v" , err )
2098
2108
}
2099
2109
2100
- domainsByIps := make (map [string ]map [string ]struct {})
2101
- for _ , ne := range networkEvents {
2102
- // filter out local traffic
2103
- if ne .DstIP == "0.0.0.0" {
2104
- continue
2105
- }
2110
+ allowedDomains := map [string ]struct {}{
2111
+ "ec-e2e-proxy.testcluster.net" : {},
2112
+ "ec-e2e-replicated-app.testcluster.net" : {},
2106
2113
2107
- domains := domainsByIps [ ne . DstIP ]
2108
- if domains == nil {
2109
- domains = make ( map [ string ] struct {})
2110
- }
2114
+ // these two appear due to the install_cots_cli function in single-node-install.sh
2115
+ "kots.io" : {},
2116
+ "release-assets.githubusercontent.com" : {},
2117
+ }
2111
2118
2112
- if len (strings .TrimSpace (ne .DNSQueryName )) > 0 {
2113
- domains [ne .DNSQueryName ] = struct {}{}
2119
+ seenAllowedDomains := map [string ]struct {}{}
2120
+ t .Log ("Logged outbound external network accesses:" )
2121
+ for _ , ne := range networkEvents {
2122
+ if ne .DNSQueryName == "" {
2123
+ continue
2114
2124
}
2115
2125
2116
- domainsByIps [ne .DstIP ] = domains
2117
- }
2118
-
2119
- t .Log ("Logged outbound external network accesses:\n " )
2120
- for ip , domains := range domainsByIps {
2121
- domainOutput := ""
2122
- for domain := range domains {
2123
- domainOutput += fmt .Sprintf ("\t - %v\n " , domain )
2126
+ // TODO: currently cmx reporting will return an ip as a domain, remove this once fixed
2127
+ if ip := net .ParseIP (ne .DNSQueryName ); ip != nil {
2128
+ continue
2124
2129
}
2125
2130
2126
- t .Logf ("IP: %v" , ip )
2127
- if len (domainOutput ) > 0 {
2128
- t .Logf ("\n %v" , domainOutput )
2131
+ _ , allowed := allowedDomains [ne .DNSQueryName ]
2132
+ // only print allowed domains once to reduce test output noise, but print every violation we see
2133
+ if allowed {
2134
+ if _ , ok := seenAllowedDomains [ne .DNSQueryName ]; ! ok {
2135
+ t .Logf ("%v - ALLOWED" , ne .DNSQueryName )
2136
+ seenAllowedDomains [ne .DNSQueryName ] = struct {}{}
2137
+ }
2138
+ } else {
2139
+ t .Logf ("%v - UNALLOWED\n " , ne .DNSQueryName )
2140
+ t .Logf ("\t Unallowed event details: %+v" , ne )
2141
+ t .Fail ()
2129
2142
}
2130
2143
}
2131
2144
}
0 commit comments