Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Текущий статус выполнения всех шагов #842

Closed
DitriXNew opened this issue Jun 22, 2020 · 2 comments
Closed
Labels
enhancement New feature or request

Comments

@DitriXNew
Copy link
Collaborator

Контур
Есть CI контур, там сейчас около 1500 тестов, и все тесты делаются около 16 часов.

Проблема
Бывает, что программист лажанул где то капитально, ну типо сделал ошибку в подписке ПриЗаписи всех объектов.
Система запускает тесты, и 90% тестов падают. В таком раскладе тест проходит за 20+ часов.
И это очень напрягает, так как время впустую.

Решение проблемы
Есть такой файл лога, куда ванеса выгружает сценарии которые выполнены и которые упали, в общем виде он выглядит вот так:

Closing <Stock adjustment as write-off (create)> window.
16:22:16    Script: Open list form "StockAdjustmentAsSurplus"
16:22:19  Closing <Stock adjustments as surplus> window.
16:22:35    Script: Open object form "StockAdjustmentAsSurplus"
16:22:38  Closing <Stock adjustment as surplus (create)> window.
16:22:54    Script: Open list form "PhysicalInventory"
16:22:56  Closing <Physical inventories> window.
16:23:13    Script: Open object form "PhysicalInventory"
16:23:15  Closing <Physical inventory (create)> window.
16:23:32  Feature: C:\BuildAgentSecond\work\161527a3295c878a\features\_0050 Catalogs\_0050Catalogs.feature
16:23:32  11% 
16:23:32    Script: _005010 filling in the "Countries" catalog
16:24:23    Script: _005011 filling in the "Currencies" catalog
16:25:24    Script: _005012 create integration settings to load the currency rate (without external data processing connected)
16:26:17    Script: _005013 filling in the "Companies" catalog
16:27:00    Script: _005017 creation Movement Type for agreement currencies

Я беру в контуре ставлю чтение этого файла, чтобы он выводился сразу в лог самой сборки в режиме онлайна, выглядит это так:
Первый шаг запускает ванесу, и получает PID

$ProcessInfo = New-Object System.Diagnostics.ProcessStartInfo 
$ProcessInfo.FileName = %env.PathTo1CPlatform% 
$ProcessInfo.UseShellExecute = $false 
$ProcessInfo.Arguments = "%env.ConnectionTo1C% /Out %env.LogFile1C% /Execute ""%env.OScript%/lib/vanessa-automation/vanessa-automation.epf"" /TestManager /C""StartFeaturePlayer; VBParams=%system.teamcity.build.workingDir%\va.json""" 
$Process = New-Object System.Diagnostics.Process 
$Process.StartInfo = $ProcessInfo 
$Process.Start() | Out-Null  
$VA_PID = $Process.Id 
echo "##teamcity[setParameter name='env.VA_PID' value='$VA_PID']"

Второй шаг - мониторит нужный файл до тех пор, пока существует PID процесса:

Write-Host "##teamcity[progressStart 'Read VA steps']"
$processID = %env.VA_PID%
$filePath = "%system.teamcity.build.tempDir%/test.txt"
while (!(Test-Path $filePath)) { Start-Sleep 1 }

    $loopBlock = {
        Param($filePath) Get-Content $filePath -Wait -Tail 0 -Encoding UTF8
    }
    $TailLoopJob = start-job -scriptBlock $loopBlock -ArgumentList $filePath
    try {
        do {
            $TailLoopJob | Receive-Job
            If(Get-Process -id $processID -ErrorAction SilentlyContinue ){
                Start-Sleep 1                                
                $waitMore = $true
            } else {
                $waitMore = $false
            }
        } while($waitMore)
    } finally {
        Stop-Job $TailLoopJob
        Remove-Job $TailLoopJob
    }
Write-Host "##teamcity[progressStart 'Read VA steps']"

И теперь мне не хватает инфы, для принятие решения о том, что сборка упала уже, и не дожидаться окончания.
Т.е. еейчас в лог периодами попадает вот такая строка:

16:23:32  11% 

Т.е. я так понимаю, что это процент выполнения фич, но эта инфа вообще ни о чем.
Мне надо чтобы на каждый 1% ванеса писала вот такой лог, включая 0%, т.е. самый старт, чтобы понять - сколько тестов ванеса подхватила, а то можно лажануть в тегах, и потом долго искать лажу:
Берем все тесты за 100%.

Stage:33%;Total:1000;Current:335;Success:200;Error:130;Skipped:5;SuccessPercent:60%;ErrorPercent:35%;TotalTime:20000;TimeToEnd:100000

Тут:

Stage - сколько % тестов прошло на текущий момент
Total - общее количество тестов
Current - Количество тестов, которые выполненны на текущий момент
Success - количество успешных тестов
Error - количество упавших тестов
Skipped - количество пропущенных
SuccessPercent - процент успешных тестов из 100% выполненных на текущий момент
ErrorPercent  - процент упавших тестов из 100% выполненных на текущий момент
TotalTime - текущее затраченное время от начала
TimeToEnd - планируемое время до окончания, ну типо если за 100 секунд прошло 40% тестов, то остальные 60% выполнятся за 150 секунд

Что это мне дает - я могу в сборщике поставить условия по регулярке:
если выполняется условие:

ErrorPercent:[6-9]\d%
@Pr-Mex Pr-Mex added the enhancement New feature or request label Jun 22, 2020
KrapivinAndrey added a commit to KrapivinAndrey/vanessa-automation that referenced this issue Oct 3, 2020
Увеличено количество параметров ПодставитьПараметрыВСтроку
Шаблон для вывод сообщения
Начальное заполнение

Pr-Mex#842
KrapivinAndrey added a commit to KrapivinAndrey/vanessa-automation that referenced this issue Oct 4, 2020
@KrapivinAndrey
Copy link
Contributor

image
Пример реализации

@Pr-Mex
Copy link
Owner

Pr-Mex commented Nov 29, 2020

@Pr-Mex Pr-Mex closed this as completed Nov 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants