github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/plugins/drivers/utils_test.go (about) 1 package drivers 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/nomad/helper/uuid" 7 "github.com/hashicorp/nomad/nomad/structs" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestResourceUsageRoundTrip(t *testing.T) { 12 input := &ResourceUsage{ 13 CpuStats: &CpuStats{ 14 SystemMode: 0, 15 UserMode: 0.9963907032120152, 16 TotalTicks: 21.920595295932515, 17 ThrottledPeriods: 2321, 18 ThrottledTime: 123, 19 Percent: 0.9963906952696598, 20 Measured: []string{"System Mode", "User Mode", "Percent"}, 21 }, 22 MemoryStats: &MemoryStats{ 23 RSS: 25681920, 24 Swap: 15681920, 25 Usage: 12, 26 MaxUsage: 23, 27 KernelUsage: 34, 28 KernelMaxUsage: 45, 29 Measured: []string{"RSS", "Swap"}, 30 }, 31 } 32 33 parsed := resourceUsageFromProto(resourceUsageToProto(input)) 34 35 require.EqualValues(t, parsed, input) 36 } 37 38 func TestTaskConfigRoundTrip(t *testing.T) { 39 40 input := &TaskConfig{ 41 ID: uuid.Generate(), 42 Name: "task", 43 JobName: "job", 44 TaskGroupName: "group", 45 Resources: &Resources{ 46 NomadResources: &structs.AllocatedTaskResources{ 47 Cpu: structs.AllocatedCpuResources{ 48 CpuShares: int64(100), 49 }, 50 Memory: structs.AllocatedMemoryResources{ 51 MemoryMB: int64(300), 52 }, 53 }, 54 LinuxResources: &LinuxResources{ 55 MemoryLimitBytes: 300 * 1024 * 1024, 56 CPUShares: 100, 57 PercentTicks: float64(100) / float64(3200), 58 }, 59 Ports: &structs.AllocatedPorts{ 60 { 61 Label: "port", 62 Value: 23456, 63 To: 8080, 64 HostIP: "10.0.0.1", 65 }, 66 }, 67 }, 68 Devices: []*DeviceConfig{ 69 { 70 TaskPath: "task", 71 HostPath: "host", 72 Permissions: "perms", 73 }, 74 }, 75 Mounts: []*MountConfig{ 76 { 77 TaskPath: "task", 78 HostPath: "host", 79 Readonly: true, 80 }, 81 }, 82 Env: map[string]string{"gir": "zim"}, 83 DeviceEnv: map[string]string{"foo": "bar"}, 84 User: "user", 85 AllocDir: "allocDir", 86 StdoutPath: "stdout", 87 StderrPath: "stderr", 88 AllocID: uuid.Generate(), 89 NetworkIsolation: &NetworkIsolationSpec{ 90 Mode: NetIsolationModeGroup, 91 Path: "path", 92 Labels: map[string]string{"net": "abc"}, 93 }, 94 DNS: &DNSConfig{ 95 Servers: []string{"8.8.8.8"}, 96 Searches: []string{".consul"}, 97 Options: []string{"ndots:2"}, 98 }, 99 } 100 101 parsed := taskConfigFromProto(taskConfigToProto(input)) 102 103 require.EqualValues(t, input, parsed) 104 105 }