#!/bin/bash

TestName="$(basename "$(pwd)")"
export TestName

#shellcheck source=../environment.in
. ./environment

#shellcheck source=../scripts/functions
. "${rscripts}"/functions

start_test

last_job_id=$(last_jobid_or_zero)

migrate_admin_id=$(( last_job_id + 1 ))
migrate_work_id=$(( last_job_id + 2 ))
migrated_job_id=$(( last_job_id + 3 ))
new_backup_id=$(( last_job_id + 4 ))

cat <<END_OF_DATA >$tmp/bconcmds
@$out ${NULL_DEV}
messages
@$out $tmp/migrate.out
run job=Migrate yes
wait jobid=${migrate_admin_id}
@sleep 5
messages
@$out $tmp/migrate_worker_before_status.out
llist jobid=${migrated_job_id}
@$out $tmp/migrate.out
@exec "sh -c 'touch ${tmp}/data/weird-files/file-5'"
run job=ai-backup-bareos-fd level=Incremental yes
wait jobid=${new_backup_id}
@$out $tmp/migrate_worker_before_status.out
llist jobid=${migrate_work_id}
@$out $tmp/migrate.out
cancel jobid=${migrate_work_id}
wait
messages
@$out $tmp/migrate_worker_status.out
llist jobid=${migrate_work_id}
@$out $tmp/migrate_incremental_status.out
llist jobid=${new_backup_id}
@$out ${NULL_DEV}
quit
END_OF_DATA
run_bconsole

expect_grep "jobstatus: R" \
            "$tmp"/migrate_worker_before_status.out \
            "migrate job was stopped prematurely"

expect_grep "jobstatus: A" \
            "$tmp"/migrate_worker_status.out \
            "migrate job was not canceled after incremental"

expect_not_grep "jobstatus: A" \
            "$tmp"/migrate_incremental_status.out \
            "incremental job was canceled during migration"

expect_grep "jobstatus: T" \
            "$tmp"/migrate_incremental_status.out \
            "incremental job did not terminate successfully during migration"

end_test
