github.com/vmware/govmomi@v0.37.1/simulator/license_manager_test.go (about) 1 /* 2 Copyright (c) 2017 VMware, Inc. All Rights Reserved. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package simulator 18 19 import ( 20 "context" 21 "reflect" 22 "testing" 23 24 "github.com/vmware/govmomi" 25 "github.com/vmware/govmomi/find" 26 "github.com/vmware/govmomi/license" 27 ) 28 29 func TestLicenseManagerVPX(t *testing.T) { 30 ctx := context.Background() 31 m := VPX() 32 33 defer m.Remove() 34 35 err := m.Create() 36 if err != nil { 37 t.Fatal(err) 38 } 39 40 s := m.Service.NewServer() 41 defer s.Close() 42 43 c, err := govmomi.NewClient(ctx, s.URL, true) 44 if err != nil { 45 t.Fatal(err) 46 } 47 48 lm := license.NewManager(c.Client) 49 am, err := lm.AssignmentManager(ctx) 50 if err != nil { 51 t.Fatal(err) 52 } 53 54 la, err := am.QueryAssigned(ctx, "enoent") 55 if err != nil { 56 t.Fatal(err) 57 } 58 59 if len(la) != 0 { 60 t.Errorf("unexpected license") 61 } 62 63 finder := find.NewFinder(c.Client, false) 64 hosts, err := finder.HostSystemList(ctx, "/...") 65 if err != nil { 66 t.Fatal(err) 67 } 68 69 host := hosts[0].Reference().Value 70 vcid := c.Client.ServiceContent.About.InstanceUuid 71 72 for _, name := range []string{"", host, vcid} { 73 la, err = am.QueryAssigned(ctx, name) 74 if err != nil { 75 t.Fatal(err) 76 } 77 78 if len(la) != 1 { 79 t.Fatal("no licenses") 80 } 81 82 if !reflect.DeepEqual(la[0].AssignedLicense, EvalLicense) { 83 t.Fatal("invalid license") 84 } 85 } 86 } 87 88 func TestLicenseManagerESX(t *testing.T) { 89 ctx := context.Background() 90 m := ESX() 91 92 defer m.Remove() 93 94 err := m.Create() 95 if err != nil { 96 t.Fatal(err) 97 } 98 99 s := m.Service.NewServer() 100 defer s.Close() 101 102 c, err := govmomi.NewClient(ctx, s.URL, true) 103 if err != nil { 104 t.Fatal(err) 105 } 106 107 lm := license.NewManager(c.Client) 108 _, err = lm.AssignmentManager(ctx) 109 if err == nil { 110 t.Fatal("expected error") 111 } 112 113 la, err := lm.List(ctx) 114 if err != nil { 115 t.Fatal(err) 116 } 117 118 if len(la) != 1 { 119 t.Fatal("no licenses") 120 } 121 122 if !reflect.DeepEqual(la[0], EvalLicense) { 123 t.Fatal("invalid license") 124 } 125 } 126 127 func TestAddRemoveLicense(t *testing.T) { 128 ctx := context.Background() 129 m := ESX() 130 131 defer m.Remove() 132 133 err := m.Create() 134 if err != nil { 135 t.Fatal(err) 136 } 137 138 s := m.Service.NewServer() 139 defer s.Close() 140 141 c, err := govmomi.NewClient(ctx, s.URL, true) 142 if err != nil { 143 t.Fatal(err) 144 } 145 146 lm := license.NewManager(c.Client) 147 key := "00000-00000-00000-00000-11111" 148 labels := map[string]string{"key": "value"} 149 150 info, err := lm.Add(ctx, key, labels) 151 if err != nil { 152 t.Fatal(err) 153 } 154 155 if info.LicenseKey != key { 156 t.Fatalf("expect info.LicenseKey equal to %q; got %q", key, info.LicenseKey) 157 } 158 159 if len(info.Labels) != len(labels) { 160 t.Fatalf("expect len(info.Labels) equal to %d; got %d", 161 len(labels), len(info.Labels)) 162 } 163 164 if info.Labels[0].Key != "key" || info.Labels[0].Value != "value" { 165 t.Fatalf("expect label to be {key:value}; got {%s:%s}", 166 info.Labels[0].Key, info.Labels[0].Value) 167 } 168 169 la, err := lm.List(ctx) 170 if err != nil { 171 t.Fatal(err) 172 } 173 174 if len(la) != 2 { 175 t.Fatal("no licenses") 176 } 177 178 if la[1].LicenseKey != key { 179 t.Fatalf("expect info.LicenseKey equal to %q; got %q", 180 key, la[1].LicenseKey) 181 } 182 183 if len(la[1].Labels) != len(labels) { 184 t.Fatalf("expect len(info.Labels) equal to %d; got %d", 185 len(labels), len(la[1].Labels)) 186 } 187 188 if la[1].Labels[0].Key != "key" || la[1].Labels[0].Value != "value" { 189 t.Fatalf("expect label to be {key:value}; got {%s:%s}", 190 la[1].Labels[0].Key, la[1].Labels[0].Value) 191 } 192 193 err = lm.Remove(ctx, key) 194 if err != nil { 195 t.Fatal(err) 196 } 197 198 la, err = lm.List(ctx) 199 if err != nil { 200 t.Fatal(err) 201 } 202 203 if len(la) != 1 { 204 t.Fatal("no licenses") 205 } 206 }