You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/07/04 00:26:19 UTC

[40/50] [abbrv] git commit: updated refs/heads/vmsync to 78fa5e1

CLOUDSTACK-3184: integration test for the updateVirtualMachine

updateVirutalMachine fails if no args are passed. this test also further
verifies that the displayname is changed when vm is started up
successfully.

Signed-off-by: Prasanna Santhanam <ts...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9f0c9ee2
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9f0c9ee2
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9f0c9ee2

Branch: refs/heads/vmsync
Commit: 9f0c9ee20c1a65d427702a330798512e7297e322
Parents: 31df729
Author: Prasanna Santhanam <ts...@apache.org>
Authored: Wed Jul 3 19:38:02 2013 +0530
Committer: Prasanna Santhanam <ts...@apache.org>
Committed: Wed Jul 3 19:39:02 2013 +0530

----------------------------------------------------------------------
 test/integration/component/test_update_vm.py | 160 ++++++++++++++++++++++
 1 file changed, 160 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9f0c9ee2/test/integration/component/test_update_vm.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_update_vm.py b/test/integration/component/test_update_vm.py
new file mode 100644
index 0000000..a0fc4bf
--- /dev/null
+++ b/test/integration/component/test_update_vm.py
@@ -0,0 +1,160 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+from marvin.cloudstackTestCase import cloudstackTestCase
+from marvin.integration.lib.base import Account, VirtualMachine, ServiceOffering
+from marvin.integration.lib.utils import cleanup_resources
+from marvin.integration.lib.common import get_zone, get_domain, get_template
+from nose.plugins.attrib import attr
+
+class TestData(object):
+    """Test data object that is required to create resources
+    """
+    def __init__(self):
+        self.testdata = {
+            #data to create an account
+            "account": {
+                "email": "test@test.com",
+                "firstname": "Test",
+                "lastname": "User",
+                "username": "test",
+                "password": "password",
+            },
+            #data reqd for virtual machine creation
+            "virtual_machine" : {
+            },
+            #small service offering
+            "service_offering": {
+                "small": {
+                    "name": "Small Instance",
+                    "displaytext": "Small Instance",
+                    "cpunumber": 1,
+                    "cpuspeed": 100,
+                    "memory": 256,
+                },
+            },
+            "ostype": 'CentOS 5.3 (64-bit)',
+        }
+
+
+class TestUpdateVirtualMachine(cloudstackTestCase):
+    """Test deploy a VM into a user account
+    """
+
+    def setUp(self):
+        self.testdata = TestData().testdata
+        self.apiclient = self.testClient.getApiClient()
+
+        # Get Zone, Domain and Default Built-in template
+        self.domain = get_domain(self.apiclient, self.testdata)
+        self.zone = get_zone(self.apiclient, self.testdata)
+        self.testdata["mode"] = self.zone.networktype
+        self.template = get_template(self.apiclient, self.zone.id, self.testdata["ostype"])
+
+        #create a user account
+        self.account = Account.create(
+            self.apiclient,
+            self.testdata["account"],
+            domainid=self.domain.id
+        )
+        #create a service offering
+        self.service_offering = ServiceOffering.create(
+            self.apiclient,
+            self.testdata["service_offering"]["small"]
+        )
+        #build cleanup list
+        self.cleanup = [
+            self.service_offering,
+            self.account
+        ]
+
+    @attr(tags = ['advanced', 'simulator', 'basic', 'sg'])
+    def test_update_vm_name(self):
+        """Test Update VirtualMachine Name
+
+        # Validate the following:
+        # 1. VirtualMachine has uuid name, displayname
+        # 2. listVirtualMachines returns accurate information
+        # 3. Stop the VM
+        # 4. updateVirtualmachine no args and then new displayname
+        # 5. listVirtualMachines nad check the displayName set
+        # 6. start the VM
+        # 7. Verify displayName is still set
+        """
+        self.virtual_machine = VirtualMachine.create(
+            self.apiclient,
+            self.testdata["virtual_machine"],
+            accountid=self.account.name,
+            zoneid=self.zone.id,
+            domainid=self.account.domainid,
+            serviceofferingid=self.service_offering.id,
+            templateid=self.template.id
+        )
+
+        list_vms = VirtualMachine.list(self.apiclient, id=self.virtual_machine.id)
+        self.assertEqual(
+            isinstance(list_vms, list),
+            True,
+            "List VM response was not a valid list"
+        )
+        self.assertNotEqual(
+            len(list_vms),
+            0,
+            "List VM response was empty"
+        )
+        vm = list_vms[0]
+
+        self.debug(
+            "VirtualMachine launched with id, name, displayname: %s %s %s"\
+            % (self.virtual_machine.id, vm.name, vm.displayname)
+        )
+
+        self.assertEqual(
+            vm.state,
+            "Running",
+            msg="VM is not in Running state"
+        )
+        self.debug("Stopping VirtualMachine to update displayname")
+
+        self.virtual_machine.stop(self.apiclient)
+        #CLOUDSTACK-3184: update without args as this results in an NPE
+        self.virtual_machine.update(self.apiclient)
+
+        self.virtual_machine.update(self.apiclient, displayname='newdisplayname')
+        list_vms = VirtualMachine.list(self.apiclient, id=vm.id)
+        vmnew = list_vms[0]
+
+        self.assertNotEqual(vmnew.displayname, vm.displayname,
+            msg="displayname remained the same after updateVirtualMachine")
+        self.assertEqual(vmnew.displayname, 'newdisplayname',
+            msg="display name not updated successfully, displayname is %s" % vmnew.displayname)
+
+        self.debug("Starting VirtualMachine after updated displayname")
+        self.virtual_machine.start(self.apiclient)
+        list_vms = VirtualMachine.list(self.apiclient, id=vm.id)
+        vmnewstarted = list_vms[0]
+
+        self.assertEqual(vmnew.displayname, vmnewstarted.displayname,
+            msg="display name changed on start, displayname is %s" % vmnewstarted.displayname)
+
+    def tearDown(self):
+        try:
+           # cleanup_resources(self.apiclient, self.cleanup)
+            pass
+        except Exception as e:
+            self.debug("Warning! Exception in tearDown: %s" % e)
\ No newline at end of file