// Generates apiserver-like line with average length of 100 symbols func generateLogLine(id int) string { method := httpMethods[rand.Intn(len(httpMethods))] namespace := namespaces[rand.Intn(len(namespaces))] podName := rand.String(rand.IntnRange(3, 5)) url := fmt.Sprintf("/api/v1/namespaces/%s/pods/%s", namespace, podName) status := rand.IntnRange(200, 600) return fmt.Sprintf("%d %s %s %d", id, method, url, status) }
func TestInstances(t *testing.T) { testVM, _, cfg, ok := configFromEnv() if !ok { t.Skipf("No config found in environment") } NodeName := types.NodeName(testVM) pc, err := newPCCloud(cfg) if err != nil { t.Fatalf("Failed to create new Photon client: %s", err) } i, ok := pc.Instances() if !ok { t.Fatalf("Instances() returned false") } externalId, err := i.ExternalID(NodeName) if err != nil { t.Fatalf("Instances.ExternalID(%s) failed: %s", testVM, err) } t.Logf("Found ExternalID(%s) = %s\n", testVM, externalId) nonExistingVM := types.NodeName(rand.String(15)) externalId, err = i.ExternalID(nonExistingVM) if err == cloudprovider.InstanceNotFound { t.Logf("VM %s was not found as expected\n", nonExistingVM) } else if err == nil { t.Fatalf("Instances.ExternalID did not fail as expected, VM %s was found", nonExistingVM) } else { t.Fatalf("Instances.ExternalID did not fail as expected, err: %v", err) } instanceId, err := i.InstanceID(NodeName) if err != nil { t.Fatalf("Instances.InstanceID(%s) failed: %s", testVM, err) } t.Logf("Found InstanceID(%s) = %s\n", testVM, instanceId) instanceId, err = i.InstanceID(nonExistingVM) if err == cloudprovider.InstanceNotFound { t.Logf("VM %s was not found as expected\n", nonExistingVM) } else if err == nil { t.Fatalf("Instances.InstanceID did not fail as expected, VM %s was found", nonExistingVM) } else { t.Fatalf("Instances.InstanceID did not fail as expected, err: %v", err) } addrs, err := i.NodeAddresses(NodeName) if err != nil { t.Fatalf("Instances.NodeAddresses(%s) failed: %s", testVM, err) } t.Logf("Found NodeAddresses(%s) = %s\n", testVM, addrs) }
func TestVolumes(t *testing.T) { cfg, ok := configFromEnv() if !ok { t.Skipf("No config found in environment") } os, err := newOpenStack(cfg) if err != nil { t.Fatalf("Failed to construct/authenticate OpenStack: %s", err) } tags := map[string]string{ "test": "value", } vol, err := os.CreateVolume("kubernetes-test-volume-"+rand.String(10), 1, "", "", &tags) if err != nil { t.Fatalf("Cannot create a new Cinder volume: %v", err) } t.Logf("Volume (%s) created\n", vol) WaitForVolumeStatus(t, os, vol, volumeAvailableStatus, volumeCreateTimeoutSeconds) diskId, err := os.AttachDisk(os.localInstanceID, vol) if err != nil { t.Fatalf("Cannot AttachDisk Cinder volume %s: %v", vol, err) } t.Logf("Volume (%s) attached, disk ID: %s\n", vol, diskId) WaitForVolumeStatus(t, os, vol, volumeInUseStatus, volumeCreateTimeoutSeconds) devicePath := os.GetDevicePath(diskId) if !strings.HasPrefix(devicePath, "/dev/disk/by-id/") { t.Fatalf("GetDevicePath returned and unexpected path for Cinder volume %s, returned %s", vol, devicePath) } t.Logf("Volume (%s) found at path: %s\n", vol, devicePath) err = os.DetachDisk(os.localInstanceID, vol) if err != nil { t.Fatalf("Cannot DetachDisk Cinder volume %s: %v", vol, err) } t.Logf("Volume (%s) detached\n", vol) WaitForVolumeStatus(t, os, vol, volumeAvailableStatus, volumeCreateTimeoutSeconds) err = os.DeleteVolume(vol) if err != nil { t.Fatalf("Cannot delete Cinder volume %s: %v", vol, err) } t.Logf("Volume (%s) deleted\n", vol) }
// create count pods with the given phase for the given job func newPodList(count int32, status v1.PodPhase, job *batch.Job) []v1.Pod { pods := []v1.Pod{} for i := int32(0); i < count; i++ { newPod := v1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: fmt.Sprintf("pod-%v", rand.String(10)), Labels: job.Spec.Selector.MatchLabels, Namespace: job.Namespace, }, Status: v1.PodStatus{Phase: status}, } pods = append(pods, newPod) } return pods }
func TestVolumes(t *testing.T) { cfg, ok := configFromEnv() if !ok { t.Skipf("No config found in environment") } vs, err := newVSphere(cfg) if err != nil { t.Fatalf("Failed to construct/authenticate vSphere: %s", err) } srvs, err := vs.list("*") if err != nil { t.Fatalf("list() failed: %s", err) } if len(srvs) == 0 { t.Fatalf("list() returned zero servers") } volumeOptions := &VolumeOptions{ CapacityKB: 1 * 1024 * 1024, Tags: nil, Name: "kubernetes-test-volume-" + rand.String(10), DiskFormat: "thin"} volPath, err := vs.CreateVolume(volumeOptions) if err != nil { t.Fatalf("Cannot create a new VMDK volume: %v", err) } _, _, err = vs.AttachDisk(volPath, "") if err != nil { t.Fatalf("Cannot attach volume(%s) to VM(%s): %v", volPath, srvs[0], err) } err = vs.DetachDisk(volPath, "") if err != nil { t.Fatalf("Cannot detach disk(%s) from VM(%s): %v", volPath, srvs[0], err) } // todo: Deleting a volume after detach currently not working through API or UI (vSphere) // err = vs.DeleteVolume(volPath) // if err != nil { // t.Fatalf("Cannot delete VMDK volume %s: %v", volPath, err) // } }
func TestVolumes(t *testing.T) { testVM, testFlavor, cfg, ok := configFromEnv() if !ok { t.Skipf("No config found in environment") } pc, err := newPCCloud(cfg) if err != nil { t.Fatalf("Failed to create new Photon client: %s", err) } NodeName := types.NodeName(testVM) volumeOptions := &VolumeOptions{ CapacityGB: 2, Tags: nil, Name: "kubernetes-test-volume-" + rand.String(10), Flavor: testFlavor} pdID, err := pc.CreateDisk(volumeOptions) if err != nil { t.Fatalf("Cannot create a Photon persistent disk: %v", err) } err = pc.AttachDisk(pdID, NodeName) if err != nil { t.Fatalf("Cannot attach persistent disk(%s) to VM(%s): %v", pdID, testVM, err) } _, err = pc.DiskIsAttached(pdID, NodeName) if err != nil { t.Fatalf("Cannot attach persistent disk(%s) to VM(%s): %v", pdID, testVM, err) } err = pc.DetachDisk(pdID, NodeName) if err != nil { t.Fatalf("Cannot detach persisten disk(%s) from VM(%s): %v", pdID, testVM, err) } err = pc.DeleteDisk(pdID) if err != nil { t.Fatalf("Cannot delete persisten disk(%s): %v", pdID, err) } }
func TestInstances(t *testing.T) { cfg, ok := configFromEnv() if !ok { t.Skipf("No config found in environment") } vs, err := newVSphere(cfg) if err != nil { t.Fatalf("Failed to construct/authenticate vSphere: %s", err) } i, ok := vs.Instances() if !ok { t.Fatalf("Instances() returned false") } srvs, err := vs.list("*") if err != nil { t.Fatalf("list() failed: %s", err) } if len(srvs) == 0 { t.Fatalf("list() returned zero servers") } t.Logf("Found servers (%d): %s\n", len(srvs), srvs) externalId, err := i.ExternalID(srvs[0]) if err != nil { t.Fatalf("Instances.ExternalID(%s) failed: %s", srvs[0], err) } t.Logf("Found ExternalID(%s) = %s\n", srvs[0], externalId) nonExistingVM := types.NodeName(rand.String(15)) externalId, err = i.ExternalID(nonExistingVM) if err == cloudprovider.InstanceNotFound { t.Logf("VM %s was not found as expected\n", nonExistingVM) } else if err == nil { t.Fatalf("Instances.ExternalID did not fail as expected, VM %s was found", nonExistingVM) } else { t.Fatalf("Instances.ExternalID did not fail as expected, err: %v", err) } instanceId, err := i.InstanceID(srvs[0]) if err != nil { t.Fatalf("Instances.InstanceID(%s) failed: %s", srvs[0], err) } t.Logf("Found InstanceID(%s) = %s\n", srvs[0], instanceId) instanceId, err = i.InstanceID(nonExistingVM) if err == cloudprovider.InstanceNotFound { t.Logf("VM %s was not found as expected\n", nonExistingVM) } else if err == nil { t.Fatalf("Instances.InstanceID did not fail as expected, VM %s was found", nonExistingVM) } else { t.Fatalf("Instances.InstanceID did not fail as expected, err: %v", err) } addrs, err := i.NodeAddresses(srvs[0]) if err != nil { t.Fatalf("Instances.NodeAddresses(%s) failed: %s", srvs[0], err) } t.Logf("Found NodeAddresses(%s) = %s\n", srvs[0], addrs) }
func (simpleNameGenerator) GenerateName(base string) string { if len(base) > maxGeneratedNameLength { base = base[:maxGeneratedNameLength] } return fmt.Sprintf("%s%s", base, utilrand.String(randomLength)) }