param([switch] $FullSuite)
|
$ErrorActionPreference = 'Stop'
|
$workbookSuffix = [guid]::NewGuid().ToString('N')
|
$workbookSchema = 'ticket04_import_' + $workbookSuffix
|
$workbookUser = 'workbook_' + $workbookSuffix.Substring(0, 16)
|
$workbookPassword = [guid]::NewGuid().ToString('N')
|
|
function Invoke-WorkbookSql([string] $sql) {
|
$sql | wsl --exec docker exec -i infrastructure-mysql-1 sh -lc 'MYSQL_PWD="$MYSQL_ROOT_PASSWORD" mysql -uroot --batch'
|
if ($LASTEXITCODE -ne 0) { throw '隔离库管理命令失败' }
|
}
|
|
Push-Location (Join-Path $PSScriptRoot '..')
|
try {
|
# 临时账号仅拥有本次随机库的权限,不启动服务、不修改共享开发库。
|
Invoke-WorkbookSql "CREATE USER '$workbookUser'@'%' IDENTIFIED BY '$workbookPassword'; GRANT ALL PRIVILEGES ON ${workbookSchema}.* TO '$workbookUser'@'%';"
|
$env:WORKBOOK_TEST_SCHEMA = $workbookSchema
|
$env:WORKBOOK_TEST_USER = $workbookUser
|
$env:WORKBOOK_TEST_PASSWORD = $workbookPassword
|
$env:TICKET03_SAMPLE_JSON = (Resolve-Path '../.scratch/simulator-and-data-import-v1/ticket03-sample.json').Path
|
if ($FullSuite) { mvn test }
|
else { mvn -pl ruoyi-admin -am test '-Dtest=ConsoleWorkbookImportMysqlTest' '-Dsurefire.failIfNoSpecifiedTests=false' }
|
if ($LASTEXITCODE -ne 0) { throw '三 Sheet 导入验证失败' }
|
} finally {
|
Remove-Item Env:WORKBOOK_TEST_SCHEMA,Env:WORKBOOK_TEST_USER,Env:WORKBOOK_TEST_PASSWORD,Env:TICKET03_SAMPLE_JSON -ErrorAction SilentlyContinue
|
if ($workbookSchema -notmatch '^ticket04_import_[a-f0-9]{32}$' -or $workbookUser -notmatch '^workbook_[a-f0-9]{16}$') { throw '隔离资源名称校验失败' }
|
Invoke-WorkbookSql "DROP DATABASE IF EXISTS $workbookSchema; DROP USER IF EXISTS '$workbookUser'@'%';"
|
Pop-Location
|
}
|