func TestListByParent(t *testing.T) { client := new(ApiClient) client.Init() projectNames := []string{"p1", "p2", "p3"} vmNames := []string{"a", "b", "c", "d"} for _, projectName := range projectNames { project := new(types.Project) project.SetFQName("domain", []string{"default-domain", projectName}) assert.NoError(t, client.Create(project)) for _, vmName := range vmNames { vm := new(types.VirtualMachine) vm.SetFQName("project", []string{"default-domain", projectName, vmName}) assert.NoError(t, client.Create(vm)) } } elements, err := client.ListByParent("virtual-machine", "default-domain:p2") assert.NoError(t, err) for _, element := range elements { assert.Equal(t, "p2", element.Fq_name[1]) } }
func TestConsistencyStaleVM(t *testing.T) { env := new(TestFramework) env.SetUp("192.0.2.0/24") client := env.client netnsProject := new(types.Project) netnsProject.SetFQName("domain", []string{"default-domain", "testns"}) client.Create(netnsProject) env.Start() installPods(env, "testns", 3) env.SyncBarrier() env.Shutdown() assert.True(t, env.checker.Check()) p2 := new(types.Project) p2.SetFQName("domain", []string{"default-domain", "p2"}) assert.NoError(t, client.Create(p2)) vm := new(types.VirtualMachine) vm.SetFQName("project", []string{"default-domain", "p2", "x"}) assert.NoError(t, client.Create(vm)) assert.False(t, env.checker.Check()) assert.NoError(t, client.Delete(vm)) assert.True(t, env.checker.Check()) vm = new(types.VirtualMachine) vm.SetFQName("project", []string{"default-domain", "testns", "pod03"}) assert.NoError(t, client.Create(vm)) assert.False(t, env.checker.Check()) }
func (m *InstanceManager) LocateInstance(tenant, podName, uid string) *types.VirtualMachine { obj, err := m.client.FindByUuid("virtual-machine", string(uid)) if err == nil { return obj.(*types.VirtualMachine) } instance := new(types.VirtualMachine) instance.SetFQName("project", instanceFQName(m.config.DefaultDomain, tenant, podName)) instance.SetUuid(uid) err = m.client.Create(instance) if err != nil { glog.Errorf("Create %s: %v", podName, err) return nil } return instance }
func TestConsistencyStaleVM(t *testing.T) { client := createTestClient() podStore := new(mocks.Store) serviceStore := new(mocks.Store) checker := NewConsistencyChecker(client, NewConfig(), podStore, serviceStore, nil) kube := mocks.NewKubeClient() controller := NewTestController(kube, client, nil, nil) netnsProject := new(types.Project) netnsProject.SetFQName("domain", []string{"default-domain", "testns"}) client.Create(netnsProject) serviceStore.On("List").Return([]interface{}{}) installPods(controller, &kube.PodInterface.Mock, &podStore.Mock, "testns", 3) shutdown := make(chan struct{}) go controller.Run(shutdown) time.Sleep(100 * time.Millisecond) type shutdownMsg struct { } shutdown <- shutdownMsg{} time.Sleep(100 * time.Millisecond) assert.True(t, checker.Check()) p2 := new(types.Project) p2.SetFQName("domain", []string{"default-domain", "p2"}) assert.NoError(t, client.Create(p2)) vm := new(types.VirtualMachine) vm.SetFQName("project", []string{"default-domain", "p2", "x"}) assert.NoError(t, client.Create(vm)) assert.False(t, checker.Check()) assert.NoError(t, client.Delete(vm)) assert.True(t, checker.Check()) vm = new(types.VirtualMachine) vm.SetFQName("project", []string{"default-domain", "testns", "pod03"}) assert.NoError(t, client.Create(vm)) assert.False(t, checker.Check()) }
func TestUpdateClearVM(t *testing.T) { client := new(ApiClient) client.Init() project := new(types.Project) project.SetFQName("domain", []string{"default-domain", "tenant"}) assert.NoError(t, client.Create(project)) vm := new(types.VirtualMachine) vm.SetFQName("project", []string{"default-domain", "tenant", "instance"}) assert.NoError(t, client.Create(vm)) vmi := new(types.VirtualMachineInterface) vmi.SetFQName("project", []string{"default-domain", "tenant", "instance"}) vmi.AddVirtualMachine(vm) assert.NoError(t, client.Create(vmi)) vmi.ClearVirtualMachine() assert.NoError(t, client.Update(vmi)) assert.NoError(t, client.Delete(vm)) }
func TestPodDelete(t *testing.T) { client := new(contrail_mocks.ApiClient) client.Init() allocator := new(mocks.AddressAllocator) networkMgr := new(mocks.NetworkManager) controller := NewTestController(nil, client, allocator, networkMgr) pod := &api.Pod{ ObjectMeta: api.ObjectMeta{ Name: "test", Namespace: "testns", UID: kubetypes.UID(uuid.New()), Labels: map[string]string{ "name": "testnet", }, }, } netnsProject := new(types.Project) netnsProject.SetUuid(uuid.New()) netnsProject.SetFQName("", []string{"default-domain", "testns"}) assert.NoError(t, client.Create(netnsProject)) instance := new(types.VirtualMachine) fqn := []string{"default-domain", "testns", "test"} instance.SetFQName("project", fqn) instance.SetUuid(string(pod.ObjectMeta.UID)) assert.NoError(t, client.Create(instance)) vmi := new(types.VirtualMachineInterface) vmi.SetFQName("project", fqn) vmi.AddVirtualMachine(instance) assert.NoError(t, client.Create(vmi)) ipObj := new(types.InstanceIp) ipObj.SetName("testns_test") assert.NoError(t, client.Create(ipObj)) allocator.On("ReleaseIpAddress", string(pod.ObjectMeta.UID)).Return() networkMgr.On("ReleaseNetworkIfEmpty", "testns", "testnet").Return(true, nil) shutdown := make(chan struct{}) go controller.Run(shutdown) controller.DeletePod(pod) time.Sleep(100 * time.Millisecond) type shutdownMsg struct { } shutdown <- shutdownMsg{} if obj, err := client.FindByName("virtual-machine", strings.Join(fqn, ":")); err == nil { t.Errorf("virtual-machine object still present %s", obj.GetUuid()) } if obj, err := client.FindByUuid("virtual-machine-interface", vmi.GetUuid()); err == nil { t.Errorf("virtual-machine-interface object still present %s", obj.GetUuid()) } if obj, err := client.FindByUuid("instance-ip", ipObj.GetUuid()); err == nil { t.Errorf("instance-ip object still present %s", obj.GetUuid()) } allocator.AssertExpectations(t) }