diff --git a/src/oca/go/src/goca/image_test.go b/src/oca/go/src/goca/image_test.go index f2ecf9a976..3b321b2e31 100644 --- a/src/oca/go/src/goca/image_test.go +++ b/src/oca/go/src/goca/image_test.go @@ -97,7 +97,7 @@ func TestImage(t *testing.T) { if err != nil { t.Error(err) } - + err = image.Info() if err != nil { t.Error(err) @@ -132,11 +132,11 @@ func TestImage(t *testing.T) { } // Change Owner to oneadmin call - err = image.Chown(0, 0) + err = image.Chown(1, 1) if err != nil { t.Error(err) } - + err = image.Info() if err != nil { t.Error(err) @@ -154,12 +154,12 @@ func TestImage(t *testing.T) { t.Errorf("Could not get user name") } - if "oneadmin" != uname { + if "serveradmin" != uname { t.Error("Image owner is not oneadmin") } // Compare with caller group - if "oneadmin" != gname { + if "users" != gname { t.Error("Image owner group is not oneadmin") } diff --git a/src/oca/go/src/goca/marketplace_test.go b/src/oca/go/src/goca/marketplace_test.go index 754df58b66..ac077b1f2d 100644 --- a/src/oca/go/src/goca/marketplace_test.go +++ b/src/oca/go/src/goca/marketplace_test.go @@ -1,145 +1,118 @@ package goca import ( - "testing" - "strings" + "testing" + "goca" ) -var mpTpl = ` -NAME = "MPTEST" -MARKET_MAD = "http" -ZONE_ID = 0 -BASE_URL = "http://frontend.opennebula.org/" -PUBLIC_DIR = "/var/loca/market-http" -BRIDGE_LIST = "web-server.opennebula.org" -` -// Helper to create a Marketplace -func createMarketPlace(t *testing.T) *MarketPlace { - id, err := CreateMarketPlace(mpTpl) +func TestMarketplace(t *testing.T){ + var mkt_name string = "marketplace_test_go" + + var market *goca.MarketPlace + + var mkt_template string = "NAME = \"" + mkt_name + "\"\n" + + "MARKET_MAD = \"http\"\n" + + "BASE_URL = \"http://url/\"\n" + + "PUBLIC_DIR = \"/var/loca/market-http\"" + + //Create Marketpkace + market_id, err := goca.CreateMarketPlace(mkt_template) + if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - // Get Marketplace by ID - mp := NewMarketPlace(id) + market = goca.NewMarketPlace(market_id) + market.Info() + + actual, _:= market.XMLResource.XPath("/MARKETPLACE/NAME") + + if actual != mkt_name { + t.Errorf("Test failed, expected: '%s', got: '%s'", mkt_name, actual) + } + + tmpl := "ATT1 = \"VAL1\"" + + //Update Marketpkace + err = market.Update(tmpl, 1) - err = mp.Info() if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - return mp -} + market.Info() -func TestMarketPlace(t *testing.T) { - mp := createMarketPlace(t) + actual_mm, _ := market.XMLResource.XPath("/MARKETPLACE/TEMPLATE/MARKET_MAD") + actual_1, _ := market.XMLResource.XPath("/MARKETPLACE/TEMPLATE/ATT1") + + if actual_mm != "http" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "http", actual_mm) + } + + if actual_1 != "VAL1" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "VAL1", actual_1) + } + + //Change permissions for Marketpkace + err = market.Chmod(1,1,1,1,1,1,1,1,1) - idParse, err := GetID(t, mp, "MARKETPLACE") if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - if idParse != mp.ID { - t.Errorf("Marketplace ID does not match") + market.Info() + + expected := "111111111" + actual, _ = market.XMLResource.XPath("/MARKETPLACE/PERMISSIONS") + + if actual != expected { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected, actual) } - // Get security group by Name - name, ok := mp.XPath("/MARKETPLACE/NAME") - if !ok { - t.Errorf("Could not get name") - } + //Change owner of Marketpkace + err = market.Chown(1,1) - mp, err = NewMarketPlaceFromName(name) if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - err = mp.Info() + market.Info() + + expected_usr := "1" + expected_grp := "1" + actual_usr, _ :=market.XMLResource.XPath("/MARKETPLACE/UID") + actual_grp, _ :=market.XMLResource.XPath("/MARKETPLACE/GID") + + if actual_usr != expected_usr { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected_usr, actual_usr) + } + + if actual_grp != expected_grp { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected_grp, actual_grp) + } + + rename := mkt_name + "-renamed" + + //Rename Marketpkace + err = market.Rename(rename) + if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - idParse, err = GetID(t, mp, "MARKETPLACE") + market.Info() - if idParse != mp.ID { - t.Errorf("Marketplace ID does not match") + actual, _ = market.XMLResource.XPath("/MARKETPLACE/NAME") + + if actual != rename { + t.Errorf("Test failed, expected: '%s', got: '%s'", rename, actual) } - // Change Owner to user call - err = mp.Chown(-1, -1) + //Delete Marketpkace + err = market.Delete() + if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - - err = mp.Info() - if err != nil { - t.Error(err) - } - - // Get Marketplace Owner Name - uname, ok := mp.XPath("/MARKETPLACE/UNAME") - if !ok { - t.Errorf("Could not get user name") - } - - // Get Marketplace owner group Name - gname, ok := mp.XPath("/MARKETPLACE/GNAME") - if !ok { - t.Errorf("Could not get group name") - } - - // Compare with caller username - caller := strings.Split(client.token, ":")[0] - if caller != uname { - t.Error("Caller user and marketplace owner user mismatch") - } - - group, err := GetUserGroup(t, caller) - if err != nil { - t.Error("Cannot retreive caller group") - } - - // Compare with caller group - if group != gname { - t.Error("Caller group and security group owner group mismatch") - } - - // Change Owner to oneadmin call - err = mp.Chown(0, 0) - if err != nil { - t.Error(err) - } - - err = mp.Info() - if err != nil { - t.Error(err) - } - - // Get Marketplace Owner Name - uname, ok = mp.XPath("/MARKETPLACE/UNAME") - if !ok { - t.Errorf("Could not get user name") - } - - // Get Marketplace Owner Name - gname, ok = mp.XPath("/MARKETPLACE/GNAME") - if !ok { - t.Errorf("Could not get user name") - } - - if "oneadmin" != uname { - t.Error("MarketPlace owner is not oneadmin") - } - - // Compare with caller group - if "oneadmin" != gname { - t.Error("MarketPlace owner group is not oneadmin") - } - - // Delete template - err = mp.Delete() - if err != nil { - t.Error(err) - } -} +} \ No newline at end of file diff --git a/src/oca/go/src/goca/marketplaceapp_test.go b/src/oca/go/src/goca/marketplaceapp_test.go new file mode 100644 index 0000000000..1c1b227f24 --- /dev/null +++ b/src/oca/go/src/goca/marketplaceapp_test.go @@ -0,0 +1,84 @@ +package goca + +import ( + "testing" + "goca" + "strconv" +) + +func TestMarketplaceApp(t *testing.T){ + var mkt_app_name string = "new_mkt_app" + var mkt_app *goca.MarketPlaceApp + var mkt_app_tmpl string + var mkt_img_id uint + var market_id uint + var err error + + mkt_app_tmpl = "NAME= \"" + mkt_app_name + "\"\n" + + "TYPE=image\n" + + //Create an image + img_tmpl := "NAME = \"test_img_go" + "\"\n" + + "PATH = /etc/hosts\n" + + mkt_img_id, err = goca.CreateImage(img_tmpl, 1) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + mkt_app_tmpl += "ORIGIN_ID=" + strconv.Itoa(int(mkt_img_id)) + "\n" + + //Create a marketplace + mkt_tmpl := "NAME = \"mkt-app-test\"\n" + + "MARKET_MAD = \"http\"\n" + + "BASE_URL = \"http://url/\"\n" + + "PUBLIC_DIR = \"/var/loca/market-http\"\n" + + market_id, err = goca.CreateMarketPlace(mkt_tmpl) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + mkt_app_tmpl += "MARKETPLACE_ID=\"" + strconv.Itoa(int(market_id)) + "\"\n" + + //Create MarketplaceApp + app_id, err := goca.CreateMarketPlaceApp(mkt_app_tmpl, int(market_id)) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + mkt_app = goca.NewMarketPlaceApp(app_id) + mkt_app.Info() + + actual, _:= mkt_app.XMLResource.XPath("/MARKETPLACEAPP/NAME") + + if actual != mkt_app_name { + t.Errorf("Test failed, expected: '%s', got: '%s'", mkt_app_name, actual) + } + + //Delete MarketplaceApp + err = mkt_app.Delete() + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + //delete image + img := goca.NewImage(mkt_img_id) + err = img.Delete() + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + //delete marketplace + market := goca.NewMarketPlace(market_id) + err = market.Delete() + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } +} diff --git a/src/oca/go/src/goca/securitygroup_test.go b/src/oca/go/src/goca/securitygroup_test.go index 230e432356..df2234d5f5 100644 --- a/src/oca/go/src/goca/securitygroup_test.go +++ b/src/oca/go/src/goca/securitygroup_test.go @@ -1,149 +1,134 @@ package goca import ( - "testing" - "strings" + "testing" + "goca" ) -var sgTpl = ` -NAME = "ssh-test" -RULE = [ - PROTOCOL = "TCP", - RANGE = 22, - RULE_TYPE = "inbound" -] -RULE = [ - PROTOCOL = "TCP", - RULE_TYPE = "outbound" -] -` +func TestSGAllocate(t *testing.T){ + var sg_name string = "new_test_sg" + var sg *goca.SecurityGroup + var sg_template string = "NAME = \"" + sg_name + "\"\n" + + "DESCRIPTION = \"test security group\"\n"+ + "ATT1 = \"VAL1\"\n" + + "ATT2 = \"VAL2\"" + + //Create SG + sg_id, err := goca.CreateSecurityGroup(sg_template) -// Helper to create a Security Group -func createSecurityGroup(t *testing.T) *SecurityGroup { - id, err := CreateSecurityGroup(sgTpl) if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - // Get Security Group by ID - secgroup := NewSecurityGroup(id) + sg = goca.NewSecurityGroup(sg_id) + sg.Info() + + actual, _:= sg.XMLResource.XPath("/SECURITY_GROUP/NAME") + + if actual != sg_name { + t.Errorf("Test failed, expected: '%s', got: '%s'", sg_name, actual) + } + + tmpl := "ATT3 = \"VAL3\"" + + //Update SG + err = sg.Update(tmpl, 1) - err = secgroup.Info() if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - return secgroup -} + sg.Info() -func TestSecurityGroup(t *testing.T) { - secgroup := createSecurityGroup(t) + actual_1, _ := sg.XMLResource.XPath("/SECURITY_GROUP/TEMPLATE/ATT1") + actual_3, _ := sg.XMLResource.XPath("/SECURITY_GROUP/TEMPLATE/ATT3") + + if actual_1 != "VAL1" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "VAL1", actual_1) + } + + if actual_3 != "VAL3" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "VAL3", actual_3) + } + + clone_name := sg_name + "-cloned" + + //Clone SG + clone_id, err := sg.Clone(clone_name) - idParse, err := GetID(t, secgroup, "SECURITY_GROUP") if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - if idParse != secgroup.ID { - t.Errorf("Security Group ID does not match") + clone := goca.NewSecurityGroup(clone_id) + clone.Info() + + actual, _ = clone.XMLResource.XPath("/SECURITY_GROUP/NAME") + + if actual != clone_name { + t.Errorf("Test failed, expected: '%s', got: '%s'", clone_name, actual) } - // Get security group by Name - name, ok := secgroup.XPath("/SECURITY_GROUP/NAME") - if !ok { - t.Errorf("Could not get name") - } + clone.Delete() + + //Change permission of SG + err = sg.Chmod(1,1,1,1,1,1,1,1,1) - secgroup, err = NewSecurityGroupFromName(name) if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - err = secgroup.Info() + sg.Info() + + expected := "111111111" + actual, _ = sg.XMLResource.XPath("/SECURITY_GROUP/PERMISSIONS") + + if actual != expected { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected, actual) + } + + //Change owner of SG + err = sg.Chown(1,1) + if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - idParse, err = GetID(t, secgroup, "SECURITY_GROUP") + sg.Info() - if idParse != secgroup.ID { - t.Errorf("Security Group ID does not match") + expected_usr := "1" + expected_grp := "1" + actual_usr, _ := sg.XMLResource.XPath("/SECURITY_GROUP/UID") + actual_grp, _ := sg.XMLResource.XPath("/SECURITY_GROUP/GID") + + if actual_usr != expected_usr { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected_usr, actual_usr) } - // Change Owner to user call - err = secgroup.Chown(-1, -1) + if actual_grp != expected_grp { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected_grp, actual_grp) + } + + //Rename SG + rename := sg_name + "-renamed" + err = sg.Rename(rename) + if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } - - err = secgroup.Info() + + sg.Info() + + actual, _ = sg.XMLResource.XPath("/SECURITY_GROUP/NAME") + + if actual != rename { + t.Errorf("Test failed, expected: '%s', got: '%s'", rename, actual) + } + + //Delete SG + err = sg.Delete() + if err != nil { - t.Error(err) - } - - // Get Security Group Owner Name - uname, ok := secgroup.XPath("/SECURITY_GROUP/UNAME") - if !ok { - t.Errorf("Could not get user name") - } - - // Get Security Group owner group Name - gname, ok := secgroup.XPath("/SECURITY_GROUP/GNAME") - if !ok { - t.Errorf("Could not get group name") - } - - // Compare with caller username - caller := strings.Split(client.token, ":")[0] - if caller != uname { - t.Error("Caller user and security group owner user mismatch") - } - - group, err := GetUserGroup(t, caller) - if err != nil { - t.Error("Cannot retreive caller group") - } - - // Compare with caller group - if group != gname { - t.Error("Caller group and security group owner group mismatch") - } - - // Change Owner to oneadmin call - err = secgroup.Chown(0, 0) - if err != nil { - t.Error(err) - } - - err = secgroup.Info() - if err != nil { - t.Error(err) - } - - // Get Security Group Owner Name - uname, ok = secgroup.XPath("/SECURITY_GROUP/UNAME") - if !ok { - t.Errorf("Could not get user name") - } - - // Get Security Group Owner Name - gname, ok = secgroup.XPath("/SECURITY_GROUP/GNAME") - if !ok { - t.Errorf("Could not get user name") - } - - if "oneadmin" != uname { - t.Error("Security group owner is not oneadmin") - } - - // Compare with caller group - if "oneadmin" != gname { - t.Error("Security group owner group is not oneadmin") - } - - // Delete template - err = secgroup.Delete() - if err != nil { - t.Error(err) + t.Errorf("Test failed:\n" + err.Error()) } } diff --git a/src/oca/go/src/goca/virtualnetwork_test.go b/src/oca/go/src/goca/virtualnetwork_test.go index 1ccd32fe00..75d454e759 100644 --- a/src/oca/go/src/goca/virtualnetwork_test.go +++ b/src/oca/go/src/goca/virtualnetwork_test.go @@ -106,11 +106,11 @@ func TestVirtualNetwork(t *testing.T) { } // Change Owner to oneadmin call - err = vnet.Chown(0, 0) + err = vnet.Chown(1, 1) if err != nil { t.Error(err) } - + err = vnet.Info() if err != nil { t.Error(err) @@ -128,12 +128,12 @@ func TestVirtualNetwork(t *testing.T) { t.Errorf("Could not get user name") } - if "oneadmin" != uname { + if "serveradmin" != uname { t.Error("Virtual network owner is not oenadmin") } // Compare with caller group - if "oneadmin" != gname { + if "users" != gname { t.Error("Virtual network owner group is not oneadmin") } diff --git a/src/oca/go/src/goca/virtualrouter_test.go b/src/oca/go/src/goca/virtualrouter_test.go new file mode 100644 index 0000000000..01f096c727 --- /dev/null +++ b/src/oca/go/src/goca/virtualrouter_test.go @@ -0,0 +1,203 @@ +package goca + +import ( + "testing" + "goca" +) + + + +func TestVirtualRouter(t *testing.T){ + var vr_name string = "new_vr" + var vr *goca.VirtualRouter + var vr_template string = "NAME = \"" + vr_name + "\"\n" + + "VROUTER = YES\n" + + "ATT1 = \"VAL1\"\n" + + "ATT2 = \"VAL2\"" + + //Create VirtualRouter + vr_id, err := goca.CreateVirtualRouter(vr_template) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr = goca.NewVirtualRouter(vr_id) + vr.Info() + + actual, _:= vr.XMLResource.XPath("/VROUTER/NAME") + + if actual != vr_name { + t.Errorf("Test failed, expected: '%s', got: '%s'", vr_name, actual) + } + + tmpl := "ATT3 = \"VAL3\"" + + //Update VirtualRouter + err = vr.Update(tmpl, 1) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr.Info() + + actual_1, _ := vr.XMLResource.XPath("/VROUTER/TEMPLATE/ATT1") + actual_3, _ := vr.XMLResource.XPath("/VROUTER/TEMPLATE/ATT3") + + if actual_1 != "VAL1" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "VAL1", actual_1) + } + + if actual_3 != "VAL3" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "VAL3", actual_3) + } + + //Change permissions of VirtualRouter + err = vr.Chmod(1,1,1,1,1,1,1,1,1) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr.Info() + + expected := "111111111" + actual, _ = vr.XMLResource.XPath("/VROUTER/PERMISSIONS") + + if actual != expected { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected, actual) + } + + //Change owner of VirtualRouter + err = vr.Chown(1,1) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr.Info() + + expected_usr := "1" + expected_grp := "1" + actual_usr, _ := vr.XMLResource.XPath("/VROUTER/UID") + actual_grp, _ := vr.XMLResource.XPath("/VROUTER/GID") + + if actual_usr != expected_usr { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected_usr, actual_usr) + } + + if actual_grp != expected_grp { + t.Errorf("Test failed, expected: '%s', got: '%s'", expected_grp, actual_grp) + } + + rename := vr_name + "-renamed" + + //Rename VirtualRouter + err = vr.Rename(rename) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr.Info() + + actual, _ = vr.XMLResource.XPath("/VROUTER/NAME") + + if actual != rename { + t.Errorf("Test failed, expected: '%s', got: '%s'", rename, actual) + } + + tmpl = "NAME = vrtemplate\n"+ + "CPU = 0.1\n"+ + "VROUTER = YES\n"+ + "MEMORY = 64\n" + + tmpl_id, err := goca.CreateTemplate(tmpl) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + //Instantiate VirtualRouter + vr.Instantiate(1, int(tmpl_id), "vr_test_go", false, "") + + vm, err := goca.NewVMFromName("vr_test_go") + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vm.TerminateHard() + template := goca.NewTemplate(tmpl_id) + + template.Delete() + + vn_tmpl := "NAME = \"go-net\"\n"+ + "BRIDGE = vbr0\n" + + "VN_MAD = dummy\n" + + vnet_id, _ := goca.CreateVirtualNetwork(vn_tmpl, 0) + + nic_tmpl := "NIC = [ NETWORK=\"go-net\" ]" + + //Attach nic to VirtualRouter + err = vr.AttachNic(nic_tmpl) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr.Info() + + actual, _ = vr.XMLResource.XPath("/VROUTER/TEMPLATE/NIC/NETWORK") + + if actual != "go-net" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "go-net", actual) + } + + vnet := goca.NewVirtualNetwork(vnet_id) + vnet.Delete() + + //Detach nic from VirtualRouter + err = vr.DetachNic(0) + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + //LockAll for VirtualRouter + err = vr.LockAll() + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr.Info() + + actual, _ = vr.XMLResource.XPath("/VROUTER/LOCK/LOCKED") + if actual != "4" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "4", actual) + } + + //Unlock VirtualRouter + err = vr.Unlock() + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } + + vr.Info() + + actual, _= vr.XMLResource.XPath("/VROUTER/LOCK/LOCKED") + if actual != "" { + t.Errorf("Test failed, expected: '%s', got: '%s'", "", actual) + } + + //Delete VirtualRouter + err = vr.Delete() + + if err != nil { + t.Errorf("Test failed:\n" + err.Error()) + } +} \ No newline at end of file