diff --git a/test/integration/smoke/test_global_settings.py b/test/integration/smoke/test_global_settings.py index be501b956d2..12b35d774b7 100644 --- a/test/integration/smoke/test_global_settings.py +++ b/test/integration/smoke/test_global_settings.py @@ -17,40 +17,25 @@ """ P1 tests for updating the granular Configuration parameter with scope and resource id provided. """ #Import Local Modules -import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from marvin.remoteSSHClient import remoteSSHClient from marvin.integration.lib.utils import * from marvin.integration.lib.base import * from marvin.integration.lib.common import * -from nose.plugins.attrib import attr #Import System modules -import unittest -import hashlib -import random class TestUpdateConfigWithScope(cloudstackTestCase): """ - This test updates the value of a configuration parameter - which is at zone level(scope) + Test to update a configuration (global setting) at various scopes """ def setUp(self): - """ - CloudStack internally saves its passwords in md5 form and that is how we - specify it in the API. Python's hashlib library helps us to quickly hash - strings as follows - """ - mdf = hashlib.md5() - mdf.update('password') - mdf_pass = mdf.hexdigest() - - self.apiClient = self.testClient.getApiClient() #Get ourselves an API client - - + self.apiClient = self.testClient.getApiClient() def test_UpdateConfigParamWithScope(self): - + """ + test update configuration setting at zone level scope + @return: + """ updateConfigurationCmd = updateConfiguration.updateConfigurationCmd() updateConfigurationCmd.name = "use.external.dns" updateConfigurationCmd.value = "true" @@ -70,13 +55,15 @@ class TestUpdateConfigWithScope(cloudstackTestCase): returns a non-empty response") configParam = listConfigurationsResponse[0] - self.assertEqual(configParam.value, updateConfigurationResponse.value, "Check if the update API returned \ is the same as the one we got in the list API") def tearDown(self): - + """ + Reset the configuration back to false + @return: + """ updateConfigurationCmd = updateConfiguration.updateConfigurationCmd() updateConfigurationCmd.name = "use.external.dns" updateConfigurationCmd.value = "false" diff --git a/test/integration/smoke/test_non_contigiousvlan.py b/test/integration/smoke/test_non_contigiousvlan.py index fe70f874f75..91b6325782c 100644 --- a/test/integration/smoke/test_non_contigiousvlan.py +++ b/test/integration/smoke/test_non_contigiousvlan.py @@ -14,112 +14,73 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -""" BVT tests for Primary Storage -""" -import marvin + from marvin import cloudstackTestCase -from marvin.cloudstackTestCase import * +from marvin.cloudstackAPI import * +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.integration.lib.base import Account +from marvin.integration.lib.base import PhysicalNetwork +from nose.plugins.attrib import attr -import unittest -import hashlib -import random +class Services(): + def __init__(self): + self.services = { + "vlan": { + "part": ["4090-4091", "4092-4096"], + "full": "4090-4096", + } + } +@attr(tags = ["simulator", "advanced"]) class TestUpdatePhysicalNetwork(cloudstackTestCase): """ - This test updates the existing physicalnetwork with a new vlan range. + Test to extend physical network vlan range """ def setUp(self): + self.vlan = Services().services["vlan"] + self.apiClient = self.testClient.getApiClient() + + + def test_extendPhysicalNetworkVlan(self): """ - CloudStack internally saves its passwords in md5 form and that is how we - specify it in the API. Python's hashlib library helps us to quickly hash - strings as follows + Test to update a physical network and extend its vlan """ - mdf = hashlib.md5() - mdf.update('password') - mdf_pass = mdf.hexdigest() + phy_networks = PhysicalNetwork.list(self.apiClient) + self.assertNotEqual(len(phy_networks), 0, + msg="There are no physical networks in the zone") - self.apiClient = self.testClient.getApiClient() #Get ourselves an API client + self.network = phy_networks[0] + self.networkid = phy_networks[0].id + vlan1 = self.vlan["part"][0] + updatePhysicalNetworkResponse = self.network.update(self.apiClient, id = self.networkid, vlan = vlan1) + self.assert_(updatePhysicalNetworkResponse is not None, + msg="couldn't extend the physical network with vlan %s"%vlan1) + self.assert_(isinstance(self.network, PhysicalNetwork)) - self.acct = createAccount.createAccountCmd() #The createAccount command - self.acct.accounttype = 0 #We need a regular user. admins have accounttype=1 - self.acct.firstname = 'bharat' - self.acct.lastname = 'kumar' #What's up doc? - self.acct.password = mdf_pass #The md5 hashed password string - self.acct.username = 'bharat' - self.acct.email = 'bharat@kumar.com' - self.acct.account = 'bharat' - self.acct.domainid = 1 #The default ROOT domain - self.acctResponse = self.apiClient.createAccount(self.acct) - # using the default debug logger of the test framework - self.debug("successfully created account: %s, user: %s, id: \ - %s"%(self.acctResponse.account.account, \ - self.acctResponse.account.username, \ - self.acctResponse.account.id)) + vlan2 = self.vlan["part"][1] + updatePhysicalNetworkResponse2 = self.network.update(self.apiClient, id = self.networkid, vlan = vlan2) + self.assert_(updatePhysicalNetworkResponse2 is not None, + msg="couldn't extend the physical network with vlan %s"%vlan2) + self.assert_(isinstance(self.network, PhysicalNetwork)) - def test_UpdatePhysicalNetwork(self): + vlanranges= updatePhysicalNetworkResponse2.vlan + self.assert_(vlanranges is not None, + "No VLAN ranges found on the deployment") + self.assert_(vlanranges.find(self.vlan["full"]) > 0, "vlan ranges are not extended") + + + def tearDown(self): """ - Let's start by defining the attributes of our VM that we will be - deploying on CloudStack. We will be assuming a single zone is available - and is configured and all templates are Ready - - The hardcoded values are used only for brevity. + Teardown to update a physical network and shrink its vlan + @return: """ - listPhysicalNetworksCmd = listPhysicalNetworks.listPhysicalNetworksCmd() - listPhysicalNetworksResponse = self.apiClient.listPhysicalNetworks(listPhysicalNetworksCmd) - - self.assertNotEqual(len(listPhysicalNetworksResponse), 0, "Check if the list API \ - returns a non-empty response") - - networkid = listPhysicalNetworksResponse[0].id - updatePhysicalNetworkCmd = updatePhysicalNetwork.updatePhysicalNetworkCmd() - updatePhysicalNetworkCmd.id = networkid - updatePhysicalNetworkCmd.vlan = "4090-4091" - updatePhysicalNetworkResponse = self.apiClient.updatePhysicalNetwork(updatePhysicalNetworkCmd) - self.assertNotEqual((updatePhysicalNetworkResponse.len), 0, "Check if the list API \ - returns a non-empty response") - - updatePhysicalNetworkCmd = updatePhysicalNetwork.updatePhysicalNetworkCmd() - updatePhysicalNetworkCmd.id = networkid - updatePhysicalNetworkCmd.vlan = "4092-4096" - updatePhysicalNetworkResponse = self.apiClient.updatePhysicalNetwork(updatePhysicalNetworkCmd) - self.assertNotEqual((updatePhysicalNetworkResponse.len), 0, "Check if the list API \ - returns a non-empty response") - - vlanranges= updatePhysicalNetworkResponse.vlan - range = "" - vlanranges = vlanranges.split(";") - for vlan in vlanranges: - if (vlan == "4090-4096"): - range = vlan - - self.assertEqual(range, "4090-4096", "check if adding the range is successful") - - updatePhysicalNetworkCmd = updatePhysicalNetwork.updatePhysicalNetworkCmd() - updatePhysicalNetworkCmd.id = networkid - updatePhysicalNetworkCmd.removevlan = "4090-4096" - updatePhysicalNetworkResponse = self.apiClient.updatePhysicalNetwork(updatePhysicalNetworkCmd) - self.assertNotEqual((updatePhysicalNetworkResponse.len), 0, "Check if the list API \ - returns a non-empty response") - - vlanranges= updatePhysicalNetworkResponse.vlan - range = "" - vlanranges = vlanranges.split(";") - - for vlan in vlanranges: - if (vlan == "4090-4096"): - range = vlan - - - self.assertEqual(range, "", "check if removing the range is successful") - - - def tearDown(self): # Teardown will delete the Account as well as the VM once the VM reaches "Running" state - """ - And finally let us cleanup the resources we created by deleting the - account. All good unittests are atomic and rerunnable this way - """ - deleteAcct = deleteAccount.deleteAccountCmd() - deleteAcct.id = self.acctResponse.account.id - self.apiClient.deleteAccount(deleteAcct) + phy_networks = PhysicalNetwork.list(self.apiClient) + self.assertNotEqual(len(phy_networks), 0, + msg="There are no physical networks in the zone") + self.network = phy_networks[0] + self.networkid = phy_networks[0].id + updateResponse = self.network.update(self.apiClient, id = self.networkid, removevlan = self.vlan["full"]) + self.assert_(updateResponse.vlan.find(self.vlan["full"]) > 0, + "VLAN was not removed successfully") diff --git a/tools/marvin/marvin/integration/lib/base.py b/tools/marvin/marvin/integration/lib/base.py index 915d4783a12..92cdf81fa91 100755 --- a/tools/marvin/marvin/integration/lib/base.py +++ b/tools/marvin/marvin/integration/lib/base.py @@ -1994,7 +1994,7 @@ class PhysicalNetwork: cmd = listPhysicalNetworks.listPhysicalNetworksCmd() [setattr(cmd, k, v) for k, v in kwargs.items()] - return(apiclient.listPhysicalNetworks(cmd)) + return map(lambda pn : PhysicalNetwork(pn.__dict__), apiclient.listPhysicalNetworks(cmd)) class SecurityGroup: """Manage Security Groups"""