Skip to content

Commit

Permalink
Update testing docs
Browse files Browse the repository at this point in the history
Signed-off-by: khushboo-rancher <[email protected]>
  • Loading branch information
khushboo-rancher committed Jan 24, 2025
1 parent 25daf4e commit a9a9c12
Show file tree
Hide file tree
Showing 9 changed files with 71 additions and 38 deletions.
8 changes: 8 additions & 0 deletions backend/fixtures/networks.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
class NetworkChecker:
def __init__(self):
self.networks = api_client.networks
self.clusternetworks = api_client.clusternetworks

@wait_until(wait_timeout, sleep_timeout)
def wait_routed(self, vnet_name):
Expand All @@ -67,6 +68,13 @@ <h2 class="section-title" id="header-functions">Functions</h2>
return True, (code, data)
return False, (code, data)

@wait_until(wait_timeout, sleep_timeout)
def wait_cnet_config_created(self, cnet_config_name):
code, data = api_client.clusternetworks.get_config(cnet_config_name)
if code == 200:
return True, (code, data)
return False, (code, data)

return NetworkChecker()</code></pre>
</details>
<div class="desc"></div>
Expand Down
12 changes: 9 additions & 3 deletions backend/fixtures/upgrades.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
self.upgrades = api_client.upgrades

@wait_until(wait_timeout, sleep_timeout)
def wait_upgrade_version_created(self, version):
def wait_version_created(self, version):
code, data = self.versions.get(version)
if code == 200:
return True, (code, data)
Expand All @@ -73,7 +73,10 @@ <h2 class="section-title" id="header-functions">Functions</h2>
verified = [
&#34;False&#34; == conds.get(&#39;Completed&#39;, {}).get(&#39;status&#39;),
&#34;False&#34; == conds.get(&#39;ImageReady&#39;, {}).get(&#39;status&#39;),
&#34;no such host&#34; in conds.get(&#39;ImageReady&#39;, {}).get(&#39;message&#39;, &#34;&#34;)
any([
&#34;no such host&#34; in conds.get(&#39;ImageReady&#39;, {}).get(&#39;message&#39;, &#34;&#34;), # &gt;= v1.4.0
&#34;retry limit&#34; in conds.get(&#39;ImageReady&#39;, {}).get(&#39;message&#39;, &#34;&#34;) # &lt; v1.4.0
])
]
if all(verified):
return True, (code, data)
Expand All @@ -86,7 +89,10 @@ <h2 class="section-title" id="header-functions">Functions</h2>
verified = [
&#34;False&#34; == conds.get(&#39;Completed&#39;, {}).get(&#39;status&#39;),
&#34;False&#34; == conds.get(&#39;ImageReady&#39;, {}).get(&#39;status&#39;),
&#34;n&#39;t match the file actual check&#34; in conds.get(&#39;ImageReady&#39;, {}).get(&#39;message&#39;, &#34;&#34;)
any([
&#34;actual check&#34; in conds.get(&#39;ImageReady&#39;, {}).get(&#39;message&#39;, &#34;&#34;), # &gt;= v1.4.0
&#34;retry limit&#34; in conds.get(&#39;ImageReady&#39;, {}).get(&#39;message&#39;, &#34;&#34;) # &lt; v1.4.0
])
]
if all(verified):
return True, (code, data)
Expand Down
63 changes: 41 additions & 22 deletions backend/integrations/test_upgrade.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@ <h1 class="title">Module <code>harvester_e2e_tests.integrations.test_upgrade</co
<h2 class="section-title" id="header-functions">Functions</h2>
<dl>
<dt id="harvester_e2e_tests.integrations.test_upgrade.cluster_network"><code class="name flex">
<span>def <span class="ident">cluster_network</span></span>(<span>vlan_nic, api_client, unique_name)</span>
<span>def <span class="ident">cluster_network</span></span>(<span>vlan_nic, api_client, unique_name, network_checker, wait_timeout)</span>
</code></dt>
<dd>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">@pytest.fixture(scope=&#39;module&#39;)
def cluster_network(vlan_nic, api_client, unique_name):
def cluster_network(vlan_nic, api_client, unique_name, network_checker, wait_timeout):
code, data = api_client.clusternetworks.get_config()
assert 200 == code, (code, data)

Expand Down Expand Up @@ -93,17 +93,24 @@ <h2 class="section-title" id="header-functions">Functions</h2>
f&#34;Created: {created}\t Remaining: {all_nodes}\n&#34;
f&#34;API Status({code}): {data}&#34;
)
cnet_config_created, (code, data) = network_checker.wait_cnet_config_created(node)
assert cnet_config_created, (code, data)
created.append(node)

yield cnet

# Teardown
deleted = {name: api_client.clusternetworks.delete_config(name) for name in created}
failed = [(name, code, data) for name, (code, data) in deleted.items() if 200 != code]
if failed:
fmt = &#34;Unable to delete VLAN Config {} with error ({}): {}&#34;
endtime = datetime.now() + timedelta(seconds=wait_timeout)
while endtime &gt; datetime.now() and created:
name = created.pop(0)
code, data = api_client.clusternetworks.delete_config(name)
if code != 404:
created.append(name)
sleep(1)
else:
raise AssertionError(
&#34;\n&#34;.join(fmt.format(name, code, data) for (name, code, data) in failed)
f&#34;Failed to remove network configs {created} after {wait_timeout}s\n&#34;
f&#34;Last API Status({code}): {data}&#34;
)

code, data = api_client.clusternetworks.delete(cnet)
Expand Down Expand Up @@ -453,11 +460,11 @@ <h2 class="section-title" id="header-functions">Functions</h2>
</summary>
<pre><code class="python">@pytest.fixture(scope=&#34;module&#34;)
def upgrade_target(request, unique_name):
version = request.config.getoption(&#39;--upgrade-target-version&#39;)
version = request.config.getoption(&#39;--upgrade-target-version&#39;).strip()
version = version or f&#34;upgrade-{unique_name}&#34;
iso_url = request.config.getoption(&#39;--upgrade-iso-url&#39;)
iso_url = request.config.getoption(&#39;--upgrade-iso-url&#39;).strip()
assert iso_url, &#34;Target ISO URL should not be empty&#34;
checksum = request.config.getoption(&#34;--upgrade-iso-checksum&#34;)
checksum = request.config.getoption(&#34;--upgrade-iso-checksum&#34;).strip()
assert checksum, &#34;Checksum for Target ISO should not be empty&#34;

return version, iso_url, checksum</code></pre>
Expand Down Expand Up @@ -703,7 +710,8 @@ <h2 class="section-title" id="header-classes">Classes</h2>

@pytest.mark.dependency(name=&#34;any_nodes_upgrade&#34;)
def test_perform_upgrade(
self, api_client, unique_name, upgrade_target, upgrade_timeout, interceptor
self, api_client, unique_name, upgrade_target, upgrade_timeout, interceptor,
upgrade_checker
):
&#34;&#34;&#34;
- perform upgrade
Expand All @@ -720,6 +728,8 @@ <h2 class="section-title" id="header-classes">Classes</h2>
version = f&#34;{version}-{unique_name}&#34;
code, data = api_client.versions.create(version, url, checksum)
assert 201 == code, f&#34;Failed to create upgrade for {version}&#34;
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)
code, data = api_client.upgrades.create(version, annotations=skip_version_check)
assert 201 == code, f&#34;Failed to start upgrade for {version}&#34;
upgrade_name = data[&#39;metadata&#39;][&#39;name&#39;]
Expand Down Expand Up @@ -1180,7 +1190,7 @@ <h3>Class variables</h3>
<h3>Methods</h3>
<dl>
<dt id="harvester_e2e_tests.integrations.test_upgrade.TestAnyNodesUpgrade.test_perform_upgrade"><code class="name flex">
<span>def <span class="ident">test_perform_upgrade</span></span>(<span>self, api_client, unique_name, upgrade_target, upgrade_timeout, interceptor)</span>
<span>def <span class="ident">test_perform_upgrade</span></span>(<span>self,<br>api_client,<br>unique_name,<br>upgrade_target,<br>upgrade_timeout,<br>interceptor,<br>upgrade_checker)</span>
</code></dt>
<dd>
<details class="source">
Expand All @@ -1189,7 +1199,8 @@ <h3>Methods</h3>
</summary>
<pre><code class="python">@pytest.mark.dependency(name=&#34;any_nodes_upgrade&#34;)
def test_perform_upgrade(
self, api_client, unique_name, upgrade_target, upgrade_timeout, interceptor
self, api_client, unique_name, upgrade_target, upgrade_timeout, interceptor,
upgrade_checker
):
&#34;&#34;&#34;
- perform upgrade
Expand All @@ -1206,6 +1217,8 @@ <h3>Methods</h3>
version = f&#34;{version}-{unique_name}&#34;
code, data = api_client.versions.create(version, url, checksum)
assert 201 == code, f&#34;Failed to create upgrade for {version}&#34;
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)
code, data = api_client.upgrades.create(version, annotations=skip_version_check)
assert 201 == code, f&#34;Failed to start upgrade for {version}&#34;
upgrade_name = data[&#39;metadata&#39;][&#39;name&#39;]
Expand Down Expand Up @@ -2058,7 +2071,7 @@ <h3>Methods</h3>
if code != 200:
code, data = api_client.versions.create(version, url, checksum)
assert code == 201, f&#34;Failed to create invalid version: {data}&#34;
version_created, (code, data) = upgrade_checker.wait_upgrade_version_created(version)
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)

code, data = api_client.upgrades.create(version)
Expand Down Expand Up @@ -2090,7 +2103,7 @@ <h3>Methods</h3>

code, data = api_client.versions.create(version, url, checksum[resort])
assert 201 == code, f&#34;Failed to create upgrade for {version}&#34;
version_created, (code, data) = upgrade_checker.wait_upgrade_version_created(version)
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)

code, data = api_client.upgrades.create(version)
Expand Down Expand Up @@ -2132,8 +2145,8 @@ <h3>Methods</h3>
api_client.versions.delete(version)

def test_degraded_volume(
self, api_client, vm_shell_from_host, upgrade_target, stopped_vm,
vm_checker, volume_checker
self, api_client, unique_name, vm_shell_from_host, upgrade_target, stopped_vm,
vm_checker, volume_checker, upgrade_checker
):
&#34;&#34;&#34;
Criteria: create upgrade should fails if there are any degraded volumes
Expand Down Expand Up @@ -2184,8 +2197,11 @@ <h3>Methods</h3>

# create upgrade and verify it is not allowed
version, url, checksum = upgrade_target
version = f&#34;{version}-{unique_name}&#34;
code, data = api_client.versions.create(version, url, checksum)
assert code == 201, f&#34;Failed to create version {version}: {data}&#34;
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)
code, data = api_client.upgrades.create(version)
assert code == 400, f&#34;Failed to verify degraded volume: {code}, {data}&#34;

Expand Down Expand Up @@ -2227,7 +2243,7 @@ <h3>Methods</h3>

code, data = api_client.versions.create(version, url, checksum[resort])
assert 201 == code, f&#34;Failed to create upgrade for {version}&#34;
version_created, (code, data) = upgrade_checker.wait_upgrade_version_created(version)
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)

code, data = api_client.upgrades.create(version)
Expand All @@ -2245,16 +2261,16 @@ <h3>Methods</h3>
<div class="desc"></div>
</dd>
<dt id="harvester_e2e_tests.integrations.test_upgrade.TestInvalidUpgrade.test_degraded_volume"><code class="name flex">
<span>def <span class="ident">test_degraded_volume</span></span>(<span>self,<br>api_client,<br>vm_shell_from_host,<br>upgrade_target,<br>stopped_vm,<br>vm_checker,<br>volume_checker)</span>
<span>def <span class="ident">test_degraded_volume</span></span>(<span>self,<br>api_client,<br>unique_name,<br>vm_shell_from_host,<br>upgrade_target,<br>stopped_vm,<br>vm_checker,<br>volume_checker,<br>upgrade_checker)</span>
</code></dt>
<dd>
<details class="source">
<summary>
<span>Expand source code</span>
</summary>
<pre><code class="python">def test_degraded_volume(
self, api_client, vm_shell_from_host, upgrade_target, stopped_vm,
vm_checker, volume_checker
self, api_client, unique_name, vm_shell_from_host, upgrade_target, stopped_vm,
vm_checker, volume_checker, upgrade_checker
):
&#34;&#34;&#34;
Criteria: create upgrade should fails if there are any degraded volumes
Expand Down Expand Up @@ -2305,8 +2321,11 @@ <h3>Methods</h3>

# create upgrade and verify it is not allowed
version, url, checksum = upgrade_target
version = f&#34;{version}-{unique_name}&#34;
code, data = api_client.versions.create(version, url, checksum)
assert code == 201, f&#34;Failed to create version {version}: {data}&#34;
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)
code, data = api_client.upgrades.create(version)
assert code == 400, f&#34;Failed to verify degraded volume: {code}, {data}&#34;

Expand Down Expand Up @@ -2343,7 +2362,7 @@ <h3>Methods</h3>
if code != 200:
code, data = api_client.versions.create(version, url, checksum)
assert code == 201, f&#34;Failed to create invalid version: {data}&#34;
version_created, (code, data) = upgrade_checker.wait_upgrade_version_created(version)
version_created, (code, data) = upgrade_checker.wait_version_created(version)
assert version_created, (code, data)

code, data = api_client.upgrades.create(version)
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="generator" content="Hugo 0.141.0">
<meta name="generator" content="Hugo 0.142.0">
<meta charset="utf-8">
<title>
Harvester manual test cases
Expand Down
Loading

0 comments on commit a9a9c12

Please sign in to comment.