Skip to content

Commit 5b8f2bf

Browse files
committed
fix: add f.controller.shared mock to CI integration tests
The database.py module imports from f.controller.shared.otel_logging which wasn't mocked in CI. Also added target CRUD modules to the pre-populated module list and updated breeder test config to use targetRefs instead of inline targets.
1 parent 9aea921 commit 5b8f2bf

1 file changed

Lines changed: 57 additions & 8 deletions

File tree

.github/workflows/ci.yml

Lines changed: 57 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,20 @@ jobs:
8080
sys.modules['f.shared'] = fake_f.shared
8181
sys.modules['f.shared.otel_logging'] = fake_f.shared.otel_logging
8282
83+
fake_controller_shared = FakeControllerModule()
84+
fake_controller_otel = MagicMock()
85+
fake_controller_otel.get_logger = lambda name: MagicMock()
86+
fake_controller_shared.otel_logging = fake_controller_otel
87+
sys.modules['f.controller.shared'] = fake_controller_shared
88+
sys.modules['f.controller.shared.otel_logging'] = fake_controller_otel
89+
8390
# Pre-populate all f.controller.xxx modules BEFORE any imports
8491
for module_name in ['config', 'database', 'breeder_service', 'breeder_create',
8592
'breeder_get', 'breeder_delete', 'breeders_get',
8693
'breeder_stop', 'breeder_start',
8794
'credential_create', 'credential_get', 'credential_delete',
88-
'credentials_get']:
95+
'credentials_get',
96+
'target_create', 'target_get', 'targets_get', 'target_delete']:
8997
stub = FakeControllerModule()
9098
sys.modules[f'f.controller.{module_name}'] = stub
9199
@@ -134,6 +142,18 @@ jobs:
134142
import controller.credentials_get as credentials_get
135143
populate_stub_module(sys.modules['f.controller.credentials_get'], credentials_get)
136144
145+
import controller.target_create as target_create
146+
populate_stub_module(sys.modules['f.controller.target_create'], target_create)
147+
148+
import controller.target_get as target_get
149+
populate_stub_module(sys.modules['f.controller.target_get'], target_get)
150+
151+
import controller.targets_get as targets_get
152+
populate_stub_module(sys.modules['f.controller.targets_get'], targets_get)
153+
154+
import controller.target_delete as target_delete
155+
populate_stub_module(sys.modules['f.controller.target_delete'], target_delete)
156+
137157
# Test imports
138158
from controller.config import DatabaseConfig
139159
from controller.breeder_service import BreederService
@@ -144,6 +164,8 @@ jobs:
144164
from controller.breeders_get import main as list_breeders
145165
from controller.breeder_stop import main as stop_breeder
146166
from controller.breeder_start import main as start_breeder
167+
from controller.target_create import main as create_target
168+
from controller.target_get import main as get_target
147169
148170
# Setup test config - use the actual database names
149171
# Meta DB connection
@@ -185,6 +207,18 @@ jobs:
185207
execute_ddl_query(admin_config, 'CREATE DATABASE archive_db;')
186208
print('✓ Created archive_db')
187209
210+
# Create a target first (breeder configs now require targetRefs)
211+
print('Creating test target for breeder config...')
212+
target_result = create_target(request_data={
213+
'name': 'test-target',
214+
'targetType': 'ssh',
215+
'address': 'test.local',
216+
'username': 'test_user'
217+
})
218+
assert target_result['result'] == 'SUCCESS', f'Target create failed: {target_result}'
219+
test_target_id = target_result['data']['id']
220+
print(f'✓ Created test target: {test_target_id}')
221+
188222
# Test 1: Create breeder (tests schema creation + data insertion)
189223
print('Testing breeder creation (schema + data)...')
190224
breeder_config = {
@@ -203,12 +237,7 @@ jobs:
203237
}
204238
},
205239
'effectuation': {
206-
'targets': [{
207-
'type': 'ssh',
208-
'address': 'test.local',
209-
'username': 'test_user',
210-
'credentialName': 'test-ssh-key'
211-
}]
240+
'targetRefs': [test_target_id]
212241
},
213242
'cooperation': {'active': False},
214243
'objectives': [{'name': 'test_metric', 'goal': 'MINIMIZE'}],
@@ -395,12 +424,20 @@ jobs:
395424
sys.modules['f.shared'] = fake_f.shared
396425
sys.modules['f.shared.otel_logging'] = fake_f.shared.otel_logging
397426
427+
fake_controller_shared = FakeControllerModule()
428+
fake_controller_otel = MagicMock()
429+
fake_controller_otel.get_logger = lambda name: MagicMock()
430+
fake_controller_shared.otel_logging = fake_controller_otel
431+
sys.modules['f.controller.shared'] = fake_controller_shared
432+
sys.modules['f.controller.shared.otel_logging'] = fake_controller_otel
433+
398434
# Pre-populate all f.controller.xxx modules BEFORE any imports
399435
for module_name in ['config', 'database', 'breeder_service', 'breeder_create',
400436
'breeder_get', 'breeder_delete', 'breeders_get',
401437
'breeder_stop', 'breeder_start',
402438
'credential_create', 'credential_get', 'credential_delete',
403-
'credentials_get']:
439+
'credentials_get',
440+
'target_create', 'target_get', 'targets_get', 'target_delete']:
404441
stub = FakeControllerModule()
405442
sys.modules[f'f.controller.{module_name}'] = stub
406443
@@ -450,6 +487,18 @@ jobs:
450487
import controller.credentials_get as credentials_get
451488
populate_stub_module(sys.modules['f.controller.credentials_get'], credentials_get)
452489
490+
import controller.target_create as target_create
491+
populate_stub_module(sys.modules['f.controller.target_create'], target_create)
492+
493+
import controller.target_get as target_get
494+
populate_stub_module(sys.modules['f.controller.target_get'], target_get)
495+
496+
import controller.targets_get as targets_get
497+
populate_stub_module(sys.modules['f.controller.targets_get'], targets_get)
498+
499+
import controller.target_delete as target_delete
500+
populate_stub_module(sys.modules['f.controller.target_delete'], target_delete)
501+
453502
# Test imports
454503
from controller.config import DatabaseConfig
455504
from controller.database import execute_query, execute_ddl_query

0 commit comments

Comments
 (0)