71
71
}
72
72
LOG_PATTERN = re .compile (r"^[\d\-]{10} [\d:]{8} UTC [^\s]+ ([A-Z]+):" )
73
73
74
+ # Note for MacOSX
75
+ # You can run
76
+ # ```bash
77
+ # OSX=true ./integration_tests.py ...
78
+ # ```
79
+ # To support docker-compose
80
+ IS_OSX = os .getenv ("OSX" )
81
+ DOCKER_COMPOSE_CMD = "docker-compose" if IS_OSX else "docker"
82
+
74
83
75
84
class NaturalOrderGroup (typer .core .TyperGroup ):
76
85
"""Group for showing subcommands in the correct order"""
@@ -154,9 +163,10 @@ def create(
154
163
run_server_tests : bool = True ,
155
164
run_client_tests : bool = True ,
156
165
run_pilot_tests : bool = True ,
166
+ legacy_adapted_services : Optional [list [str ]] = typer .Option (None , help = "Services that have legacy adaptors." ),
157
167
):
158
168
"""Start a local instance of the integration tests"""
159
- prepare_environment (flags , editable , extra_module , diracx_dist_dir , release_var )
169
+ prepare_environment (flags , editable , extra_module , diracx_dist_dir , release_var , legacy_adapted_services )
160
170
install_server ()
161
171
install_client ()
162
172
install_pilot ()
@@ -194,7 +204,7 @@ def destroy():
194
204
with _gen_docker_compose (DEFAULT_MODULES ) as docker_compose_fn :
195
205
os .execvpe (
196
206
"docker" ,
197
- ["docker" , "compose" , "-f" , docker_compose_fn , "down" , "--remove-orphans" , "-t" , "0" , "--volumes" ],
207
+ [DOCKER_COMPOSE_CMD , "-f" , docker_compose_fn , "down" , "--remove-orphans" , "-t" , "0" , "--volumes" ],
198
208
_make_env ({}),
199
209
)
200
210
@@ -206,6 +216,7 @@ def prepare_environment(
206
216
extra_module : Optional [list [str ]] = None ,
207
217
diracx_dist_dir : Optional [str ] = None ,
208
218
release_var : Optional [str ] = None ,
219
+ legacy_adapted_services : Optional [list [str ]] = typer .Option (None , help = "Services that have legacy adaptors." ),
209
220
):
210
221
"""Prepare the local environment for installing DIRAC."""
211
222
if extra_module is None :
@@ -226,7 +237,13 @@ def prepare_environment(
226
237
flags = {}
227
238
else :
228
239
flags = dict (f .split ("=" , 1 ) for f in flags )
229
- docker_compose_env = _make_env (flags )
240
+
241
+ legacy_adapted_services_str = ""
242
+ if legacy_adapted_services :
243
+ legacy_adapted_services_str = " " .join (legacy_adapted_services )
244
+
245
+ docker_compose_env = _make_env (flags , legacy_adapted_services_str )
246
+
230
247
server_flags = {}
231
248
client_flags = {}
232
249
pilot_flags = {}
@@ -253,7 +270,7 @@ def prepare_environment(
253
270
typer .secho ("Running docker compose to create containers" , fg = c .GREEN )
254
271
with _gen_docker_compose (modules , diracx_dist_dir = diracx_dist_dir ) as docker_compose_fn :
255
272
subprocess .run (
256
- ["docker" , "compose" , "-f" , docker_compose_fn , "up" , "-d" , "dirac-server" , "dirac-client" , "dirac-pilot" ]
273
+ [DOCKER_COMPOSE_CMD , "-f" , docker_compose_fn , "up" , "-d" , "dirac-server" , "dirac-client" , "dirac-pilot" ]
257
274
+ extra_services ,
258
275
check = True ,
259
276
env = docker_compose_env ,
@@ -360,7 +377,7 @@ def prepare_environment(
360
377
subStderr = open (docker_compose_fn_final / "stderr" , "w" )
361
378
362
379
subprocess .Popen (
363
- ["docker" , "compose" , "-f" , docker_compose_fn_final / "docker-compose.yml" , "up" , "-d" , "diracx" ],
380
+ [DOCKER_COMPOSE_CMD , "-f" , docker_compose_fn_final / "docker-compose.yml" , "up" , "-d" , "diracx" ],
364
381
env = docker_compose_env ,
365
382
stdin = None ,
366
383
stdout = subStdout ,
@@ -619,7 +636,7 @@ def _gen_docker_compose(modules, *, diracx_dist_dir=None):
619
636
def _check_containers_running (* , is_up = True ):
620
637
with _gen_docker_compose (DEFAULT_MODULES ) as docker_compose_fn :
621
638
running_containers = subprocess .run (
622
- ["docker" , "compose" , "-f" , docker_compose_fn , "ps" , "-q" , "-a" ],
639
+ [DOCKER_COMPOSE_CMD , "-f" , docker_compose_fn , "ps" , "-q" , "-a" ],
623
640
stdout = subprocess .PIPE ,
624
641
env = _make_env ({}),
625
642
# docker compose ps has a non-zero exit code when no containers are running
@@ -689,7 +706,12 @@ def _find_dirac_release():
689
706
return version_branch
690
707
691
708
692
- def _make_env (flags ):
709
+ def _make_env (flags , legacy_adapted_services = "" ):
710
+ # Important note: when you add an env variable here to pass it to
711
+ # a docker compose, make sure that in docker-compose.yml, you added an
712
+ # `environment` field for your service.
713
+ #
714
+ # If you don't, the variable won't be passed to the container.
693
715
env = os .environ .copy ()
694
716
env ["DIRAC_UID" ] = str (os .getuid ())
695
717
env ["DIRAC_GID" ] = str (os .getgid ())
@@ -705,6 +727,7 @@ def _make_env(flags):
705
727
if "CVMFS_DIR" not in env or not Path (env ["CVMFS_DIR" ]).is_dir ():
706
728
typer .secho (f"CVMFS_DIR environment value: { env .get ('CVMFS_DIR' , 'NOT SET' )} " , fg = c .YELLOW )
707
729
env ["CVMFS_DIR" ] = "/tmp"
730
+ env ["LEGACY_ADAPTED_SERVICES" ] = legacy_adapted_services
708
731
return env
709
732
710
733
0 commit comments