Сводка ситуации
В настоящее время у меня есть две отдельные консоли Powershell (PS), каждая со своим Filewatcher (FW), наблюдающим за созданным файлом (txt-файлом) из каждой сборки.Код практически идентичен, за исключением фильтра уведомлений.Оба в настоящее время вызывают один и тот же сценарий для запуска тестов.У меня есть 2 набора журналов (вывод добавлен в текстовый файл), которые приходят в результате запуска FW, один журнал для сценария TestPS, а другой - результаты теста, откачанные через приглашение CMD (тесты используютSelenium Webdriver).Скрипт TestPS не определяет, какие тесты запускать, но я не могу записать, какой из них был вызван из-за передачи обслуживания от FW к TestPS.Я знаю только, какой из них был вызван из результатов теста после факта.
Порядок действий следующий:
-2 PS Сценарии, каждый сFW запускаются раньше, оставаясь работающими.
-Один FW с фильтром уведомлений "A", местоположение папки просмотра "A"
-Второе FW с фильтром уведомлений "B", местоположение папки просмотра "B""
- запускается одна сборка, создается файл в соответствующем месте и фильтр
- запускается FW, вызывает сценарий Main PS для запуска тестов
What Iхотите это сделать:
-Только один FW запущен ранее, оставлен работающим
-FW с фильтрами уведомлений "A" и "B", расположение папки Watches "C "
-Одно из Builds запускается, запускает местоположение" C "
-FW как-то фильтрует или передает какую-то информацию (такую как имя файла, которое я могу проанализировать в тестовом PS дляключевая фраза или что-то) в TestPS, чтобы указать, какая сборка была запущена.
-FW вызывает основной сценарий PS для запуска тестов (может произойти на том же шаге, что и выше, не обязательно имеет значение)
Я пробовал следующее:
Метод A: 2 PS, каждый со своим FW, следящим за своим местоположением, с вариацией фильтра, каждый с Register-ObjectEvent, который вызывает TestPS.(Текущий / технически работает)
Метод B: 1 PS с 2 FW каждый с изменением фильтра с 1 Register-ObjectEvent, который вызывает TestPS
Метод C: 1 PS с 2 FW каждый с фильтромвариант с 2 Register-ObjectEvents, который вызывает TestPS
Метод D: 1 PS с 1 FW, наблюдающим подкаталоги с 1 Register-ObjectEvent, который вызывает TestPS
Метод E: (Теория) 1 PS с1 FW с 2 фильтрами, который передает какой фильтр был обнаружен в TestPS
Function FileWatcher{
$folder = New-Object IO.FileSystemWatcher " <FilePathA> ", "*.triggerOne" -Property @{
IncludeSubdirectories = $false
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$folderTwo = New-Object IO.FileSystemWatcher " <Either FilePathA or FilePathB> ", "*.triggerTwo" -Property @{
IncludeSubdirectories = $false
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$eventAction = Register-ObjectEvent ($folder) Created -SourceIdentifier FileCreated -Action {
try{
Start-Process -FilePath Powershell -ArgumentList " <FilePath to TestPS> " #Within this powershell I want to somehow be able to determine which Filewatcher was triggered
}
catch [System.Exception]{
Add-Content -Path " <FilePath to Txt file for logging errors> " -Value ("Error: "+$error[0])
Write-Warning ("Error: "+$error[0])
}
}
$eventActionTwo = Register-ObjectEvent ($folderTwo) Created -SourceIdentifier FileCreated -Action {
try{
Start-Process -FilePath Powershell -ArgumentList " <FilePath to TestPS> " #Within this powershell I want to somehow be able to determine which Filewatcher was triggered
}
catch [System.Exception]{
Add-Content -Path " <FilePath to Txt file for logging errors> " -Value ("Error: "+$error[0])
Write-Warning ("Error: "+$error[0])
}
}
}
FileWatcher #Method Call
Результаты:
Метод A: Текущий / Технически работает, но требует настройкикак описано в Сводке.
Метод B: Работает, но нет указания на то, что вызывается / Нет способа создать один объект Register-ObjectEvent с двумя фильтрами
Метод C: Очевидно, что не может иметь два регистра-ObjectEvent с источником FileCreated даже с разными фильтрами.Ошибка: Register-ObjectEvent: невозможно подписаться на указанное событие.Подписчик с идентификатором источника FileCreated уже существует.<...> + CategoryInfo: InvalidArgument: (System.IO.FileSystemWatcher: FileSystemWatcher) [Register-ObjectEvent], ArgumentException + FullyQualifiedErrorId: SUBSCRIBER_EXISTS, Microsoft.PowerShell.Commands.RegisterObjectEventCommand
1065TestPS, сборка которых была запущена
Метод E: Теория, еще не пробовали