33
44"""Unit tests for the the runner_manager."""
55
6- from unittest .mock import ANY , MagicMock
6+ from unittest .mock import MagicMock
77
88import pytest
99
1010from github_runner_manager .errors import RunnerCreateError
11- from github_runner_manager .manager import runner_manager as runner_manager_module
1211from github_runner_manager .manager .cloud_runner_manager import (
1312 CloudRunnerInstance ,
1413 CloudRunnerManager ,
2221from github_runner_manager .manager .runner_manager import RunnerManager
2322from github_runner_manager .platform .platform_provider import (
2423 PlatformProvider ,
25- PlatformRunnerHealth ,
2624 RunnersHealthResponse ,
2725)
2826from github_runner_manager .types_ .github import GitHubRunnerStatus , SelfHostedRunner
@@ -104,55 +102,12 @@ def _get_runner_context(instance_id, metadata, labels):
104102 github_provider .delete_runner .assert_called_once_with (github_runner .identity )
105103
106104
107- @pytest .mark .parametrize (
108- "creation_waiting_times,runner_unhealthy,runner_healthy" ,
109- [
110- pytest .param (
111- (0 ,),
112- None ,
113- PlatformRunnerHealth (
114- identity = MagicMock (),
115- online = True ,
116- busy = False ,
117- deletable = False ,
118- ),
119- id = "online runner" ,
120- ),
121- pytest .param (
122- (0 , 0 ),
123- PlatformRunnerHealth (
124- identity = MagicMock (),
125- online = False ,
126- busy = True ,
127- deletable = False ,
128- ),
129- PlatformRunnerHealth (
130- identity = MagicMock (),
131- online = False ,
132- busy = False ,
133- deletable = True ,
134- ),
135- id = "deletable runner" ,
136- ),
137- ],
138- )
139- def test_create_runner (
140- monkeypatch : pytest .MonkeyPatch ,
141- creation_waiting_times : tuple [int , ...],
142- runner_unhealthy : PlatformRunnerHealth | None ,
143- runner_healthy : PlatformRunnerHealth ,
144- ):
105+ def test_create_runner () -> None :
145106 """
146- arrange: Given a specific pattern for creation waiting times and a list of.
147- PlatformRunnerHealth objects being the last one a healthy runner.
107+ arrange: None.
148108 act: call runner_manager.create_runners.
149- assert: The runner manager will create the runner and make requests to check the health
150- until it gets a healthy state.
109+ assert: The runner manager will create the runner.
151110 """
152- monkeypatch .setattr (
153- runner_manager_module , "RUNNER_CREATION_WAITING_TIMES" , creation_waiting_times
154- )
155-
156111 cloud_runner_manager = MagicMock (spec = CloudRunnerManager )
157112 cloud_runner_manager .name_prefix = "unit-0"
158113
@@ -161,10 +116,6 @@ def test_create_runner(
161116 github_runner = MagicMock ()
162117 platform_provider .get_runner_context .return_value = (runner_context_mock , github_runner )
163118
164- platform_provider .get_runner_health .side_effect = tuple (
165- runner_unhealthy for _ in range (len (creation_waiting_times ) - 1 )
166- ) + (runner_healthy ,)
167-
168119 runner_manager = RunnerManager (
169120 "managername" ,
170121 platform_provider = platform_provider ,
@@ -176,54 +127,3 @@ def test_create_runner(
176127
177128 assert instance_id
178129 cloud_runner_manager .create_runner .assert_called_once ()
179- # The method to get the runner health was called three times
180- # until the runner was online.
181- assert platform_provider .get_runner_health .call_count == len (creation_waiting_times )
182- platform_provider .get_runner_health .assert_called ()
183-
184-
185- def test_create_runner_failed_waiting (monkeypatch : pytest .MonkeyPatch ):
186- """
187- arrange: Given a specific pattern for creation waiting times and a list of.
188- PlatformRunnerHealth objects where none is healthy
189- act: call runner_manager.create_runners.
190- assert: The runner manager will create the runner, it will check for the health state,
191- but the runner will not get into healthy state and the platform api for deleting
192- the runner will be called.
193- """
194- runner_creation_waiting_times = (0 , 0 )
195- monkeypatch .setattr (
196- runner_manager_module , "RUNNER_CREATION_WAITING_TIMES" , runner_creation_waiting_times
197- )
198-
199- cloud_runner_manager = MagicMock (spec = CloudRunnerManager )
200- cloud_runner_manager .name_prefix = "unit-0"
201-
202- platform_provider = MagicMock (spec = PlatformProvider )
203- runner_context_mock = MagicMock ()
204- github_runner = MagicMock ()
205- platform_provider .get_runner_context .return_value = (runner_context_mock , github_runner )
206-
207- health_offline = PlatformRunnerHealth (
208- identity = MagicMock (), online = False , busy = False , deletable = False
209- )
210-
211- platform_provider .get_runner_health .side_effect = (
212- health_offline ,
213- health_offline ,
214- )
215-
216- runner_manager = RunnerManager (
217- "managername" ,
218- platform_provider = platform_provider ,
219- cloud_runner_manager = cloud_runner_manager ,
220- labels = ["label1" , "label2" ],
221- )
222-
223- () = runner_manager .create_runners (1 , RunnerMetadata (), True )
224-
225- # The runner was started even if it failed.
226- cloud_runner_manager .create_runner .assert_called_once ()
227- assert platform_provider .get_runner_health .call_count == 2
228- platform_provider .get_runner_health .assert_called ()
229- platform_provider .delete_runner .assert_called_once_with (ANY )
0 commit comments