From 32942f146296ea8fef700ba6904738f13b213562 Mon Sep 17 00:00:00 2001 From: Anirudh Date: Fri, 1 Dec 2017 13:21:17 -0800 Subject: [PATCH] Fix for the network partition tests (and cluster autoscaling too potentially) --- test/e2e/framework/networking_utils.go | 10 +++++++--- test/e2e/framework/util.go | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/test/e2e/framework/networking_utils.go b/test/e2e/framework/networking_utils.go index 643805b4fc5..d436ba1fb15 100644 --- a/test/e2e/framework/networking_utils.go +++ b/test/e2e/framework/networking_utils.go @@ -935,7 +935,9 @@ func TestHitNodesFromOutsideWithCount(externalIP string, httpPort int32, timeout // This function executes commands on a node so it will work only for some // environments. func TestUnderTemporaryNetworkFailure(c clientset.Interface, ns string, node *v1.Node, testFunc func()) { - host := GetNodeExternalIP(node) + externalIP := GetNodeExternalIP(node) + internalIP := GetNodeInternalIP(node) + master := GetMasterAddress(c) By(fmt.Sprintf("block network traffic from node %s to the master", node.Name)) defer func() { @@ -944,14 +946,16 @@ func TestUnderTemporaryNetworkFailure(c clientset.Interface, ns string, node *v1 // had been inserted. (yes, we could look at the error code and ssh error // separately, but I prefer to stay on the safe side). By(fmt.Sprintf("Unblock network traffic from node %s to the master", node.Name)) - UnblockNetwork(host, master) + UnblockNetwork(externalIP, master) + UnblockNetwork(internalIP, master) }() Logf("Waiting %v to ensure node %s is ready before beginning test...", resizeNodeReadyTimeout, node.Name) if !WaitForNodeToBe(c, node.Name, v1.NodeReady, true, resizeNodeReadyTimeout) { Failf("Node %s did not become ready within %v", node.Name, resizeNodeReadyTimeout) } - BlockNetwork(host, master) + BlockNetwork(externalIP, master) + BlockNetwork(internalIP, master) Logf("Waiting %v for node %s to be not ready after simulated network failure", resizeNodeNotReadyTimeout, node.Name) if !WaitForNodeToBe(c, node.Name, v1.NodeReady, false, resizeNodeNotReadyTimeout) { diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index 99c37212648..dd272a94384 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -4925,6 +4925,23 @@ func GetNodeExternalIP(node *v1.Node) string { return host } +// GetNodeInternalIP returns node internal IP concatenated with port 22 for ssh +// e.g. 1.2.3.4:22 +func GetNodeInternalIP(node *v1.Node) string { + Logf("Getting internal IP address for %s", node.Name) + host := "" + for _, a := range node.Status.Addresses { + if a.Type == v1.NodeInternalIP { + host = net.JoinHostPort(a.Address, sshPort) + break + } + } + if host == "" { + Failf("Couldn't get the internal IP of host %s with addresses %v", node.Name, node.Status.Addresses) + } + return host +} + // SimpleGET executes a get on the given url, returns error if non-200 returned. func SimpleGET(c *http.Client, url, host string) (string, error) { req, err := http.NewRequest("GET", url, nil)