|
| 1 | +/* |
| 2 | +Copyright 2019 The Kubernetes Authors 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 problem |
| 18 | + |
| 19 | +import ( |
| 20 | + "fmt" |
| 21 | + "testing" |
| 22 | +) |
| 23 | + |
| 24 | +func TestFromError(t *testing.T) { |
| 25 | + var tests = []struct { |
| 26 | + issue int |
| 27 | + os string |
| 28 | + want string |
| 29 | + err string |
| 30 | + }{ |
| 31 | + {0, "", "", "this is just a lame error message with no matches."}, |
| 32 | + {3614, "", "VBOX_HOST_ADAPTER", "Error starting host: Error starting stopped host: Error setting up host only network on machine start: The host-only adapter we just created is not visible. This is a well known VirtualBox bug. You might want to uninstall it and reinstall at least version 5.0.12 that is is supposed to fix this issue"}, |
| 33 | + {3784, "", "VBOX_NOT_FOUND", "create: precreate: VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"}, |
| 34 | + {3849, "", "IP_NOT_FOUND", "bootstrapper: Error creating new ssh host from driver: Error getting ssh host name for driver: IP not found"}, |
| 35 | + {3859, "windows", "VBOX_HARDENING", `Unable to start VM: create: creating: Unable to start the VM: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe startvm minikube --type headless failed: |
| 36 | +VBoxManage.exe: error: The virtual machine 'minikube' has terminated unexpectedly during startup with exit code -1073741819 (0xc0000005). More details may be available in 'C:\Users\pabitra_b.minikube\machines\minikube\minikube\Logs\VBoxHardening.log' |
| 37 | +VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine`}, |
| 38 | + {3922, "", "ISO_DOWNLOAD_FAILED", `unable to cache ISO: https://storage.googleapis.com/minikube/iso/minikube-v0.35.0.iso: failed to download: failed to download to temp file: download failed: 5 error(s) occurred: |
| 39 | +* Temporary download error: Get https://storage.googleapis.com/minikube/iso/minikube-v0.35.0.iso: dial tcp 216.58.207.144:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.`}, |
| 40 | + {4107, "darwin", "VBOX_BLOCKED", "Result Code: NS_ERROR_FAILURE (0x80004005)"}, |
| 41 | + } |
| 42 | + for _, tc := range tests { |
| 43 | + t.Run(tc.want, func(t *testing.T) { |
| 44 | + got := FromError(fmt.Errorf(tc.err), tc.os) |
| 45 | + if got == nil { |
| 46 | + if tc.want != "" { |
| 47 | + t.Errorf("FromError(%q)=nil, want %s", tc.err, tc.want) |
| 48 | + } |
| 49 | + return |
| 50 | + } |
| 51 | + if got.ID != tc.want { |
| 52 | + t.Errorf("FromError(%q)=%s, want %s", tc.err, got.ID, tc.want) |
| 53 | + } |
| 54 | + |
| 55 | + found := false |
| 56 | + for _, i := range got.Issues { |
| 57 | + if i == tc.issue { |
| 58 | + found = true |
| 59 | + } |
| 60 | + } |
| 61 | + if !found { |
| 62 | + t.Errorf("Issue %d is not listed in %+v", tc.issue, got.Issues) |
| 63 | + } |
| 64 | + }) |
| 65 | + } |
| 66 | +} |
0 commit comments