| // +build linux |
| |
| /* |
| Copyright 2016 The Kubernetes Authors. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| package cm |
| |
| import ( |
| "path" |
| "reflect" |
| "testing" |
| ) |
| |
| // TestNewCgroupName tests confirms that #68416 is fixed |
| func TestNewCgroupName(t *testing.T) { |
| a := ParseCgroupfsToCgroupName("/a/") |
| ab := NewCgroupName(a, "b") |
| |
| expectedAB := CgroupName([]string{"a", "", "b"}) |
| if !reflect.DeepEqual(ab, expectedAB) { |
| t.Errorf("Expected %d%+v; got %d%+v", len(expectedAB), expectedAB, len(ab), ab) |
| } |
| |
| abc := NewCgroupName(ab, "c") |
| |
| expectedABC := CgroupName([]string{"a", "", "b", "c"}) |
| if !reflect.DeepEqual(abc, expectedABC) { |
| t.Errorf("Expected %d%+v; got %d%+v", len(expectedABC), expectedABC, len(abc), abc) |
| } |
| |
| _ = NewCgroupName(ab, "d") |
| |
| if !reflect.DeepEqual(abc, expectedABC) { |
| t.Errorf("Expected %d%+v; got %d%+v", len(expectedABC), expectedABC, len(abc), abc) |
| } |
| } |
| |
| func TestCgroupNameToSystemdBasename(t *testing.T) { |
| testCases := []struct { |
| input CgroupName |
| expected string |
| }{ |
| { |
| input: RootCgroupName, |
| expected: "/", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "system"), |
| expected: "system.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "system", "Burstable"), |
| expected: "system-Burstable.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "Burstable", "pod-123"), |
| expected: "Burstable-pod_123.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "test", "a", "b"), |
| expected: "test-a-b.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "test", "a", "b", "Burstable"), |
| expected: "test-a-b-Burstable.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "Burstable"), |
| expected: "Burstable.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "BestEffort", "pod-6c1a4e95-6bb6-11e6-bc26-28d2444e470d"), |
| expected: "BestEffort-pod_6c1a4e95_6bb6_11e6_bc26_28d2444e470d.slice", |
| }, |
| } |
| for _, testCase := range testCases { |
| if actual := path.Base(testCase.input.ToSystemd()); actual != testCase.expected { |
| t.Errorf("Unexpected result, input: %v, expected: %v, actual: %v", testCase.input, testCase.expected, actual) |
| } |
| } |
| } |
| |
| func TestCgroupNameToSystemd(t *testing.T) { |
| testCases := []struct { |
| input CgroupName |
| expected string |
| }{ |
| { |
| input: RootCgroupName, |
| expected: "/", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "Burstable"), |
| expected: "/Burstable.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "Burstable", "pod-123"), |
| expected: "/Burstable.slice/Burstable-pod_123.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "BestEffort", "pod-6c1a4e95-6bb6-11e6-bc26-28d2444e470d"), |
| expected: "/BestEffort.slice/BestEffort-pod_6c1a4e95_6bb6_11e6_bc26_28d2444e470d.slice", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "kubepods"), |
| expected: "/kubepods.slice", |
| }, |
| } |
| for _, testCase := range testCases { |
| if actual := testCase.input.ToSystemd(); actual != testCase.expected { |
| t.Errorf("Unexpected result, input: %v, expected: %v, actual: %v", testCase.input, testCase.expected, actual) |
| } |
| } |
| } |
| |
| func TestCgroupNameToCgroupfs(t *testing.T) { |
| testCases := []struct { |
| input CgroupName |
| expected string |
| }{ |
| { |
| input: RootCgroupName, |
| expected: "/", |
| }, |
| { |
| input: NewCgroupName(RootCgroupName, "Burstable"), |
| expected: "/Burstable", |
| }, |
| } |
| for _, testCase := range testCases { |
| if actual := testCase.input.ToCgroupfs(); actual != testCase.expected { |
| t.Errorf("Unexpected result, input: %v, expected: %v, actual: %v", testCase.input, testCase.expected, actual) |
| } |
| } |
| } |