func (cm *containerManagerImpl) SystemCgroupsLimit() api.ResourceList { cpuLimit := int64(0) // Sum up resources of all external containers. for _, cont := range cm.systemContainers { cpuLimit += cont.cpuMillicores } return api.ResourceList{ api.ResourceCPU: *resource.NewMilliQuantity( cpuLimit, resource.DecimalSI), } }
func (tc *testCase) prepareTestClient(t *testing.T) *fake.Clientset { namespace := "test-namespace" tc.namespace = namespace podNamePrefix := "test-pod" podLabels := map[string]string{"name": podNamePrefix} tc.selector = labels.SelectorFromSet(podLabels) fakeClient := &fake.Clientset{} fakeClient.AddReactor("list", "pods", func(action core.Action) (handled bool, ret runtime.Object, err error) { if tc.podListOverride != nil { return true, tc.podListOverride, nil } obj := &api.PodList{} for i := 0; i < tc.replicas; i++ { podName := fmt.Sprintf("%s-%d", podNamePrefix, i) pod := buildPod(namespace, podName, podLabels, api.PodRunning) obj.Items = append(obj.Items, pod) } return true, obj, nil }) if tc.useMetricsApi { fakeClient.AddProxyReactor("services", func(action core.Action) (handled bool, ret restclient.ResponseWrapper, err error) { metrics := []*metrics_api.PodMetrics{} for i, containers := range tc.reportedPodMetrics { metric := &metrics_api.PodMetrics{ ObjectMeta: v1.ObjectMeta{ Name: fmt.Sprintf("%s-%d", podNamePrefix, i), Namespace: namespace, }, Timestamp: unversioned.Time{Time: fixedTimestamp.Add(time.Duration(tc.targetTimestamp) * time.Minute)}, Containers: []metrics_api.ContainerMetrics{}, } for j, cpu := range containers { cm := metrics_api.ContainerMetrics{ Name: fmt.Sprintf("%s-%d-container-%d", podNamePrefix, i, j), Usage: v1.ResourceList{ v1.ResourceCPU: *resource.NewMilliQuantity( cpu, resource.DecimalSI), v1.ResourceMemory: *resource.NewQuantity( int64(1024*1024), resource.BinarySI), }, } metric.Containers = append(metric.Containers, cm) } metrics = append(metrics, metric) } heapsterRawMemResponse, _ := json.Marshal(&metrics) return true, newFakeResponseWrapper(heapsterRawMemResponse), nil }) } else { fakeClient.AddProxyReactor("services", func(action core.Action) (handled bool, ret restclient.ResponseWrapper, err error) { metrics := heapster.MetricResultList{} var latestTimestamp time.Time for _, reportedMetricPoints := range tc.reportedMetricsPoints { var heapsterMetricPoints []heapster.MetricPoint for _, reportedMetricPoint := range reportedMetricPoints { timestamp := fixedTimestamp.Add(time.Duration(reportedMetricPoint.timestamp) * time.Minute) if latestTimestamp.Before(timestamp) { latestTimestamp = timestamp } heapsterMetricPoint := heapster.MetricPoint{Timestamp: timestamp, Value: reportedMetricPoint.level, FloatValue: nil} heapsterMetricPoints = append(heapsterMetricPoints, heapsterMetricPoint) } metric := heapster.MetricResult{ Metrics: heapsterMetricPoints, LatestTimestamp: latestTimestamp, } metrics.Items = append(metrics.Items, metric) } heapsterRawMemResponse, _ := json.Marshal(&metrics) return true, newFakeResponseWrapper(heapsterRawMemResponse), nil }) } return fakeClient }