krkn-lib 5.1.4__py3-none-any.whl → 5.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,128 +0,0 @@
1
- import time
2
-
3
- from krkn_lib.k8s.pods_monitor_pool import PodsMonitorPool
4
- from krkn_lib.tests import BaseTest
5
-
6
-
7
- class TestKrknKubernetesPodsMonitorPool(BaseTest):
8
- def test_pods_monitor_pool(self):
9
- namespace_1 = "test-pool-ns-0-" + self.get_random_string(10)
10
- label_1 = "readiness-1"
11
- delayed_1 = "delayed-pool-0-1-" + self.get_random_string(10)
12
- delayed_2 = "delayed-pool-0-2-" + self.get_random_string(10)
13
-
14
- delayed_1_respawn = "delayed-pool-0-r-2-" + self.get_random_string(10)
15
- self.deploy_namespace(namespace_1, [])
16
- self.deploy_delayed_readiness_pod(delayed_1, namespace_1, 0, label_1)
17
- self.deploy_delayed_readiness_pod(delayed_2, namespace_1, 0, label_1)
18
-
19
- namespace_2 = "test-pool-ns-1-" + self.get_random_string(10)
20
- label_2 = "readiness-2"
21
- delayed_3 = "delayed-pool-1-3-" + self.get_random_string(10)
22
- delayed_4 = "delayed-pool-1-4-" + self.get_random_string(10)
23
- delayed_3_respawn = "delayed-pool-1-r-4-" + self.get_random_string(10)
24
- self.deploy_namespace(namespace_2, [])
25
- self.deploy_delayed_readiness_pod(delayed_3, namespace_2, 0, label_2)
26
- self.deploy_delayed_readiness_pod(delayed_4, namespace_2, 0, label_2)
27
-
28
- namespace_3 = "test-pool-ns-2-" + self.get_random_string(10)
29
- label_3 = "readiness-3"
30
- delayed_5 = "delayed-pool-2-5-" + self.get_random_string(10)
31
- delayed_6 = "delayed-pool-2-6-" + self.get_random_string(10)
32
- delayed_5_respawn = "delayed-pool-2-r-5-" + self.get_random_string(10)
33
- self.deploy_namespace(namespace_3, [])
34
- self.deploy_delayed_readiness_pod(delayed_5, namespace_3, 0, label_3)
35
- self.deploy_delayed_readiness_pod(delayed_6, namespace_3, 0, label_3)
36
- # waiting the pods to become ready
37
- time.sleep(10)
38
- print("starting monitoring")
39
- pod_delay = 1
40
- monitor_timeout = 30
41
-
42
- pool = PodsMonitorPool(self.lib_k8s)
43
-
44
- pool.select_and_monitor_by_label(
45
- label_selector=f"test={label_1}",
46
- max_timeout=monitor_timeout,
47
- field_selector="status.phase=Running",
48
- )
49
-
50
- pool.select_and_monitor_by_namespace_pattern_and_label(
51
- namespace_pattern="^test-pool-ns-1-.*",
52
- label_selector=f"test={label_2}",
53
- max_timeout=monitor_timeout,
54
- field_selector="status.phase=Running",
55
- )
56
-
57
- pool.select_and_monitor_by_name_pattern_and_namespace_pattern(
58
- pod_name_pattern="^delayed-pool-2-.*",
59
- namespace_pattern="^test-pool-ns-2-.*",
60
- max_timeout=monitor_timeout,
61
- field_selector="status.phase=Running",
62
- )
63
-
64
- self.background_delete_pod(delayed_1, namespace_1)
65
- self.background_delete_pod(delayed_3, namespace_2)
66
- self.background_delete_pod(delayed_5, namespace_3)
67
- # these two will recover the previously deleted pods
68
- self.deploy_delayed_readiness_pod(
69
- delayed_1_respawn, namespace_1, pod_delay, label_1
70
- )
71
- self.deploy_delayed_readiness_pod(
72
- delayed_3_respawn, namespace_2, pod_delay, label_2
73
- )
74
- # this one will not recover
75
- self.deploy_delayed_readiness_pod(
76
- delayed_5_respawn, namespace_3, monitor_timeout + 5, label_3
77
- )
78
- start_time = time.time()
79
- status = pool.join()
80
- # added 1 second threshold that may
81
- # happen because of intermediate api call delay
82
- self.assertTrue(0 < time.time() - start_time < monitor_timeout + 1)
83
- self.background_delete_pod(delayed_1_respawn, namespace_1)
84
- self.background_delete_pod(delayed_2, namespace_1)
85
- self.background_delete_pod(delayed_3_respawn, namespace_2)
86
-
87
- self.background_delete_pod(delayed_4, namespace_2)
88
- self.background_delete_pod(delayed_5_respawn, namespace_3)
89
- self.background_delete_pod(delayed_6, namespace_3)
90
- print('staus' + str(status))
91
- self.assertIsNone(status.error)
92
- self.assertEqual(len(status.recovered), 2)
93
- self.assertEqual(len(status.unrecovered), 1)
94
- self.lib_k8s.delete_namespace(namespace_1)
95
- self.lib_k8s.delete_namespace(namespace_2)
96
- self.lib_k8s.delete_namespace(namespace_3)
97
-
98
- def test_cancel(self):
99
- namespace_1 = "test-pool-ns-0-" + self.get_random_string(10)
100
- label_1 = "readiness-1"
101
- delayed_1 = "delayed-pool-0-1-" + self.get_random_string(10)
102
- delayed_2 = "delayed-pool-0-2-" + self.get_random_string(10)
103
-
104
- delayed_1_respawn = "delayed-pool-0-r-2-" + self.get_random_string(10)
105
- self.deploy_namespace(namespace_1, [])
106
- self.deploy_delayed_readiness_pod(delayed_1, namespace_1, 0, label_1)
107
- self.deploy_delayed_readiness_pod(delayed_2, namespace_1, 0, label_1)
108
- monitor_timeout = 60
109
- pool = PodsMonitorPool(self.lib_k8s)
110
-
111
- pool.select_and_monitor_by_label(
112
- label_selector=f"test={label_1}",
113
- max_timeout=monitor_timeout,
114
- field_selector="status.phase=Running",
115
- )
116
- self.background_delete_pod(delayed_1, namespace_1)
117
- self.deploy_delayed_readiness_pod(
118
- delayed_1_respawn, namespace_1, monitor_timeout + 5, label_1
119
- )
120
- start_time = time.time()
121
- pool.cancel()
122
- _ = pool.join()
123
- end_time = time.time() - start_time
124
- self.background_delete_pod(delayed_1_respawn, namespace_1)
125
- self.background_delete_pod(delayed_2, namespace_1)
126
- # give the time to wrap up the threads and return
127
- self.assertLess(end_time, monitor_timeout)
128
- self.lib_k8s.delete_namespace(namespace_1)