skyline/docs/zh/test/3-4-E2E-resource-operation.md
zhuyue bd501ba416 fix: Fix for docs link address
fix for docs link address

Change-Id: I8539ba5a546621e543b2c4c83066489b98e308c5
2021-08-27 17:28:20 +08:00

276 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

简体中文 | [English](../../en/test/3-4-E2E-resource-operation.md)
在E2E的过程中创建资源的时候往往需要先创建关联资源而删除资源后也需要删除掉相关资源所以以完整创建/删除为原则,封装了对相关资源的操作。
- `createInstance`
- 创建云主机,并等待云主机变为`运行中`状态
- 参数`name`,云主机的名称
- 参数`networkName`,云主机创建时选择的网络名称
- 以浮动IP关联云主机`test/e2e/integration/pages/network/floatingip.spec.js`为例
- 为了能成功关联云主机,需要满足云主机网卡所在的子网所连接的路由器开启了公网网关
1. 创建带有子网的网络`networkName`
2. 创建开启了公网网关并连接网络`networkName`子网的路由器`routerName`
3. 创建挂载了网络`networkName`上的网卡的云主机`instanceName`
```javascript
it('successfully prepair resource', () => {
cy.createNetwork({ name: networkName });
cy.createRouter({ name: routerName, network: networkName });
cy.createInstance({ name: instanceName, networkName });
});
```
- `createNetwork`
- 创建网络,该网络带有一个子网
- 参数`name`,网络的名称
- 参数`networkName`,云主机创建时选择的网络名称
- 以路由器连接子网为例`test/e2e/integration/pages/network/router.spec.js`为例
- 创建了名称为`networkName`的网络,为连接子网做准备
```javascript
it('successfully prepair resource', () => {
cy.createNetwork({ name: networkName });
});
```
- `createNetworkPolicy`
- 创建网络QoS策略
- 参数`name`,策略的名称
- 以虚拟网卡修改QoS为例`test/e2e/integration/pages/network/virtual-adapter.spec.js`为例
- 创建了名称为`policyName`的策略为修改QoS做准备
```javascript
it('successfully prepair resource by admin', () => {
cy.loginAdmin().wait(5000).createNetworkPolicy({ name: policyName });
});
```
- `createRouter`
- 创建开启了公网网关的路由器
- 参数`name`,路由器的名称
- 参数`network`
- 若设置,则路由器会连接`network`网络的子网
- 以浮动IP关联云主机`test/e2e/integration/pages/network/floatingip.spec.js`为例
- 为了能成功关联云主机,需要满足云主机网卡所在的子网所连接的路由器开启了公网网关
1. 创建带有子网的网络`networkName`
2. 创建开启了公网网关并连接网络`networkName`子网的路由器`routerName`
3. 创建挂载了网络`networkName`上的网卡的云主机`instanceName`
```javascript
it('successfully prepair resource', () => {
cy.createNetwork({ name: networkName });
cy.createRouter({ name: routerName, network: networkName });
cy.createInstance({ name: instanceName, networkName });
});
```
- `deleteRouter`
- 删除路由器,会断开路由器的子网,关闭路由器的公网网关,最终成功删除路由器
- 参数`network`
- 若设置,则需要先断开路由器的子网
- 参数`name`,路由器的名称
- 以浮动IP删除关联资源`test/e2e/integration/pages/network/floatingip.spec.js`为例
- 为了能成功关联云主机,需要满足云主机网卡所在的子网所连接的路由器开启了公网网关
```javascript
it('successfully delete related resources', () => {
cy.forceDeleteInstance(instanceName);
cy.deleteRouter(routerName, networkName);
cy.deleteAll('network', networkName);
cy.loginAdmin().wait(5000);
cy.deleteAll('networkQosPolicy', policyName);
});
```
- `forceDeleteInstance`
- 强制删除云主机,而不是使用软删除
- 参数`name`,云主机的名称
- 以删除云主机组`test/e2e/integration/pages/compute/server-group.spec.js`为例
1. 先删除云主机组下的云主机
2. 再成功删除云主机组
```javascript
it('successfully delete', () => {
cy.clickFirstActionDisabled();
cy.forceDeleteInstance(instanceName);
cy.wait(5000);
cy.visitPage(listUrl)
.tableSearchText(name)
.clickConfirmActionInFirst()
.checkEmptyTable();
});
```
- `createVolume`
- 创建云硬盘
- 参数`name`,云硬盘的名称
- 以云硬盘备份`test/e2e/integration/pages/storage/backup.spec.js`为例
- 创建云硬盘的备份,需要先准备好云硬盘
```javascript
it('successfully prepair resource', () => {
cy.createVolume(volumeName);
cy.createNetwork({ name: networkName });
cy.createInstance({ name: instanceName, networkName });
});
```
- `createSecurityGrouop`
- 创建安全组
- 参数`name`,安全组的名称
- 以虚拟网卡`test/e2e/integration/pages/network/virtual-adapter.spec.js`为例
- 测试管理安全组,需要先准备好安全组
```javascript
it('successfully prepair resource', () => {
cy.createFip();
cy.createSecurityGrouop({ name: securityGroupName });
cy.createNetwork({ name: networkName });
cy.createRouter({ name: routerName, network: networkName });
cy.createInstance({ name: instanceName, networkName });
});
```
- `createFip`
- 创建浮动IP
- 以云主机`test/e2e/integration/pages/compute/instance.spec.js`为例
- 测试绑定浮动IP需要准备好可达的浮动IP
```javascript
it('successfully prepair resource', () => {
cy.createNetwork({ name: networkName });
cy.createRouter({ name: routerName, network: networkName });
cy.createFip();
cy.createVolume(volumeName);
});
```
- `createUserGroup`
- 创建用户组
- 参数`name`,用户组的名称
- 以项目`test/e2e/integration/pages/identity/project.spec.js`为例
- 测试管理用户组操作,需要准备好用户组
```javascript
it('successfully prepair resource', () => {
cy.createUser({ name: username });
cy.createUserGroup({ name: userGroupName });
});
```
- `createUser`
- 创建用户
- 参数`name`,用户的名称
- 以项目`test/e2e/integration/pages/identity/project.spec.js`为例
- 测试管理用户操作,需要准备好用户
```javascript
it('successfully prepair resource', () => {
cy.createUser({ name: username });
cy.createUserGroup({ name: userGroupName });
});
```
- `createProject`
- 创建项目
- 参数`name`,项目的名称
- 以用户`test/e2e/integration/pages/identity/user.spec.js`为例
- 测试创建用户,需要准备项目
- 测试管理项目权限,需要准备项目
```javascript
it('successfully prepair resource', () => {
cy.createProject({ name: projectName });
cy.createProject({ name: projectName2 });
cy.createUserGroup({ name: userGroupName });
});
```
- `createIronicImage`
- 创建裸机使用的镜像
- 参数`name`,镜像的名称
- 以裸机`test/e2e/integration/pages/compute/ironic.spec.js`为例
- 创建裸机,需要能创建裸机的镜像
```javascript
it('successfully prepair resource', () => {
cy.createNetwork({ name: networkName });
cy.createRouter({ name: routerName, network: networkName });
cy.createFip();
cy.createIronicImage({ name: imageName });
});
```
- `deleteInstance`
- 删除云主机
- 参数`name`,云主机的名称
- 参数`deleteRecycleBin`,默认为`true`,表示需要进入回收站二次删除
- 以云主机删除`test/e2e/integration/pages/compute/instance.spec.js`为例
```javascript
it('successfully delete', () => {
cy.deleteInstance(newname);
});
```
- `deleteAllAvailableVolume`
- 删除所有可用的云硬盘
- 以云主机`test/e2e/integration/pages/compute/instance.spec.js`为例
```javascript
it('successfully delete related resources', () => {
cy.deleteAll('fip');
cy.deleteRouter(routerName, networkName);
cy.deleteAll('network', networkName);
cy.deleteAll('volume', volumeName);
cy.deleteAllAvailableVolume();
});
```
- `deleteAll`
- 删除符合条件的资源
- 参数`resourceName`,资源名称,支持
```javacript
export default {
// compute
instance: instanceListUrl,
image: imageListUrl,
// storage
volume: volumeListUrl,
volumeSnapshot: volumeSnapshotListUrl,
backup: backupListUrl,
volumeType: volumeTypeListUrl,
// network
network: networkListUrl,
router: routerListUrl,
networkQosPolicy: policyListUrl,
fip: fipListUrl,
virtualAdapter: virtualAdapterListUrl,
// security
securityGroup: securityGroupListUrl,
// identity
project: projectListUrl,
user: userListUrl,
userGroup: userGroupListUrl,
};
```
- 参数`name`
- 如设置,则删除指定名称的资源
- 如不设置,则删除资源列表下的所有资源
- 参数`tab`
- 如设置,表示资源位于`tab`标签下,需要先切换到指定标签下
- 以云硬盘类型`test/e2e/integration/pages/storage/volume-type.spec.js`为例
- 删除管理QoS时准备的QoS
```javascript
it('successfully delete related resources', () => {
cy.deleteAll('volumeType', qosName, 'QoS');
});
```