mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #28494 from wojtek-t/integration_namespace_4
Automatic merge from submit-queue Finish migration of integration tests to separate namespaces This is also making the logs from integration tests debuggable and understandable.
This commit is contained in:
		@@ -71,7 +71,7 @@ type passthroughLogger struct{}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Addf logs info immediately.
 | 
					// Addf logs info immediately.
 | 
				
			||||||
func (passthroughLogger) Addf(format string, data ...interface{}) {
 | 
					func (passthroughLogger) Addf(format string, data ...interface{}) {
 | 
				
			||||||
	glog.InfoDepth(1, fmt.Sprintf(format, data...))
 | 
						glog.V(2).Info(fmt.Sprintf(format, data...))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DefaultStacktracePred is the default implementation of StacktracePred.
 | 
					// DefaultStacktracePred is the default implementation of StacktracePred.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -294,6 +294,14 @@ func (r *masterCountEndpointReconciler) ReconcileEndpoints(serviceName string, i
 | 
				
			|||||||
			},
 | 
								},
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if errors.IsNotFound(err) {
 | 
				
			||||||
 | 
							// Simply create non-existing endpoints for the service.
 | 
				
			||||||
 | 
							e.Subsets = []api.EndpointSubset{{
 | 
				
			||||||
 | 
								Addresses: []api.EndpointAddress{{IP: ip.String()}},
 | 
				
			||||||
 | 
								Ports:     endpointPorts,
 | 
				
			||||||
 | 
							}}
 | 
				
			||||||
 | 
							return r.endpointRegistry.UpdateEndpoints(ctx, e)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// First, determine if the endpoint is in the format we expect (one
 | 
						// First, determine if the endpoint is in the format we expect (one
 | 
				
			||||||
	// subset, ports matching endpointPorts, N IP addresses).
 | 
						// subset, ports matching endpointPorts, N IP addresses).
 | 
				
			||||||
@@ -304,7 +312,7 @@ func (r *masterCountEndpointReconciler) ReconcileEndpoints(serviceName string, i
 | 
				
			|||||||
			Addresses: []api.EndpointAddress{{IP: ip.String()}},
 | 
								Addresses: []api.EndpointAddress{{IP: ip.String()}},
 | 
				
			||||||
			Ports:     endpointPorts,
 | 
								Ports:     endpointPorts,
 | 
				
			||||||
		}}
 | 
							}}
 | 
				
			||||||
		glog.Warningf("Resetting endpoints for master service %q to %v", serviceName, e)
 | 
							glog.Warningf("Resetting endpoints for master service %q to %#v", serviceName, e)
 | 
				
			||||||
		return r.endpointRegistry.UpdateEndpoints(ctx, e)
 | 
							return r.endpointRegistry.UpdateEndpoints(ctx, e)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if ipCorrect && portsCorrect {
 | 
						if ipCorrect && portsCorrect {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -791,14 +791,13 @@ func runSelfLinkTestOnNamespace(t *testing.T, c *client.Client, namespace string
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSelfLinkOnNamespace(t *testing.T) {
 | 
					func TestSelfLinkOnNamespace(t *testing.T) {
 | 
				
			||||||
	// TODO: Limit the test to a single non-default namespace and clean this up at the end.
 | 
					 | 
				
			||||||
	framework.DeleteAllEtcdKeys()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	_, s := framework.RunAMaster(nil)
 | 
						_, s := framework.RunAMaster(nil)
 | 
				
			||||||
	defer s.Close()
 | 
						defer s.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ns := framework.CreateTestingNamespace("selflink", s, t)
 | 
				
			||||||
 | 
						defer framework.DeleteTestingNamespace(ns, s, t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	c := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						c := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	runSelfLinkTestOnNamespace(t, c, api.NamespaceDefault)
 | 
						runSelfLinkTestOnNamespace(t, c, ns.Name)
 | 
				
			||||||
	runSelfLinkTestOnNamespace(t, c, "other-namespace")
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,21 +62,3 @@ func WithEtcdKey(f func(string)) {
 | 
				
			|||||||
	defer etcd.NewKeysAPI(NewEtcdClient()).Delete(context.TODO(), prefix, &etcd.DeleteOptions{Recursive: true})
 | 
						defer etcd.NewKeysAPI(NewEtcdClient()).Delete(context.TODO(), prefix, &etcd.DeleteOptions{Recursive: true})
 | 
				
			||||||
	f(prefix)
 | 
						f(prefix)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// DeleteAllEtcdKeys deletes all keys from etcd.
 | 
					 | 
				
			||||||
// TODO: Instead of sprinkling calls to this throughout the code, adjust the
 | 
					 | 
				
			||||||
// prefix in etcdtest package; then just delete everything once at the end
 | 
					 | 
				
			||||||
// of the test run.
 | 
					 | 
				
			||||||
func DeleteAllEtcdKeys() {
 | 
					 | 
				
			||||||
	glog.Infof("Deleting all etcd keys")
 | 
					 | 
				
			||||||
	keysAPI := etcd.NewKeysAPI(NewEtcdClient())
 | 
					 | 
				
			||||||
	keys, err := keysAPI.Get(context.TODO(), "/", nil)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		glog.Fatalf("Unable to list root etcd keys: %v", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	for _, node := range keys.Node.Nodes {
 | 
					 | 
				
			||||||
		if _, err := keysAPI.Delete(context.TODO(), node.Key, &etcd.DeleteOptions{Recursive: true}); err != nil {
 | 
					 | 
				
			||||||
			glog.Fatalf("Unable delete key: %v", err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -91,8 +91,6 @@ type Config struct {
 | 
				
			|||||||
	// If nil, a default is used, partially filled configs will not get populated.
 | 
						// If nil, a default is used, partially filled configs will not get populated.
 | 
				
			||||||
	MasterConfig            *master.Config
 | 
						MasterConfig            *master.Config
 | 
				
			||||||
	StartReplicationManager bool
 | 
						StartReplicationManager bool
 | 
				
			||||||
	// If true, all existing etcd keys are purged before starting master components
 | 
					 | 
				
			||||||
	DeleteEtcdKeys bool
 | 
					 | 
				
			||||||
	// Client throttling qps
 | 
						// Client throttling qps
 | 
				
			||||||
	QPS float32
 | 
						QPS float32
 | 
				
			||||||
	// Client burst qps, also burst replicas allowed in rc manager
 | 
						// Client burst qps, also burst replicas allowed in rc manager
 | 
				
			||||||
@@ -105,9 +103,6 @@ func NewMasterComponents(c *Config) *MasterComponents {
 | 
				
			|||||||
	m, s := startMasterOrDie(c.MasterConfig)
 | 
						m, s := startMasterOrDie(c.MasterConfig)
 | 
				
			||||||
	// TODO: Allow callers to pipe through a different master url and create a client/start components using it.
 | 
						// TODO: Allow callers to pipe through a different master url and create a client/start components using it.
 | 
				
			||||||
	glog.Infof("Master %+v", s.URL)
 | 
						glog.Infof("Master %+v", s.URL)
 | 
				
			||||||
	if c.DeleteEtcdKeys {
 | 
					 | 
				
			||||||
		DeleteAllEtcdKeys()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	// TODO: caesarxuchao: remove this client when the refactoring of client libraray is done.
 | 
						// TODO: caesarxuchao: remove this client when the refactoring of client libraray is done.
 | 
				
			||||||
	restClient := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst})
 | 
						restClient := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst})
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}, QPS: c.QPS, Burst: c.Burst})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,6 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/http/httptest"
 | 
					 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
@@ -36,7 +35,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
 | 
						"k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/restclient"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/master"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/wait"
 | 
						"k8s.io/kubernetes/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/test/integration/framework"
 | 
						"k8s.io/kubernetes/test/integration/framework"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -392,21 +390,12 @@ func countEndpoints(eps *api.Endpoints) int {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestMasterService(t *testing.T) {
 | 
					func TestMasterService(t *testing.T) {
 | 
				
			||||||
	// TODO: Limit the test to a single non-default namespace and clean this up at the end.
 | 
						_, s := framework.RunAMaster(framework.NewIntegrationTestMasterConfig())
 | 
				
			||||||
	framework.DeleteAllEtcdKeys()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	m, err := master.New(framework.NewIntegrationTestMasterConfig())
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		t.Fatalf("Error in bringing up the master: %v", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
 | 
					 | 
				
			||||||
		m.Handler.ServeHTTP(w, req)
 | 
					 | 
				
			||||||
	}))
 | 
					 | 
				
			||||||
	defer s.Close()
 | 
						defer s.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = wait.Poll(time.Second, time.Minute, func() (bool, error) {
 | 
						err := wait.Poll(time.Second, time.Minute, func() (bool, error) {
 | 
				
			||||||
		svcList, err := client.Services(api.NamespaceDefault).List(api.ListOptions{})
 | 
							svcList, err := client.Services(api.NamespaceDefault).List(api.ListOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			t.Errorf("unexpected error: %v", err)
 | 
								t.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@ func scrapeMetrics(s *httptest.Server) ([]*prometheuspb.MetricFamily, error) {
 | 
				
			|||||||
		if err := proto.UnmarshalText(scanner.Text(), &metric); err != nil {
 | 
							if err := proto.UnmarshalText(scanner.Text(), &metric); err != nil {
 | 
				
			||||||
			return nil, fmt.Errorf("Failed to unmarshal line of metrics response: %v", err)
 | 
								return nil, fmt.Errorf("Failed to unmarshal line of metrics response: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		glog.Infof("Got metric %q", metric.GetName())
 | 
							glog.V(4).Infof("Got metric %q", metric.GetName())
 | 
				
			||||||
		metrics = append(metrics, &metric)
 | 
							metrics = append(metrics, &metric)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return metrics, nil
 | 
						return metrics, nil
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user