def test_conflict(self): ctx = self.mock_ctx('testconflictnic') current_ctx.set(ctx=ctx) ctx.logger.info("BEGIN conflict NIC test") ctx.logger.info("create NIC") status_code = nic.create(ctx=ctx) ctx.logger.debug("status_code = " + str(status_code) ) self.assertTrue(bool((status_code == 200) or (status_code == 201))) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic",constants.SUCCEEDED, 600) ctx.logger.info("create NIC conflict") status_code = nic.create(ctx=ctx) ctx.logger.debug("status_code =" + str(status_code) ) self.assertTrue(bool((status_code == 200) or (status_code == 201))) ctx.logger.info("delete NIC") self.assertEqual(202, nic.delete(ctx=ctx)) ctx.logger.info("check is NIC is release") try: current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic","deleting", 600) except utils.WindowsAzureError: pass ctx.logger.info("delete conflict NIC") self.assertEqual(204, nic.delete(ctx=ctx)) ctx.logger.info("END conflict NIC test")
def test_delete(self): ctx = self.mock_ctx('testdeletenic') current_ctx.set(ctx=ctx) ctx.logger.info("BEGIN delete NIC test") ctx.logger.info("create NIC") status_code = nic.create(ctx=ctx) ctx.logger.debug("status_code = " + str(status_code) ) self.assertTrue(bool((status_code == 200) or (status_code == 201))) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic",constants.SUCCEEDED, 600) ctx.logger.info("trying to delete an non-deletable nic") ctx.node.properties[constants.DELETABLE_KEY] = False current_ctx.set(ctx=ctx) self.assertEqual(0, nic.delete(ctx=ctx)) ctx.logger.info("delete NIC") ctx.node.properties[constants.DELETABLE_KEY] = True current_ctx.set(ctx=ctx) self.assertEqual(202, nic.delete(ctx=ctx)) ctx.logger.info("check is nic is release") try: current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic","deleting", 600) except utils.WindowsAzureError: pass ctx.logger.info("END delete NIC test")
def test_add_public_ip(self): ctx = self.mock_ctx('testaddpublicip') ctx.logger.info("BEGIN attach public_ip to NIC test") ctx.logger.info("create NIC") current_ctx.set(ctx=ctx) nic.create(ctx=ctx) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic", constants.SUCCEEDED, 600) ctx.logger.info("attach public_ip to NIC: {}".format(ctx.instance.runtime_properties['subnet_id'])) ctx_rel = self.mock_relationship_ctx('testaddpublicip', ctx.instance.runtime_properties['subnet_id']) current_ctx.set(ctx=ctx_rel) nic.add_public_ip(ctx=ctx_rel) current_ctx.set(ctx=ctx) utils.wait_status(ctx, "nic", constants.SUCCEEDED, 600) ctx.logger.info('Checking if Public IP is correctly set') current_ctx.set(ctx=ctx_rel) response = (connection.AzureConnectionClient().azure_get( ctx, ("subscriptions/{}" + "/resourceGroups/{}/providers/" + "microsoft.network/networkInterfaces/{}" "?api-version={}" ).format(test_utils.SUBSCRIPTION_ID, 'nic_resource_group_test' + self.__random_id, ctx.node.properties[constants.NETWORK_INTERFACE_KEY], constants.AZURE_API_VERSION_06 ) ) ).json() public_ip_id = nic.get_public_ip_id(ctx=ctx_rel) self.assertEqual(response['properties']['ipConfigurations'][ 0]['properties']['publicIPAddress']['id'], public_ip_id) ctx.logger.info("DELETING NIC") current_ctx.set(ctx=ctx) self.assertEqual(202, nic.delete(ctx=ctx)) ctx.logger.info("Check if NIC is released.") current_ctx.set(ctx=ctx) self.assertRaises(utils.WindowsAzureError, nic.get_provisioning_state, ctx=ctx ) ctx.logger.info("END add public ip NIC test")
def test_concurrent_delete_instance(self): ctx1 = self.mock_ctx('testconcurrentdelete1', id=1) ctx2 = self.mock_ctx('testconcurrentdelete2', id=2) ctx1.logger.info("BEGIN concurrent delete VM 1 test") ctx2.logger.info("BEGIN concurrent delete VM 2 test") ctx1.logger.info("CREATE nic 1") current_ctx.set(ctx=ctx1) nic.create(ctx=ctx1) current_ctx.set(ctx=ctx1) utils.wait_status(ctx1, "nic",constants.SUCCEEDED, 600) ctx2.logger.info("CREATE nic 2") current_ctx.set(ctx=ctx2) nic.create(ctx=ctx2) current_ctx.set(ctx=ctx2) utils.wait_status(ctx2, "nic",constants.SUCCEEDED, 600) ctx1.logger.info("create VM 1") instance.create(ctx=ctx1) ctx2.logger.info("create VM 2") instance.create(ctx=ctx2) ctx1.logger.info("check VM 1 status") ctx2.logger.info("check VM 2 status") status_vm1 = constants.CREATING status_vm2 = constants.CREATING while bool(status_vm1 == constants.CREATING or status_vm2 == constants.CREATING) : current_ctx.set(ctx=ctx1) status_vm1 = instance.get_provisioning_state(ctx=ctx1) current_ctx.set(ctx=ctx2) status_vm2 = instance.get_provisioning_state(ctx=ctx2) time.sleep(TIME_DELAY) ctx1.logger.info("check VM 1 creation success") self.assertEqual(constants.SUCCEEDED, status_vm1) ctx2.logger.info("check VM 2 creation success") self.assertEqual(constants.SUCCEEDED, status_vm2) def delete_vm(mokctx, queue): queue.put(instance.delete(ctx=mokctx)) queue1 = Queue.Queue() queue2 = Queue.Queue() vm1 = threading.Thread(target=delete_vm, args=(ctx1,queue1)) vm2 = threading.Thread(target=delete_vm, args=(ctx2,queue2)) ctx1.logger.info("delete VM 1") vm1.start() ctx2.logger.info("delete VM 2") vm2.start() vm1.join() vm2.join() self.assertEqual(202, queue1.get()) self.assertEqual(202, queue2.get()) current_ctx.set(ctx=ctx1) ctx1.logger.info("DELETE nic 1") nic.delete(ctx=ctx1) current_ctx.set(ctx=ctx2) ctx2.logger.info("DELETE nic 2") nic.delete(ctx=ctx2) ctx1.logger.info("END concurrent delete VM 1 test") ctx2.logger.info("END concurrent delete VM 2 test")