1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

development: Update Goca tests

This commit is contained in:
Christian González 2018-12-11 15:35:35 +01:00 committed by Ruben S. Montero
parent 7d46241fe2
commit 169256a928
6 changed files with 481 additions and 236 deletions

View File

@ -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")
}

View File

@ -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)
}
}
}

View File

@ -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())
}
}

View File

@ -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())
}
}

View File

@ -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")
}

View File

@ -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())
}
}