-
Notifications
You must be signed in to change notification settings - Fork 88
E2E tests related to default vmgroup and non-default vmgroup #1381
E2E tests related to default vmgroup and non-default vmgroup #1381
Conversation
@@ -142,3 +144,8 @@ func GetTestConfig() *TestConfig { | |||
|
|||
return config | |||
} | |||
|
|||
// GetTenantNameWithTimeStamp prepares unique tenant name by appending current time-stamp value | |||
func GetTenantNameWithTimeStamp(vmgroupName string) string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you know there is an open issue of avoid using strconv.FormatInt(time.Now().Unix(), 10)
approach and use random string instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/vmgroupbasic_test.go
Outdated
if s.config == nil { | ||
c.Skip("Unable to retrieve test config, skipping vmgroupbasic.TestVmgroupLs.") | ||
} | ||
out, err := admincli.ConfigInit(s.config.EsxHost) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Its incorrect to init and cleanup the DB for each test. The DB is a part of the system being tested. If a bunch of ops are performed on the DB we need to verify that the DB itself is sane at the end of the test. Customers aren't going to be cleaning up their DB every now and then. ConfigInit must be done either on the ESX host before the test or done once at the start of all tests.
tests/e2e/vmgroupbasic_test.go
Outdated
|
||
// Removes config init | ||
func (s *vgBasicSuite) TearDownSuite(c *C) { | ||
out, err := admincli.ConfigRemove(s.config.EsxHost) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Incorrect to remove config DB.
tests/e2e/vmgroupbasic_test.go
Outdated
} | ||
|
||
func (s *vgBasicSuite) TearDownTest(c *C) { | ||
out, err := admincli.DeleteVMgroup(s.config.EsxHost, s.tenantName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If something is done in setup-suite then undo it in teardown-suite. Unless its something to be done after each test. Is that the case here.
tests/e2e/vmgroupbasic_test.go
Outdated
func (s *vgBasicSuite) TestVmgroupLs(c *C) { | ||
misc.LogTestStart("", c.TestName()) | ||
|
||
out, err := admincli.CreateVMgroup(s.config.EsxHost, s.tenantName, s.config.DockerHostNames[0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Admin cli doesn't return errors :-( so while these checks are there for asserting nil error, its doing nothing. The CLI command could have failed and we know nothing about it. The CLI shell command itself doesn't exit with a non-zero exit status to check this.
tests/e2e/vmgroupbasic_test.go
Outdated
log.Printf("VM[%s]'s current power state is [%s]", s.config.DockerHostNames[0], properties.PoweredOnState) | ||
c.Assert(powerState, Equals, properties.PoweredOnState, Commentf("VM [%s] should be powered on state", s.config.DockerHostNames[0])) | ||
|
||
vmProcessID := esxcli.GetVMProcessID(s.config.EsxHost, s.config.DockerHostNames[0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
esxcli and govc routines are all doing the same thing - getting/setting data on ESX. May be then create an esx.go module and add functions there to GetVMPowerState(), KillVMByName(name) (will get the process ID and kill the VM), WaitVMPowerState(state), etc. I can add that or you can do this. Let me know. The misc.WaitForExpectedState() should move that esx module.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will add it.
tests/utils/admincli/vmgroupmgmt.go
Outdated
// GetVmgroupVMs - lists all the VMs of a particular vmgroup | ||
// [] Empty array is returned if no VMs exist in vmgroup | ||
func GetVmgroupVMs(esxIP, vmGroupName string) []string { | ||
log.Printf("Getting all the VMs belonging to a particular tenant [%s] \n", vmGroupName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"particular vmgroup"
tests/utils/admincli/vmgroupmgmt.go
Outdated
cmd := admincli.ListVmgroupVMs + vmGroupName + " 2>/dev/null | cut -d ' ' -f 3 " | ||
out, _ := ssh.InvokeCommand(esxIP, cmd) | ||
vmNames := strings.Fields(out) | ||
vmList := vmNames[1:len(vmNames)] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can specify vmNames[1:] meaning from index 1 till last index.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
if out == "" { | ||
return false | ||
} | ||
log.Printf("out : \n %s", out) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can remove if its only debug.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
return false | ||
} | ||
log.Printf("out : \n %s", out) | ||
return strings.Contains(out, vmgroupName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
strings.Contains can handle "" strings. Can just return strings.Contains(out, vmgroupName) at line 185
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
@@ -142,3 +144,8 @@ func GetTestConfig() *TestConfig { | |||
|
|||
return config | |||
} | |||
|
|||
// GetTenantNameWithTimeStamp prepares unique tenant name by appending current time-stamp value | |||
func GetTenantNameWithTimeStamp(vmgroupName string) string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GetVmgroupNameWithTimeStamp
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 ... GetVmgroupUniqueName
to keep consistent with others.
0de596e
to
4f28659
Compare
@ashahi1 - can this be closed ? You can reopen it when it's ready to be reviewed and merged |
4f28659
to
a54bcc6
Compare
@msterin I am done with all the changes, will be sending out the code for review later today. |
1ceec05
to
3d882a0
Compare
tests/constants/admincli/cmd.go
Outdated
|
||
// DefaultVMgroup referring name of default vmgroup | ||
DefaultVMgroup = "_DEFAULT " | ||
DefaultVMgroup = "_DEFAULT" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIK, such spaces after a const are introduced to properly construct the remote command.
If you remove such spaces, please make sure all existing test pass correctly (i.e . CI passes)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure.
tests/e2e/defaultvmgroup_test.go
Outdated
. "gopkg.in/check.v1" | ||
) | ||
|
||
const ( | ||
ErrorMsg = "This feature is not supported for vmgroup _DEFAULT." | ||
ErrorMsg = "This feature is not supported for vmgroup _DEFAULT." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which error msg? Please rename this const to be more specific. defintelu not ErrorMsg .
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed to vgErrorMsg.
tests/e2e/defaultvmgroup_test.go
Outdated
ErrorMsg = "This feature is not supported for vmgroup _DEFAULT." | ||
ErrorMsg = "This feature is not supported for vmgroup _DEFAULT." | ||
NotAvailable = "N/A" | ||
defaultVG = "defaultVG" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please rename this to defualtVGTest. it doesn't imply if this is a test var something we need to define for our test to pass.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
tests/e2e/defaultvmgroup_test.go
Outdated
esxIP string | ||
hostName string | ||
config *inputparams.TestConfig | ||
volumeName1 string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can certainly imagine more volumes coming in as a part of this part. do you mind having this a slice instead of volumeName1, volumeName2 etc. it would only create inconvenience later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
|
||
out, err := admincli.ReplaceVMFromVMgroup(s.esxIP, con.DefaultVMgroup, s.hostName) | ||
out, err := admincli.ReplaceVMFromVMgroup(s.config.EsxHost, admincliconst.DefaultVMgroup, s.config.DockerHostNames[1]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why not s.config.DockerHostNames[0] ?
Is it due to something due to env dependency? please call out in PR description so that all of us are aware about it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't get you. You are asking why I am using s.config.DockerHostNames[1]? Nothing specific, trying to replace DockerHostNames[1] and not DockerHostNames[0]
tests/e2e/defaultvmgroup_test.go
Outdated
func (s *DefaultVMGroupTestSuite) TestDeleteDefaultVmgroupAndVerify(c *C) { | ||
misc.LogTestStart(c.TestName()) | ||
s.volumeName1 = inputparams.GetUniqueVolumeName(defaultVG) | ||
s.volumeName2 = inputparams.GetUniqueVolumeName(defaultVG) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we use c.TestName() here instead of defaultVG
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
volume name becomes extremely long in that case. e.g. TestDeleteDefaultVmgroupAndVerify_volume_<Some 6-7 digit random number>
tests/e2e/defaultvmgroup_test.go
Outdated
|
||
// Create a volume - operation should fail as default vmgroup no longer exist | ||
out, err = dockercli.CreateVolume(s.config.DockerHosts[0], s.volumeName2) | ||
c.Assert(err, Not(IsNil), Commentf(out)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This check is good.
Do we also have another string that we can double check as part of out to indicate the scenario that vmgroup no longer exist.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right before this step, I am already checking if default vmgroup exists or not. I am basically listing all the vmgroup using vmgroup ls
cmd and then verifying if default vmgroup exist in there
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added additional check to verify the error message as well from vm.
tests/e2e/defaultvmgroup_test.go
Outdated
c.Assert(isVmgroupAvailable, Equals, false, Commentf("Falied to delete vmgroup %s .", admincliconst.DefaultVMgroup)) | ||
|
||
// Create a volume - operation should fail as default vmgroup no longer exist | ||
out, err = dockercli.CreateVolume(s.config.DockerHosts[0], s.volumeName2) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same steps are done for volume1 and then for volume 2.
Do you mind wrapping them in a func.
If there are more incoming test in this suite, it would be good to do this steps to do these steps as part of test setup/or not.
Feel free to make the call.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/swarm_test.go
Outdated
c.Assert(status, Equals, true, Commentf("Volume %s is still attached", s.volumeName)) | ||
|
||
log.Printf("END: swarm_test.TestDockerSwarm") | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am assuming deletion of this file was by mistake. If not; why? //CC @shaominchen
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, added the file back.
3d882a0
to
9f3cf27
Compare
0602bc6
to
aa16d47
Compare
|
||
const ( | ||
//PoweredOffState - vm powered-off | ||
PoweredOffState = "poweredOff" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have moved these 2 constants to a new file, but why the below moving file change shows "File renamed without changes."? Shouldn't we remove these VM related constants from volumeproperties.go?
BTW, the file name "volumeroperties.go" has a typo, please fix it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/defaultvmgroup_test.go
Outdated
// 6. Create _DEFAULT vmgroup with —default-datastore=_VM_DS | ||
// 7. Again create new volume - operation should succedd | ||
// 8. Verify volume from esx and docker host | ||
func (s *DefaultVMGroupTestSuite) TestDeleteDefaultVmgroupAndVerify(c *C) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The suffix "AndVerify" seems redundant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/defaultvmgroup_test.go
Outdated
} | ||
|
||
// Create volumes | ||
func (s *DefaultVMGroupTestSuite) createVolume(c *C, hostIp, volumeName string) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd suggest avoid passing *C to private functions. A private function should just take care of one specific task (for code reuse or whatever purpose), and return a result (e.g. string, boolean, error, etc.) that can be verified by the main test workflow using c.Assert().
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
0b142ef
to
f2a84f0
Compare
tests/constants/admincli/cmd.go
Outdated
VMlist = " --vm-list=" | ||
|
||
// AddDatastoreToVMgroup adds datastore to vmgroup | ||
AddDatastoreToVMgroup = vmdkopsAdmin + "vmgroup access add --name=" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AddDatastoreToVMgroup
sounds confusing .. I guess idea is to add datastore access to VMgroup. .. it can be simplified with name AddDatastoreAccess
or AssignDatastoreAccess
tests/e2e/defaultvmgroup_test.go
Outdated
. "gopkg.in/check.v1" | ||
) | ||
|
||
const ( | ||
ErrorMsg = "This feature is not supported for vmgroup _DEFAULT." | ||
vgErrorMsg = "This feature is not supported for vmgroup _DEFAULT." | ||
NotAvailable = "N/A" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this required to be exported constant?
@@ -143,3 +144,12 @@ func GetTestConfig() *TestConfig { | |||
|
|||
return config | |||
} | |||
|
|||
// GetRandomNumber returns random number | |||
func GetRandomNumber() string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no need to be exported member .. getRandomNumber
is sufficient.
// VerifyVDVSIsRunning - finds out if vDVS is running. This util can be useful | ||
// in scenarios where vm is powered-on and user wants to find out if | ||
// vm is fully up to be able to run docker volume commands. | ||
func VerifyVDVSIsRunning(ip string) bool { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
volumelifecycle.go is not a better home to host this util .. Please move to appropriate file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Created a separate file named vDVSUtil.go under tests/utils/verification/
func VerifyVDVSIsRunning(ip string) bool { | ||
log.Printf("Verifying if vDVS is running on vm : %s", ip) | ||
maxAttempt := 20 | ||
waitTime := 5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor: let's reduce this to 2 or 3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
} | ||
|
||
// DeleteVMgroup method deletes a vmgroup and removes its volumes as well | ||
func DeleteVMgroup(ip, name string) (string, error) { | ||
log.Printf("Deleting a vmgroup [%s] on esx [%s]\n", name, ip) | ||
return ssh.InvokeCommand(ip, admincli.RemoveVMgroup+name+admincli.RemoveVolumes) | ||
return ssh.InvokeCommand(ip, admincli.RemoveVMgroup+name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is the reason behind this change?
tests/utils/admincli/vmgroupmgmt.go
Outdated
} | ||
|
||
// AddCreateAccessForVMgroup - set allow-create access on the vmgroup | ||
func AddCreateAccessForVMgroup(ip, name, datastore string) (string, error) { | ||
log.Printf("Enabling create access for vmgroup %s, datastore %s on esx [%s] \n", name, datastore, ip) | ||
return ssh.InvokeCommand(ip, admincli.SetAccessForVMgroup + name + " --allow-create True --datastore " + datastore) | ||
|
||
// Following two lines are only for debugging purposes - will remove before final merge |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor: I guess CI is passed and this debug lines should be removed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
@@ -84,3 +91,56 @@ func ConfigRemove(ip string) (string, error) { | |||
log.Printf("Removing the SingleNode Config DB on esx [%s] \n", ip) | |||
return ssh.InvokeCommand(ip, admincli.RemoveLocalConfigDb) | |||
} | |||
|
|||
// CheckVmgroupAvailability - checks for a vmgroup in list of vmgroups | |||
func CheckVmgroupAvailability(esxIP, vmgroupName string) bool { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CheckVmgroupAvailability
should be renamed to IsVMgroupPresent/Exist
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
} | ||
|
||
// CheckVolumeExistInVmgroup - verify volume's vmgroup is same as expected | ||
func CheckVolumeExistInVmgroup(esxIP, volName, vmgroupName string) bool { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor: CheckVolumeExistInVmgroup
=> IsVolumeExistInVmgroup
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
log.Printf("Getting vmgroup %s access rights to datastore %s , on esx [%s] \n", name, datastore, ip) | ||
cmd := admincli.GetAccessForVMgroup + name + " 2>/dev/null | awk -v OFS='\t' '{print $1, $2}' | grep " + datastore | ||
out, _ := ssh.InvokeCommand(ip, cmd) | ||
accessRights := strings.Fields(out) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't we have to check out
is not empty? What happens when datastore access rule is not set for the vmgroup?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
cmd := admincli.CreateVMgroup + admincli.DefaultVMgroup + " --default-datastore " + admincli.VMHomeDatastore | ||
_, err := ssh.InvokeCommand(ip, cmd) | ||
if err != nil { | ||
return false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to add logging statement here like Error occurred while creating _DEFAULT
vm group
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
if err != nil { | ||
return false | ||
} | ||
_, err = ssh.InvokeCommand(ip, admincli.AddDatastoreToVMgroup+admincli.DefaultVMgroup+" --datastore=_ALL_DS --allow-create ") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same as above ... is err field reliable?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/utils/admincli/vmgroupmgmt.go
Outdated
} | ||
_, err = ssh.InvokeCommand(ip, admincli.AddDatastoreToVMgroup+admincli.DefaultVMgroup+" --datastore=_ALL_DS --allow-create ") | ||
if err != nil { | ||
return false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor: need logging statement for better triaging.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/defaultvmgroup_test.go
Outdated
// 4. Verify docker volume ls does not show any volumes | ||
// 5. Verify admin cli shows volume with VMGroup set as N/A | ||
// 6. Create _DEFAULT vmgroup with —default-datastore=_VM_DS | ||
// 7. Again create new volume - operation should succedd |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: need to fix succedd
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/defaultvmgroup_test.go
Outdated
NoVgErrorMsg := "VolumeDriver.Create: VM " + s.config.DockerHostNames[0] + " does not belong to any vmgroup" | ||
|
||
// Create a volume | ||
out, err := dockercli.CreateVolume(s.config.DockerHosts[0], s.volumeNames[0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how about adding a check that only _default vmgroup is present?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
out, err = dockercli.CreateVolume(s.config.DockerHosts[0], s.volumeNames[1]) | ||
c.Assert(err, IsNil, Commentf(out)) | ||
|
||
// Check if volume was successfully created |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to add one more check here .. after recreation of default vmgroup .. previously created volume (L#136) should be available.
Note: comment is for L#146 in fact immediately after creating _default vmgroup.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is having too many changes and making reviewer's life harder.
By taking this PR as an example, I would suggest to break this down in the future.
tests/e2e/defaultvmgroup_test.go
Outdated
c.Assert(isAvailable, Equals, true, Commentf("Volume %s is not available after creation", s.volumeNames[1])) | ||
|
||
// Verify if volume exists in default vmgroup | ||
isVolInVmgroup = admincli.CheckVolumeExistInVmgroup(s.config.EsxHost, s.volumeNames[1], admincliconst.DefaultVMgroup) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is better to check about both volumes are exist and having _DEFAULT
under vmgroup column and not N/A
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/vmgroupbasic_test.go
Outdated
|
||
const ( | ||
vmGroupName = "vg_basictest" | ||
NotApplicable = "N/A" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seen this again .. it is better to move to admincli const file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/vmgroupbasic_test.go
Outdated
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
// This test suite tries to verify if vmgroup ls command works fine even after tenant's vm is killed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this information is not sufficient ... current file is holding 4 tests .. it is better to have some general comments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/vmgroupbasic_test.go
Outdated
misc.LogTestStart(c.TestName()) | ||
|
||
// Create a vmgroup and add vm to it | ||
log.Printf("Created a vm with default ds: %s", s.config.Datastores[0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Created a vm with default ds
? need to fix here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
tests/e2e/vmgroupbasic_test.go
Outdated
|
||
// Remove the create privilege on the non-default vmgroup for specified datastore | ||
admincli.RemoveCreateAccessForVMgroup(s.config.EsxHost, vmGroupName, s.config.Datastores[1]) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
need to make sure .. access is revoked.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
f2a84f0
to
78c31bf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Minor comments. Good to merge then
tests/e2e/vmgroupbasic_test.go
Outdated
|
||
func (s *vgBasicSuite) SetUpTest(c *C) { | ||
// Creating non-default vmgroup only if it does not exists | ||
if !admincli.IsVmgroupPresent(s.config.EsxHost, vmGroupName) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
too nested. just return if Vmgroup is present.
If not then execute steps to create it. No need for nesting.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed it.
tests/e2e/vmgroupbasic_test.go
Outdated
c.Assert(isVmgroupAvailable, Equals, false, Commentf("Failed to delete the vmgroup [%s] .", vmGroupName)) | ||
|
||
// Removing the DB at the end of suite | ||
admincli.ConfigRemove(s.config.EsxHost) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
check if this is successful.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a new util that gets the current config mode from esx
tests/utils/admincli/vmgroupmgmt.go
Outdated
func DeleteVMgroup(ip, name string) (string, error) { | ||
log.Printf("Deleting a vmgroup [%s] on esx [%s]\n", name, ip) | ||
return ssh.InvokeCommand(ip, admincli.RemoveVMgroup+name) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: no need of empty line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks good.
tests/e2e/defaultvmgroup_test.go
Outdated
misc.LogTestEnd(c.TestName()) | ||
} | ||
|
||
func (s *DefaultVMGroupTestSuite) isVolumeInVmgroup(esxIP string, volumeNames []string) bool { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't really need a receiver here. I'd suggest to remove the receiver so that we can move this private function to common util whenever needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed it.
tests/e2e/vmgroupbasic_test.go
Outdated
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
// This test suite contains tests to verify behaviors of non-default vmgroup |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we please clarify the difference between vmgroupbasic_test and vmgroup_test? If necessary, we should update the comments in existing vmgroup_test as well to make sure the intentions of these two test groups are clear.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As discussed offline, added a statement to existing vmgroup_test and renamed my test file to vmgroupmisc_test
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
tests/constants/admincli/cmd.go
Outdated
@@ -56,14 +56,17 @@ const ( | |||
GetAccessForVMgroup = vmdkopsAdmin + "vmgroup access ls --name " | |||
|
|||
// ListVMgroups list vm groups | |||
ListVMgroups = vmdkopsAdmin + "vmgroup ls" | |||
ListVMgroups = vmdkopsAdmin + "vmgroup ls " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor: do we really need "vmgroup ls " .. extra spacing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please make sure you have addressed all open comments.
tests/utils/verification/vDVSUtil.go
Outdated
return true | ||
} | ||
} | ||
log.Printf("Timed out to poll status\n") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: need to fix timeout status
tests/utils/verification/vDVSUtil.go
Outdated
// VerifyVDVSIsRunning - finds out if vDVS is running. This util can be useful | ||
// in scenarios where vm is powered-on and user wants to find out if | ||
// vm is fully up to be able to run docker volume commands. | ||
func VerifyVDVSIsRunning(ip string) bool { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
VerifyVDVSIsRunning
=>IsVDVSRunning
@@ -242,3 +242,22 @@ func GetVolumeProperties(volumeName, hostName string) (string, error) { | |||
cmd := dockercli.InspectVolume + volumeName + " --format ' {{index .Status.capacity.size}} {{index .Status.diskformat}} {{index .Status \"attached to VM\"}}' | sed -e 's/<no value>/detached/' " | |||
return ssh.InvokeCommand(hostName, cmd) | |||
} | |||
|
|||
// VerifyVDVSIsRunning - finds out if vDVS is running. This util can be useful |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this method should be removed ... you may want to fix the diff.
@ashahi1 Can you please add issue# here? Which issue current PR is addressing? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to review the remaining functions for the vmgroup tests.
We are now having three vmgroup test files, vmgroup, default and misc - please look at combining at least into two (default and misc)
tests/constants/admincli/cmd.go
Outdated
AddDatastoreAccess = vmdkopsAdmin + "vmgroup access add --name=" | ||
|
||
// NotApplicable or NotAvailable | ||
NotApplicable = "N/A" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wow! :-)) this is really not needed, constants should be for whats really usable across tests in different files. And this is something that simply can be used as "N/A" there's no need for a global for this sort of strings or ",", ".", etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that's how I had done initially - made it local to test. And then I was asked to put it into separate constant file. Now again bring it back to local test. Gosh!!
tests/constants/admincli/vmdkops.go
Outdated
@@ -31,4 +31,10 @@ const ( | |||
|
|||
// StartService starts vmdkops service | |||
StartService = vmdkopsd + "start" | |||
|
|||
// DBNotConfigured - DB mode not configured | |||
DBNotConfigured = "NotConfigured" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above just use a constant in the relevant test file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be used by cross-esx tests when we start automating them. I will keep it here.
tests/e2e/defaultvmgroup_test.go
Outdated
|
||
// Verify if volume exists in default vmgroup | ||
isVolInVmgroup := admincli.IsVolumeExistInVmgroup(s.config.EsxHost, s.volumeNames[0], admincliconst.DefaultVMgroup) | ||
c.Assert(isVolInVmgroup, Equals, true, Commentf("Volume [%s] does not belong to vmgroup [%s]", s.volumeNames[0], admincliconst.DefaultVMgroup)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this check and the above one can't be combined then please make a issue to have verification.CheckVolume() which will check against a bunch of volume properties. No need to have multiple checks on the same volume. I remember you wrote code to get a map of volume properties.
Can't that be used to make one check for group membership. Being able to get the volume properties itself shows the volume exits.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will create a separate issue for this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Issue #1470
tests/e2e/defaultvmgroup_test.go
Outdated
|
||
// Check volumes now again belong to default vmgroup | ||
c.Assert(isVolumeInVmgroup(s.config.EsxHost, s.volumeNames), Equals, true, Commentf("Volume [%s] does not belong to vmgroup [%s]", s.volumeNames, admincliconst.DefaultVMgroup)) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above, the test function is more or less lengthy with repeat checks which is needed but can be a single function call to do these - verification.CheckVolume() which checks all specified properties vs. a call per check. Assertions can be done in CheckVolume() itself.
tests/e2e/defaultvmgroup_test.go
Outdated
if !isVolInVmgroup { | ||
return false | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like we can move this into verification pkg into verification.CheckVolume() as mentioned above - seems like a common verification other tests can use.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 .. yeah I was thinking on the same note too.
tests/e2e/vmgroupmisc_test.go
Outdated
|
||
// Verify vm belongs to vmgroup | ||
isVMPartofVg := admincli.IsVMInVmgroup(s.config.EsxHost, s.config.DockerHostNames[0], vmGroupName) | ||
c.Assert(isVMPartofVg, Equals, true, Commentf("VM %s does not belong to vmgroup %s .", s.config.DockerHostNames[0], vmGroupName)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or just add the VM always and ignore any error?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@govint I think verification is needed here cause if test fails because of vm not being there then we will have hard finding the actual issue. So it's better to have different verifications to save our time during debugging.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pls. see comment above, we may not need this function if none of the tests are going to remove the VM from the vmgroup. If they did then this logic to check for vmgroup present and exit won;t work. If no test is removing the VM from the vmgroup then why this function to check and exit for every test, its unnecessary.
tests/e2e/vmgroupmisc_test.go
Outdated
|
||
// Verifying DB successfully removed | ||
c.Assert(admincli.GetDBmode(s.config.EsxHost), Equals, admincliconst.DBNotConfigured, Commentf("Failed to remove the DB mode on ESX - .", s.config.EsxHost)) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thats my point about setup and teardown test functions, its almost yet another test done for each and every test.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we skip these verifications in the setup/teardown functions. Because what you are doing here should be in a vmgroup create, add VM to vmgroup, create/delete config test.
Lets make these tests simpleer code and remove unnecessary verifications. Keep verifications only in the actual test functions. Asserting error here is sufficient.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Again, I was asked to verify if DB mode is as expected. Hence I added this check. We just go back and forth and delay the check-in.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And how do we decide which is necessary and which ones are unnecessary verifications? Do we really know where tests can fail? What if there was some issue with step 1 but test failed at step 4's verification. We will spend more time debugging because we think Step 4 failed whereas actually the issue was with Step 1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd suggest the setup and tear down code (especially the test setup/teardown functions) really don;'t need verifications. Those are items to be done as tests and the setup and tear down can limit to asserting function return values alone. Verification should be just in the test functions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/cc @shuklanirdesh82
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have already ran into an issue because clean-up was not verified. #1448 (comment)
tests/e2e/vmgroupmisc_test.go
Outdated
|
||
// Verify if volume exists in vmgroup | ||
isVolInVmgroup := admincli.IsVolumeExistInVmgroup(s.config.EsxHost, s.volumeNames[0], vmGroupName) | ||
c.Assert(isVolInVmgroup, Equals, true, Commentf("Volume [%s] does not belong to vmgroup [%s]", s.volumeNames[0], vmGroupName)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, one verification.CheckVolume() should reduce code every where.
tests/e2e/vmgroupmisc_test.go
Outdated
c.Assert(isVmgroupAvailable, Equals, false, Commentf("Failed to delete the vmgroup [%s] .", vmGroupName)) | ||
|
||
// Verify vmgroup for volume is N/A | ||
isVolInVmgroup = admincli.IsVolumeExistInVmgroup(s.config.EsxHost, s.volumeNames[0], admincliconst.NotApplicable) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
using "N/A" is fine here or make it a local global string like
NullGroup = "N/A" using NotApplicable doesn't seem correct.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
General comment - I had made it local only and then I was asked to put in a constant file in separate review. Now I have to again put it back to local. No wonder reviews take longer. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fully agree, that keeps happening. But as code author I'd suggest you going over review comments and figuring out exactly whats really needed vs. good to have or specific code style. And only then making changes based on your judgement.
In this case a function like IsVolumeExistingInVmgroup() should get a vmgroup name always and hence a special case like NotApplicable doesn't seem correct. When we define an API, the params have a meaning and the values passed should reflect that. So defining a constant for a NullVmgroup as N/A and using that keeps the code understandable. And if no one else needs a NullVmgroup in their tests lets keep it locally. Thats the reasoning behind doing it this way.
tests/e2e/vmgroupmisc_test.go
Outdated
c.Assert(isVolInVmgroup, Equals, true, Commentf("Unexpected Behavior: Vmgroup [%s] for volume [%s] is not N/A. ", s.volumeNames[0], vmGroupName)) | ||
|
||
// Delete the orphaned volume which does not belong to any vmgroup | ||
admincli.DeleteOrphanedVolume(s.config.EsxHost, s.volumeNames[0], vmGroupName, s.config.Datastores[0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this function needed? Why pass vmgroup, volume isn't in the group anymore and vmgroup is already deleted. Lets just use DeleteVolume instead?
It should be possible to delete a volume irrespective of where it is. Make a bug issue to have that supported or make --remove-volumes the default behavior whether user specifies --remove-volumes or not. There is no point allowing volumes to get orphaned and then not be able to delete them (if thats the case really, can you confirm).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, we are not able to delete volumes for which there are no vmgroups - N/A. I will file an issue for it. Wrote this util to not pollute our test setup else we will have left-over volumes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks and this is a good find.
The tests should never create or use any method except whats advertised, documented as the way to handle the scenario. If a method doesn't exist then the test must not create one and instead that should become an issue.
dec6cc3
to
23d3000
Compare
tests/e2e/vmgroupmisc_test.go
Outdated
admincli.RemoveVMFromVMgroup(s.config.EsxHost, vmGroupName, s.config.DockerHostNames[0]) | ||
|
||
// Verify vm does not belongs to vmgroup | ||
isVMPartofVg := admincli.IsVMInVmgroup(s.config.EsxHost, s.config.DockerHostNames[0], vmGroupName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit - this verification isn't needed because setupTest() has placed the VM in the group and the tests aren't removing the VM from the group is that right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am removing the vm from vmgroup so I am just making sure removal was successful.
tests/e2e/vmgroupmisc_test.go
Outdated
// Creating non-default vmgroup only if it does not exists | ||
if admincli.IsVmgroupPresent(s.config.EsxHost, vmGroupName) { | ||
return | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In which case is this code needed in the setupTest() at all. Say for the first test we add the VM to the VMGroup thereafter do we need to keep checking for every test? If none of the tests are moving the VM out of this VMGroup then there is no need for a setupTest() to keep checking and exiting for every test.
tests/e2e/vmgroupmisc_test.go
Outdated
|
||
// Verify vm belongs to vmgroup | ||
isVMPartofVg := admincli.IsVMInVmgroup(s.config.EsxHost, s.config.DockerHostNames[0], vmGroupName) | ||
c.Assert(isVMPartofVg, Equals, true, Commentf("VM %s does not belong to vmgroup %s .", s.config.DockerHostNames[0], vmGroupName)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pls. see comment above, we may not need this function if none of the tests are going to remove the VM from the vmgroup. If they did then this logic to check for vmgroup present and exit won;t work. If no test is removing the VM from the vmgroup then why this function to check and exit for every test, its unnecessary.
tests/e2e/vmgroupmisc_test.go
Outdated
isAvailable = verification.CheckVolumeAvailability(s.config.DockerHosts[0], s.volumeNames[0]) | ||
c.Assert(isAvailable, Equals, false, Commentf("Unexpected Behavior: Orphaned volume %s "+ | ||
"is visible from host [%s] ", s.volumeNames[0], s.config.DockerHosts[0])) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd suggest skipping this test till these kind of volumes can be handled correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK. Will do it.
tests/e2e/vmgroupmisc_test.go
Outdated
c.Assert(isStatusChanged, Equals, true, Commentf("Failed to power-on the VM [%s]", s.config.DockerHostNames[0])) | ||
|
||
// Verify vDVS successfully started | ||
isVDVSRunning := verification.IsVDVSIsRunning(s.config.DockerHosts[0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it should be like vdvs is available meaning he plugin is able to accept requests vs. running. But not for this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pls.check tje coments provided and handle those.
be0210f
to
fc30072
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Let the CI pass.
As you have created separate PR #1478 for some of the tests, please update the description of this PR.
fc30072
to
d68050d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for keeping patience and addressing all review comments.
Fixes: #1486 and #1477
This PR fixes following issues:
TestDeleteDefaultVmgroup has already been reviewed.
Fixing test cleanup is the new change in the current commit. Please review it.
=============================
Test: TestDeleteDefaultVmgroup