@@ -133,7 +133,7 @@ jobs:
133
133
strategy :
134
134
fail-fast : false
135
135
matrix :
136
- test : ["cli", "cli_change_lb", "state", "multi_gateway", "server", "grpc", "omap_lock", "old_omap", "log_files", "nsid", "psk"]
136
+ test : ["cli", "cli_change_lb", "state", "multi_gateway", "server", "grpc", "omap_lock", "old_omap", "log_files", "nsid", "psk", "dhchap" ]
137
137
runs-on : ubuntu-latest
138
138
env :
139
139
HUGEPAGES : 512 # for multi gateway test, approx 256 per gateway instance
@@ -248,6 +248,10 @@ jobs:
248
248
249
249
demo :
250
250
needs : [build, build-ceph]
251
+ strategy :
252
+ fail-fast : false
253
+ matrix :
254
+ security_protocol : ["unsecured", "psk", "dhchap"]
251
255
runs-on : ubuntu-latest
252
256
env :
253
257
HUGEPAGES : 512
@@ -297,155 +301,15 @@ jobs:
297
301
298
302
- name : Test
299
303
run : |
300
- make demo OPTS=-T
301
-
302
- - name : List resources
303
- run : |
304
- # https://github.com/actions/toolkit/issues/766
305
- shopt -s expand_aliases
306
- eval $(make alias)
307
- cephnvmf subsystem list
308
- subs=$(cephnvmf --output stdio --format json subsystem list | grep nqn | sed 's/"nqn": "//' | sed 's/",$//')
309
- for sub in $subs
310
- do
311
- cephnvmf namespace list --subsystem $sub
312
- cephnvmf listener list --subsystem $sub
313
- cephnvmf host list --subsystem $sub
314
- done
315
-
316
- - name : Run bdevperf
317
- run : |
318
- # see https://spdk.io/doc/nvmf_multipath_howto.html
319
- shopt -s expand_aliases
320
- eval $(make alias)
321
- . .env
322
- set -x
323
- echo -n "ℹ️ Starting bdevperf container"
324
- docker compose up -d bdevperf
325
- sleep 10
326
- echo "ℹ️ bdevperf start up logs"
327
- make logs SVC=bdevperf
328
- eval $(make run SVC=bdevperf OPTS="--entrypoint=env" | grep BDEVPERF_SOCKET | tr -d '\n\r' )
329
-
330
- rpc="/usr/libexec/spdk/scripts/rpc.py"
331
- echo "ℹ️ bdevperf bdev_nvme_set_options"
332
- make exec SVC=bdevperf OPTS=-T CMD="$rpc -v -s $BDEVPERF_SOCKET bdev_nvme_set_options -r -1"
333
- echo "ℹ️ bdevperf tcp connect ip: $NVMEOF_IP_ADDRESS port: $NVMEOF_IO_PORT nqn: $NQN"
334
- make exec SVC=bdevperf OPTS=-T CMD="$rpc -v -s $BDEVPERF_SOCKET bdev_nvme_attach_controller -b Nvme0 -t tcp -a $NVMEOF_IP_ADDRESS -s $NVMEOF_IO_PORT -f ipv4 -n $NQN -q ${NQN}host -l -1 -o 10"
335
- echo "ℹ️ verify connection list"
336
- conns=$(cephnvmf --output stdio --format json connection list --subsystem $NQN)
337
- echo $conns | grep -q '"status": 0'
338
- echo $conns | grep -q "\"nqn\": \"${NQN}host\""
339
- echo $conns | grep -q "\"trsvcid\": ${NVMEOF_IO_PORT}"
340
- echo $conns | grep -q "\"traddr\": \"${NVMEOF_IP_ADDRESS}\""
341
- echo $conns | grep -q "\"adrfam\": \"ipv4\""
342
- echo $conns | grep -q "\"trtype\": \"TCP\""
343
- con_cnt=$(echo $conns | xargs -n 1 | grep traddr | wc -l)
344
- if [ $con_cnt -ne 1 ]; then
345
- echo "Number of connections ${con_cnt}, expected 1 list: ${conns}"
346
- exit 1
347
- fi
348
- echo $conns | grep -q "\"qpairs_count\": 1"
349
- echo $conns | grep -q "\"connected\": true"
350
- echo "ℹ️ bdevperf perform_tests"
351
- eval $(make run SVC=bdevperf OPTS="--entrypoint=env" | grep BDEVPERF_TEST_DURATION | tr -d '\n\r' )
352
- timeout=$(expr $BDEVPERF_TEST_DURATION \* 2)
353
- bdevperf="/usr/libexec/spdk/scripts/bdevperf.py"
354
- make exec SVC=bdevperf OPTS=-T CMD="$bdevperf -v -t $timeout -s $BDEVPERF_SOCKET perform_tests"
355
-
356
- - name : Check coredump existence
357
- if : success() || failure()
358
- id : check_coredumps
359
- uses : andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2, pinned to SHA for security reasons
360
- with :
361
- files : " /tmp/coredump/core.*"
362
-
363
- - name : Upload demo core dumps
364
- if : steps.check_coredumps.outputs.files_exists == 'true'
365
- uses : actions/upload-artifact@v4
366
- with :
367
- name : core_demo
368
- path : /tmp/coredump/core.*
369
-
370
- # For debugging purposes (provides an SSH connection to the runner)
371
- # - name: Setup tmate session
372
- # uses: mxschmitt/action-tmate@v3
373
- # with:
374
- # limit-access-to-actor: true
375
-
376
- - name : Display logs
377
- if : success() || failure()
378
- run : make logs OPTS=''
379
-
380
- - name : Tear down
381
- if : success() || failure()
382
- run : |
383
- make down
384
- make clean
385
-
386
- demo-secure :
387
- needs : [build, build-ceph]
388
- runs-on : ubuntu-latest
389
- env :
390
- HUGEPAGES : 512
391
- steps :
392
- - name : Checkout code
393
- uses : actions/checkout@v4
394
-
395
- - name : Setup huge-pages
396
- run : make setup HUGEPAGES=$HUGEPAGES
397
-
398
- - name : Download container images
399
- uses : actions/download-artifact@v4
400
- with :
401
- pattern : container_images*
402
- merge-multiple : true
403
-
404
- - name : Load container images
405
- run : |
406
- docker load < nvmeof.tar
407
- docker load < nvmeof-cli.tar
408
- docker load < ceph.tar
409
- docker load < bdevperf.tar
410
-
411
- - name : Start containers
412
- timeout-minutes : 3
413
- run : |
414
- make up
415
-
416
- - name : Wait for the Gateway to be listening
417
- timeout-minutes : 3
418
- run : |
419
- . .env
420
-
421
- echo using gateway $NVMEOF_IP_ADDRESS port $NVMEOF_GW_PORT
422
- until nc -z $NVMEOF_IP_ADDRESS $NVMEOF_GW_PORT; do
423
- echo -n .
424
- sleep ${{ env.WAIT_INTERVAL_SECS }}
425
- done
426
-
427
- - name : List containers
428
- if : success() || failure()
429
- run : make ps
430
-
431
- - name : List processes
432
- if : success() || failure()
433
- run : make top
434
-
435
- - name : Test
436
- run : |
437
- . .env
438
- port2=`expr ${NVMEOF_IO_PORT} + 10`
439
- make demosecure OPTS=-T HOSTNQN="${NQN}host" HOSTNQN2="${NQN}host2" NVMEOF_IO_PORT2=${port2}
304
+ ./tests/ha/demo_test.sh test_${{ matrix.security_protocol }}
440
305
441
306
- name : List resources
442
307
run : |
443
308
# https://github.com/actions/toolkit/issues/766
444
309
shopt -s expand_aliases
445
310
eval $(make alias)
446
- cephnvmf get_subsystems
447
311
cephnvmf subsystem list
448
- subs=$(cephnvmf --output stdio --format json subsystem list | grep nqn | sed 's/" nqn": "//' | sed 's/",$// ')
312
+ subs=$(cephnvmf --output stdio --format json subsystem list | jq -r '.subsystems[]. nqn')
449
313
for sub in $subs
450
314
do
451
315
cephnvmf namespace list --subsystem $sub
@@ -455,70 +319,7 @@ jobs:
455
319
456
320
- name : Run bdevperf
457
321
run : |
458
- # see https://spdk.io/doc/nvmf_multipath_howto.html
459
- shopt -s expand_aliases
460
- eval $(make alias)
461
- . .env
462
- set -x
463
- echo -n "ℹ️ Starting bdevperf container"
464
- docker compose up -d bdevperf
465
- sleep 10
466
- echo "ℹ️ bdevperf start up logs"
467
- make logs SVC=bdevperf
468
- eval $(make run SVC=bdevperf OPTS="--entrypoint=env" | grep BDEVPERF_SOCKET | tr -d '\n\r' )
469
- psk_path_prefix="/tmp/psk/"
470
- psk_path="${psk_path_prefix}${NQN}"
471
- mkdir -p ${psk_path}
472
- echo -n "NVMeTLSkey-1:01:YzrPElk4OYy1uUERriPwiiyEJE/+J5ckYpLB+5NHMsR2iBuT:" > ${psk_path}/${NQN}host
473
- chmod 600 ${psk_path}/${NQN}host
474
- docker cp ${psk_path_prefix} ${BDEVPERF_CONTAINER_NAME}:${psk_path_prefix}
475
-
476
- rpc="/usr/libexec/spdk/scripts/rpc.py"
477
- port2=`expr ${NVMEOF_IO_PORT} + 10`
478
- echo "ℹ️ bdevperf bdev_nvme_set_options"
479
- make exec SVC=bdevperf OPTS=-T CMD="$rpc -v -s $BDEVPERF_SOCKET bdev_nvme_set_options -r -1"
480
- echo "ℹ️ bdevperf tcp connect ip: $NVMEOF_IP_ADDRESS port: $NVMEOF_IO_PORT nqn: $NQN"
481
- make exec SVC=bdevperf OPTS=-T CMD="$rpc -v -s $BDEVPERF_SOCKET bdev_nvme_attach_controller -b Nvme0 -t tcp -a $NVMEOF_IP_ADDRESS -s $NVMEOF_IO_PORT -f ipv4 -n $NQN -q ${NQN}host -l -1 -o 10 --psk ${psk_path}/${NQN}host"
482
- echo "ℹ️ verify connection list"
483
- conns=$(cephnvmf --output stdio --format json connection list --subsystem $NQN)
484
- echo $conns | grep -q '"status": 0'
485
- echo $conns | grep -q "\"nqn\": \"${NQN}host\""
486
- echo $conns | grep -q "\"trsvcid\": ${NVMEOF_IO_PORT}"
487
- echo $conns | grep -q "\"traddr\": \"${NVMEOF_IP_ADDRESS}\""
488
- echo $conns | grep -q "\"adrfam\": \"ipv4\""
489
- echo $conns | grep -q "\"trtype\": \"TCP\""
490
- echo $conns | grep -q "\"qpairs_count\": 1"
491
- echo $conns | grep -q "\"connected\": true"
492
- echo $conns | grep -q "\"secure\": true"
493
- echo $conns | grep -q -v "\"secure\": false"
494
- echo $conns | grep -q "\"use_psk\": true"
495
- echo $conns | grep -q "\"use_psk\": false"
496
- con_cnt=$(echo $conns | xargs -n 2 | grep traddr | grep -v "n/a" | wc -l)
497
- if [ $con_cnt -ne 1 ]; then
498
- echo "Number of connections ${con_cnt}, expected 1, list: ${conns}"
499
- exit 1
500
- fi
501
- echo "ℹ️ bdevperf tcp connect ip: $NVMEOF_IP_ADDRESS port: ${port2} nqn: ${NQN}host2"
502
- make exec SVC=bdevperf OPTS=-T CMD="$rpc -v -s $BDEVPERF_SOCKET bdev_nvme_attach_controller -b Nvme1 -t tcp -a $NVMEOF_IP_ADDRESS -s ${port2} -f ipv4 -n $NQN -q "${NQN}host2" -l -1 -o 10"
503
- echo "ℹ️ verify connection list again"
504
- conns=$(cephnvmf --output stdio --format json connection list --subsystem $NQN)
505
- con_cnt=$(echo $conns | xargs -n 2 | grep traddr | grep -v "n/a" | wc -l)
506
- if [ $con_cnt -ne 2 ]; then
507
- echo "Number of connections ${con_cnt}, expected 2, list: ${conns}"
508
- exit 1
509
- fi
510
- echo $conns | grep -q "\"nqn\": \"${NQN}host2\""
511
- echo $conns | grep -q "\"trsvcid\": ${port2}"
512
- echo $conns | grep -q "\"secure\": true"
513
- echo $conns | grep -q "\"secure\": false"
514
- echo $conns | grep -q "\"use_psk\": true"
515
- echo $conns | grep -q "\"use_psk\": false"
516
- echo "ℹ️ bdevperf tcp connect ip: $NVMEOF_IP_ADDRESS port: ${port2} nqn: ${NQN}host2"
517
- echo "ℹ️ bdevperf perform_tests"
518
- eval $(make run SVC=bdevperf OPTS="--entrypoint=env" | grep BDEVPERF_TEST_DURATION | tr -d '\n\r' )
519
- timeout=$(expr $BDEVPERF_TEST_DURATION \* 2)
520
- bdevperf="/usr/libexec/spdk/scripts/bdevperf.py"
521
- make exec SVC=bdevperf OPTS=-T CMD="$bdevperf -v -t $timeout -s $BDEVPERF_SOCKET perform_tests"
322
+ ./tests/ha/demo_test.sh bdevperf_${{ matrix.security_protocol }}
522
323
523
324
- name : Check coredump existence
524
325
if : success() || failure()
@@ -886,7 +687,7 @@ jobs:
886
687
887
688
push-images-to-ceph-registry :
888
689
if : github.event_name == 'release'
889
- needs : [pytest, demo, demo-secure, discovery, ha, atom, build-arm64]
690
+ needs : [pytest, demo, discovery, ha, atom, build-arm64]
890
691
runs-on : ubuntu-latest
891
692
892
693
steps :
0 commit comments