ADT: различия между версиями

Материал из ALT Linux Wiki
м (категория)
 
(не показано 5 промежуточных версий этого же участника)
Строка 2: Строка 2:
[[Category:Alterator_на_D-Bus]]
[[Category:Alterator_на_D-Bus]]


{| style="border:1px solid #AAA; background:#F9F9F9; width:200px; margin: 0 0 1em 1em; padding:.2em; text-align:center; float: right;" class=noprint
'''ALT Diagnostic Tool (ADT)''' — представляет собой инструмент для запуска тестов в терминале или в графическом интерфейсе.
|-
|[[Image:stub.png]]
|-
| '''Данная страница находится в [[:Категория:Неоконченные страницы|разработке]]'''.<br /><small style="line-height:1.1em;">Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.</small>
|}
<noinclude>[[Категория:Неоконченные страницы|{{PAGENAME}}]]</noinclude>


'''ADT -  ALT Diagnostic Tool''' - представляет собой инструмент для запуска тестов в терминале или в графическом интерфейсе.
== Цель создания ==
 
=== Цель создания ===


Цель создания ADT — упрощение проведения диагностики и анализа работы системы. Работа ADT по поиску доступных тестов, их запуску и получению результатов работы теста осуществляется через D-Bus с использованием Alterator Manager и его модуля Executor.
Цель создания ADT — упрощение проведения диагностики и анализа работы системы. Работа ADT по поиску доступных тестов, их запуску и получению результатов работы теста осуществляется через D-Bus с использованием Alterator Manager и его модуля Executor.
Благодаря подобной схеме реализации утилита диагностики системы получает доступ к интерфейсу взаимодействия на шине D-Bus. С использованием Alterator Manager и D-Bus возвращается информация о результатах выполнения теста.
Благодаря подобной схеме реализации утилита диагностики системы получает доступ к интерфейсу взаимодействия на шине D-Bus. С использованием Alterator Manager и D-Bus возвращается информация о результатах выполнения теста.


=== Назначение ===
== Назначение ==
Утилита ADT позволяет:
*проводить диагностику системы посредством набора подготовленных утилит;
*выводить на экран результаты диагностики;
*сохранять файл журнала с результатами диагностики;
*выполнять операции, требующие привилегий, от учетной записи непривилигированного пользователя.
 
Программа ADT предназначена для:
Программа ADT предназначена для:
#Cистемных администраторов.
*системных администраторов;
#Опытных пользователей.
*опытных пользователей;
#Cлужбы технической поддержки.
*службы технической поддержки.
 
Возможности программы позволяют проводить диагностику системы в графическом приложении и записать файл с отчетом. Запуск инструментов диагностики регулируется системным администратором, позволяя создавать отчеты пользователям, не передавая им административные полномочия.
 
== Установка ==
Для работы с ADT необходимо установить:
*ADT (пакет {{pkgL|adt}});
*[[диагностические инструменты]] (например, пакеты {{pkgL|diag-domain-client}}, {{pkgL|diag-domain-controller}}).
 
Установка ADT:
<syntaxhighlight lang="bash"># apt-get install adt</syntaxhighlight>


Возможности программы позволяют проводить диагностику системы в графическом приложении и записать файл с отчетом. Запуск инструментов диагностики регулируется системным администратором, позволяя создавать отчеты пользователям, не передавая административные полномочия.
{{Note|Вместе с {{pkgL|adt}} устанавливаются:
*{{pkgL|alterator-manager}};
*{{pkgL|alterator-module-executor}};
*{{pkgL|alterator-interface-diag}}.}}


= Установка =
Установка инструментов диагностики состояния клиента домена и состояния контроллера домена:
Команды установки ADT
<syntaxhighlight lang="bash">
<pre>
# apt-get install diag-domain-client diag-domain-controller
# apt-get update
</syntaxhighlight>
# apt-get install adt
</pre>
{{Примечание|Вместе с <tt>adt</tt> устанавливаются:
*<tt>alterator-manager</tt>;
*<tt>alterator-module-executor</tt>;
*<tt>alterator-interface-diag</tt>.}}


= Запуск =
== Запуск ==


=== Запуск службы alterator-manager ===  
=== Запуск службы alterator-manager ===  
<pre>
Запустить и добавить в автозагрузку службу alterator-manager:
# systemctl start alterator-manager.service
 
# systemctl enable alterator-manager.service
<syntaxhighlight lang="bash">
</pre>
# systemctl enable --now alterator-manager.service
</syntaxhighlight>


=== Запуск ADT ===
=== Запуск ADT ===
Вызов утилиты ADT возможен через графическое меню либо через терминал.
[[Файл:Adt_first_launch.png|Внешний вид программы без установленных инструментов диагностики]]


Диагностические инструменты добавляются установкой отдельных пакетов.
Запустить ADT можно:
 
* из командной строки:
*:<syntaxhighlight lang="bash">$ adt</syntaxhighlight>
* в рабочей среде Mate: Меню → «Системные»→ «ADT»;
* в рабочей среде KDE5: «Меню запуска приложений»→ «Настройки»→ «ADT».
 
== Интерфейс ==
 
Внешний вид программы без установленных инструментов диагностики:
 
[[Файл:ADT-00.png|Интерфейс ADT без установленных инструментов диагностики]]
 
Внешний вид программы с инструментами диагностики:
 
[[Файл:ADT-01.png|Интерфейс ADT с установленными инструментами диагностики]]


=== Интерфейс ===
Пользовательский интерфейс программы состоит из секций:
Пользовательский интерфейс программы состоит из секций:
* Список инструментов диагностики.
* Список инструментов диагностики.
Строка 56: Строка 74:
* Действия пользователя.
* Действия пользователя.


= Спецификация =
== Работа с ADT ==
 
Для работы с инструментом диагностики его необходимо выбрать в списке:
 
[[Файл:ADT-01.png|Интерфейс ADT с установленными инструментами диагностики]]
 
Двойной щелчок мыши либо кнопка «Выбрать инструмент» перемещают пользователя к работе с набором тестов инструмента:
 
[[Файл:ADT-02.png|ADT. Набор тестов инструмента диагностики]]
 
В области управления инструментом диагностики доступны опции: «Отчет», «Запустить все тесты», «Назад». Напротив каждого теста находятся кнопки «Запустить» и «Журнал».
 
Нажатие на кнопку «Запустить все тесты» запускает весь набор тестов выбранного инструмента:
 
[[Файл:ADT-03.png|ADT. Результат выполнения набора тестов]]
 
Для того чтобы запустить отдельный тест, необходимо нажать кнопку «Запустить», расположенную справа от названия теста:
 
[[Файл:ADT-04.png|ADT. Запуск отдельного теста]]
 
Кнопка «Журнал» выводит отчет теста от утилиты инструмента диагностики (если инструмент поддерживает такую возможность):
 
[[Файл:ADT-05.png|ADT. Отчет теста]]
 
Для поиска конкретного теста среди доступных можно воспользоваться строкой «Фильтр»:
 
[[Файл:ADT-06.png|ADT. Фильтр]]
 
Кнопка «Отчет» сохраняет в файл полный текст информации инструмента диагностики (если инструмент поддерживает такую
возможность).
 
[[Файл:ADT-07.png|ADT. Сохранение отчета в файл]] 
 
 
{{note|Для возможности генерирования файла с отчетом, инструмент диагностики должен поддерживать опции <tt>-r</tt>, <tt>--report</tt>.}}
 
== Руководство администратора ==
 
=== Спецификация ===
* [https://gitlab.basealt.space/alt/alterator-entry/-/blob/master/doc/README.md Документация] относится к [[Alterator-manager|Alterator Manager]], компоненту [[Alterator_на_D-Bus|Alterator на D-Bus]].
* [https://gitlab.basealt.space/alt/alterator-entry/-/blob/master/doc/README.md Документация] относится к [[Alterator-manager|Alterator Manager]], компоненту [[Alterator_на_D-Bus|Alterator на D-Bus]].
* [https://gitlab.basealt.space/alt/adt Код проекта]
* [https://gitlab.basealt.space/alt/adt Код проекта]
Строка 65: Строка 121:
* [https://gitlab.basealt.space/alt/alterator-manager/-/blob/master/docs/README-ru.md?ref_type=heads#executor executor]
* [https://gitlab.basealt.space/alt/alterator-manager/-/blob/master/docs/README-ru.md?ref_type=heads#executor executor]


== Руководство пользователя ==
'''Alterator-manager''' — модульный сервис, предназначенный для конфигурации посредством D-Bus. Весь функционал реализуется в виде модулей, а интерфейсы описываются в конфигурационных файлах «alterator entry».


Для работы с инструментом диагностики его необходимо выбрать в списке.
Система межпроцессного взаимодействия D-Bus — механизм для обмена сообщениями между различными программами в
операционной системе. D-Bus позволяет программам отправлять сообщения и вызывать методы других программ, обеспечивая совместную работу и координацию между приложениями. D-Bus представляет из себя совокупность следующих шин:
* '''Системная шина''' — создаётся при старте демона D-Bus. Предназначена для взаимодействия между различными системными службами, а также взаимодействие пользовательских приложений с этими службами;
* '''Сессионная шина''' — создаётся для каждого пользователя во время авторизации как отдельный экземпляр. Предназначена для взаимодействия между пользовательскими приложениями в рамках одной сессии.


[[Файл:Adt_overlook.png|Список инструментов]] 
На шинах D-Bus регистрируются '''службы''', предоставляющие определенные функции. Они могут быть как частью операционной системы, так и сторонними приложениями.


Двойной щелчок мыши либо кнопка "Выбрать инструмент" перемещают пользователя к работе с набором тестов инструмента. Кнопка "Запустить все" автоматически запускает весь набор тестов выбранного инструмента.
Для каждой службы заводятся объекты, представляющие собой абстракции реальных ресурсов или служб.


[[Файл:Adt_test_overlook.png|Запуск всего набора тестов выбранного инструмента|1000x1000пкс]]
У каждого объекта есть один или несколько интерфейсов, которые определяют, какие действия можно совершить с объектом. Интерфейсы описывают методы (функции), которые можно вызвать, свойства, которые можно запросить или изменить, и сигналы, которые объект может отправлять.


В области управления инструментом диагностики доступны опции: "Отчет", "Запустить все тесты", "Назад". Напротив каждого теста находятся кнопки "Запустить" и "Журнал".
'''Объекты, создаваемые службами'''. Каждая служба может создавать объекты, которые представляют собой абстракции реальных ресурсов или служб. Например, служба сетевого менеджера может предоставлять объекты для каждого сетевого соединения.


Пример выполнения всех тестов:
'''Интерфейсы объектов'''. У каждого объекта есть один или несколько интерфейсов, которые определяют, какие действия можно совершить с объектом. Интерфейсы описывают методы (функции), которые можно вызвать, свойства, которые можно запросить или изменить, и сигналы, которые объект может отправлять.


[[Файл:Adt_result.png|Пример выполнения всех тестов|1000x1000пкс]]
Каждая служба поддерживающая D-Bus представлена в виде объектов на этих шинах. А взаимодействие между ними
осуществляется посредством интерфейсов и методов этих объектов.


Кнопка "Журнал" выводит отчет теста от утилиты инструмента диагностики (если инструмент поддерживает такую возможность):  
На системной шине методы запускаются с правами root и имеют высокие привилегии. На сессионной шине методы запускаются с правами пользователя и не имеют доступа к системным ресурсам, которые требуют высоких привилегий.
С точки зрения [[alterator-manager]] диагностический инструмент является объектом на D-Bus, описанном в двух файлах «alterator entry»:
*''.backend'' — описывает интерфейс диагностического инструмента, обеспечивающий взаимодействие с D-Bus. В нем же описываются методы интерфейса: info, run, list, report;
*''.diagnostictool'' — описывает отображение диагностического инструмента в ADT. Содержит информацию о тестах, доступных в рамках описываемого диагностического инструмента.


[[Файл:Adt_report.png|Отчет]]
'''alterator-module-executor''' — модуль альтератора для обработки файлов ''.backend'' и запуска исполняемых файлов.
 
Кнопка "Отчет" сохраняет в файл полный текст информации инструмента диагностики (если инструмент поддерживает такую возможность).
=== Алгоритм работы ===
Алгоритм работы ALT Diagnostic Tool:
# Systemd служба alterator-manager во время запуска создает на шине D-Bus службу с именем «ru.basealt.alterator».
# Systemd служба alterator-module-executor собирает информацию из файлов ''.backend'' обо всех установленных диагностических инструментах и создает объекты на системной и сессионных (в зависимости от расположения backend-файлов) шинах D-Bus с именами вида «ru.basealt.alterator.<имя инструмента>».
# ADT формирует список диагностических инструментов, обращаясь к D-Bus и получая информацию обо всех объектах сервиса «ru.basealt.alterator», имеющих интерфейс «ru.basealt.alterator.diag1».
# Для каждого диагностического инструмента ADT вызывает на D-Bus метод List, чтобы получить список всех возможных тестов.
# ADT запускает через D-Bus метод Run, передав ему в качестве параметра имя теста.
# По коду возврата ADT получает информацию об успешном/не успешном прохождении теста, а из данных, полученных из stderr и stdout формирует журнал выполнения теста.
 
Блок-схема взаимодействия компонентов:


== Руководство администратора ==
[[Файл:Adt_scheme_illustration.png|Схема взаимодействия компонентов]]
[[Файл:Adt_scheme_illustration.png|Схема взаимодействия компонентов]]
=== Алгоритм работы ALT Diagnostic Tool ===
#Systemd служба alterator-manager во время запуска создает на шине D-Bus службу с именем "ru.basealt.alterator";
#Systemd служба alterator-module-executor собирает информацию из файлов .backend обо всех установленных диагностических инструментах и создает объекты на D-Bus;
#ADT формирует список диагностических инструментов, обращаясь к D-Bus службе "ru.basealt.alterator";
#Таким же способом ADT запускает тест и получает информацию о результате его выполнения.


=== Разработка инструмента диагностики ===
=== Разработка инструмента диагностики ===
Строка 101: Строка 166:


Минимальный набор файлов для инструмента диагностики в ADT:
Минимальный набор файлов для инструмента диагностики в ADT:
* исполняемый файл
* исполняемый файл;
* файл ''.backend''  
* файлы ''.backend'' и ''.diagnostictool'' (или ''.diag''), описывающие сущности Alterator Entry.
* файл ''.diagnostic''
 
''.backend'' и ''.diagnostic'' описывают сущности Alterator Entry
{{note|Оба варианта ''.diag'' и ''.diagnostictool'' считаются верными.}}
 
===== Требования к исполняемому файлу =====
 
Исполняемый файл может быть как бинарным, так и текстовым (написанным на интерпретируемом языке). Файл должен поддерживать запуск в следующем виде:


==== Требования к исполняемому файлу ====
/путь_к_исполняемому_файлу {param}


Может быть как бинарным, так и текстовым (написанным на интерпретируемом языке). Должен поддерживать запуск в следующем виде:
где {param} — означает имя теста, который необходимо выполнить.


/путь_к_исполняемому_файлу {param}
При успешном завершении теста исполняемый файл должен завершиться с кодом возврата 0. При не успешном завершении теста — с кодом возврата отличным от 0.


{param} - означает имя теста, который необходимо выполнить.
При успешном завершении теста исполняемый файл должен завершиться с кодом возврата 0. При не успешном завершении теста - с кодом возврата отличным от 0.
Лог выполнения нужно выводить в стандартный вывод.
Лог выполнения нужно выводить в стандартный вывод.


Также необходима поддержка следующих ключей:
Необходима также поддержка следующих ключей:
* <tt>-l</tt> или <tt>--list</tt> - вывести список тестов. Список необходимо выводить в стандартный вывод. Имя каждого теста с новой строки.
* <tt>-l</tt> или <tt>--list</tt> вывести список тестов. Список необходимо выводить в стандартный вывод. Имя каждого теста с новой строки;
* <tt>-r</tt> или <tt>--report</tt> - сгенерировать файл с отчетом. Файл с отчетом может представлять из себя как текстовые данные, так и бинарные (например архив). Его содержимое необходимо направить в стандартный вывод. ADT получит этот вывод и сохранит в файл с именем вида "имя_инструмента_дата" и суффиксом, указанным в файле .diagnostictool.
* <tt>-r</tt> или <tt>--report</tt> сгенерировать файл с отчетом. Файл с отчетом может представлять собой как текстовые данные, так и бинарные (например, архив). Его содержимое необходимо направить в стандартный вывод. ADT получит этот вывод и сохранит в файл с именем вида «имя_инструмента_дата» и суффиксом, указанным в файле ''.diagnostictool''.
 
Исполняемый файл рекомендуется разместить в каталоге согласно стандарту FHS (Filesystem Hierarchy Standard).
 
===== Рекомендации к файлам .backend и .diagnostictool  =====
 
Для описания файлов ''.backend'' и ''.diagnostictool'' следует воспользоваться [https://gitlab.basealt.space/alt/alterator-entry/-/tree/specification/doc спецификацией Alterator Entry].
 
Файлы ''.backend'' и ''.diagnostictool'' являются текстовыми и содержат описание в виде секций. Имеют следующий синтаксис:
<syntaxhighlight lang="ini">
[имя секции1]
Поле1 = значение
Поле2 = значение
ПолеN = значение
[имя секции2]
Поле1 = значение
Поле2 = значение
ПолеN = значение
[имя секцииN]
Поле1 = значение
Поле2 = значение
ПолеN = значение
</syntaxhighlight>


==== Рекомендации к файлам ====
Где:
*все поля чувствительны к регистру и должны начинаться с заглавной буквы;
*перед и после знака «=» пробелы;
*значения полей указываются без кавычек;
*значения могут содержать пробелы;
*если строка начинается с «#», то она считается комментарием и при чтении информации из файла игнорируется.


# Исполняемый файл рекомендуется разместить в каталоге согласно стандарту FHS (Filesystem Hierarchy Standard)
Имя каталога должно соответствовать суффиксу в имени файла:  
# Для описания файлов .backend и .diagnostictool следует воспользоваться [https://gitlab.basealt.space/alt/alterator-entry/-/tree/specification/doc спецификацией Alterator Entry].
* {{path|./backends}} для файла ''.backend'';
Имя директории соответствует суффиксу в имени файла:  
* {{path|./diagnostictools}} для файла ''.diagnostictool'' (или ''.diag'').
* ./backends для файла .backend
* ./diagnostictools для файла .diagnostictool


===== .diagnostictool =====
===== Файл .diagnostictool =====


Имеет имя вида <имя диагностического инструмента>.diagnostictool
Файл ''.diagnostictool'' имеет имя вида {{path|<имя диагностического инструмента>.diagnostictool}}.


Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге  
Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге {{path|/usr/share/alterator/diagnostictools/}}. В противном случае, рекомендуется использовать каталог {{path|/etc/alterator/diagnostictools/}}.
<pre>/usr/share/alterator/diagnostictool/</pre>
В противном случае, рекомендуется использовать каталог:
<pre>/etc/alterator/diagnostictool/</pre>


Файл .diagnostictool хранит в себе информацию для GUI. Содержит секции [Alterator Entry] и секции, описывающие варианты тестирования:
Файл ''.diagnostictool'' содержит информацию для GUI. Он включает секцию [Alterator Entry] и секции, описывающие варианты тестирования.


'''Секция Alterator Entry'''
Секция Alterator Entry:
*[Alterator Entry]
*[Alterator Entry]
** Name - идентификатор инструмента (имя без пробелов)
** Name идентификатор инструмента (имя без пробелов);
** Type - всегда <code>Diagnostictool</code>
** Type всегда <tt>Diagnostictool</tt>;
** DisplayName - идентификатор
** DisplayName — имя инструмента;
** DisplayName[локаль] - имя инструмента, выводящиеся в GUI с использованием интерфейса с использованием указанной в скобках локали
** DisplayName[локаль] имя инструмента, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали;
** Comment - описание инструмента
** Comment описание инструмента;
** Comment[локаль] - описание, выводящиеся в GUI с использованием интерфейса с использованием указанной в скобках локали
** Comment[локаль] описание, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали;
** Icon - имя файла с иконкой
** Icon имя файла с иконкой;
** ReportSuffix - суффикс файла с отчетом. Этот файл будет создаваться при вызове метода <code>Report</code>
** ReportSuffix суффикс файла с отчетом. Этот файл будет создаваться при вызове метода <tt>Report</tt>.


'''Секции, описывающие варианты тестирования'''
Секции, описывающие варианты тестирования:
* [Название секции соответствует названию теста]
* [Название секции соответствует названию теста]
** DisplayName - идентификатор  
** DisplayName идентификатор теста (имя без пробелов);
** DisplayName[локаль] - имя теста, выводящиеся в GUI с использованием интерфейса с использованием указанной в скобках локали
** DisplayName[локаль] имя теста, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали;
** Comment - описание теста
** Comment описание теста;
** Comment[локаль] - описание теста, выводящиеся в GUI с использованием интерфейса с использованием указанной в скобках
** Comment[локаль] описание теста, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали.


===== .backend =====
===== Файл .backend =====


Имеет имя вида <имя диагностического инструмента>.ru.basealt.alterator.backend
Файл ''.backend'' имеет имя вида {{path|<имя диагностического инструмента>.ru.basealt.alterator.backend}}.


Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге  
Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге:
<pre>/usr/share/alterator/backends/system - если объект необходимо создать на системной шине</pre>
*{{path|/usr/share/alterator/backends/system}} — если объект необходимо создать на системной шине;
<pre>/usr/share/alterator/backends/user - если объект необходимо создать на сессионной шине</pre>
*{{path|/usr/share/alterator/backends/user}} — если объект необходимо создать на сессионной шине;
В противном случае, рекомендуется использовать каталог:
В противном случае, рекомендуется использовать каталог:
<pre>/etc/alterator/backends/system/ - если объект необходимо создать на системной шине</pre>
*{{path|/etc/alterator/backends/system/}} — если объект необходимо создать на системной шине;
<pre>/etc/alterator/backends/user/ - если объект необходимо создать на сессионной шине</pre>
*{{path|/etc/alterator/backends/user/}} — если объект необходимо создать на сессионной шине.
 


* [Alterator Entry] - описывает информацию об объекте и содержит следующие поля:
Секция Alterator Entry описывает информацию об объекте и содержит следующие поля:
** Type - содержит тип метода. Всегда имеет значение <code>Backend</code>
* [Alterator Entry]
** Module - всегда <code>executor</code>
** Type содержит тип метода. Всегда имеет значение <tt>Backend</tt>;
** Name - идентификатор инструмента (имя без пробелов)
** Module всегда <tt>executor</tt>;
** Interface - идентификатор интерфейса. Имеет значение <code>ru.basealt.alterator.diag1</code>. Можно сократить до <code>diag1</code>
** Name идентификатор инструмента (имя без пробелов);
** thread_limit - Указывает максимальное число потоков при одновременном выполнении нескольких методов.
** Interface идентификатор интерфейса. Имеет значение <tt>ru.basealt.alterator.diag1</tt>. Можно сократить до <tt>diag1</tt>;
* [Info] описывает метод Info и содержит следующие поля:
** thread_limit — указывает максимальное число потоков при одновременном выполнении нескольких методов.
** execute - в качестве параметра необходимо передать команду, выводящую содержимое файла .diagnostictool (cat <путь к файлу>)
Секция Info описывает метод Info и содержит следующие поля:
** stdout_bytes - всегда <code>enabled</code>?
* [Info]
** thread_limit - всегда <code>3</code>?
** execute в качестве параметра необходимо передать команду, выводящую содержимое файла ''.diagnostictool'' ({{cmd|cat <путь к файлу>}});
** action_id - содержит идентификатор метода. Всегда имеет значение Info
** stdout_bytes всегда <tt>enabled</tt>;
* [Run] описывает метод Run и содержит следующие поля:
** thread_limit всегда <tt>3</tt>;
** execute - содержит строку для запуска тестов вида <code><путь к исполняемому файлу> {param}</code>
** action_id содержит идентификатор метода. Всегда имеет значение <tt>Info</tt>.
** stdout_signal_name - всегда <code>diag1_stdout_signal</code>. ADT ожидает сигнал с таким именем.
Секция Run описывает метод Run и содержит следующие поля:
** stderr_signal_name - всегда <code>diag1_stderr_signal</code>. ADT ожидает сигнал с таким именем.
* [Run]
** action_id - содержит идентификатор метода. Всегда имеет значение <code>Run</code>
** execute содержит строку для запуска тестов вида {{cmd|<путь к исполняемому файлу> {param} }};
* [List] описывает метод List и содержит следующие поля:
** stdout_signal_name всегда <tt>diag1_stdout_signal</tt>. ADT ожидает сигнал с таким именем;
** execute - содержит команду для вывода списка всех возможных тестов в виде <code><путь к исполняемому файлу> -l</code>
** stderr_signal_name всегда <tt>diag1_stderr_signal</tt>. ADT ожидает сигнал с таким именем;
** stdout_strings - всегда <code>enabled</code>
** action_id содержит идентификатор метода. Всегда имеет значение <tt>Run</tt>.
** action_id - содержит идентификатор метода. Всегда имеет значение <code>List</code>
Секция List описывает метод List и содержит следующие поля:
* [List]
** execute содержит команду для вывода списка всех возможных тестов в виде {{cmd|<путь к исполняемому файлу> -l}};
** stdout_strings всегда <tt>enabled</tt>;
** action_id содержит идентификатор метода. Всегда имеет значение <tt>List</tt>.
Секция Report содержит следующие поля:
* [Report]
* [Report]
** execute = содержит команду для создания отчета в виде <code><путь к исполняемому файлу> -R</code>
** execute содержит команду для создания отчета в виде {{cmd|<путь к исполняемому файлу> -R}};
** stdout_bytes = enabled
** stdout_bytes — всегда <tt>enabled</tt>;
** action_id = Report
** action_id — всегда <tt>Report</tt>.


=== Пример инструмента диагностики ===
=== Пример инструмента диагностики ===


Ниже представлен пример диагностического инструмента для определения производителя материнской платы.
Ниже представлен пример диагностического инструмента для определения производителя материнской платы.
Пример состоит из трех файлов:
Пример состоит из трех файлов:
* исполняемый файл: /usr/bin/diag-example
* исполняемый файл: {{path|/usr/bin/diag-example}};
* файл .backend: /usr/share/alterator/backends/diag-example.backend
* файл .backend: {{path|/usr/share/alterator/backends/diag-example.backend}};
* файл .diag, описывающий тесты: /usr/share/alterator/diag/diag-example.diag
* файл .diag, описывающий тесты: {{path|/usr/share/alterator/diagnostictools/diag-example.diag}}.
 
[https://gitlab.basealt.space/alt/diag-example Шаблон примера]


==== Исполняемый файл ====
==== Исполняемый файл ====
Содержимое исполняемого файла {{path|/usr/bin/diag-example}}:


<div class="toccolours mw-collapsible" style="width:1200px; overflow:auto;">
<div class="toccolours mw-collapsible" style="width:900px; overflow:auto;">
<div style="font-weight:bold;line-height:1.6;">Example diagnostic tool</div>
<div style="font-weight:bold;line-height:1.6;">Example diagnostic tool</div>
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
<pre>
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
#
#
Строка 331: Строка 428:
exit "$global_retval"
exit "$global_retval"


</pre>
</syntaxhighlight>
</div></div>
</div></div>


==== Файл .backend ====
==== Файл .backend ====
<pre>
Содержимое файла {{path|/usr/share/alterator/backends/diag-example.backend}}:
<syntaxhighlight lang="ini">
[Alterator Entry]
[Alterator Entry]
Type = Backend
Type = Backend
Строка 343: Строка 441:


[Info]
[Info]
execute = cat /usr/share/alterator/diag/diag-example.diag
execute = cat /usr/share/alterator/diagnostictools/diag-example.diag
stdout_bytes = enabled
stdout_bytes = enabled
stdout_byte_limit = 200000
stdout_byte_limit = 200000
Строка 361: Строка 459:
action_id = List
action_id = List


</pre>
</syntaxhighlight>


==== Файл .diag, описывающий тесты ====
==== Файл .diag, описывающий тесты ====
 
Содержимое файла {{path|/usr/share/alterator/diagnostictools/diag-example.diag}}:
<pre>
<syntaxhighlight lang="ini">
[Alterator Entry]
[Alterator Entry]
Type = diag
Type = diag
Строка 376: Строка 474:


[is_gigabyte]
[is_gigabyte]
DisplayName = Is motherboard manufacturer - Gigabyte?
DisplayName = Is motherboard manufacturer Gigabyte?
DisplayName[ru] = Производитель материнской платы - Gigabyte?
DisplayName[ru] = Производитель материнской платы Gigabyte?
</pre>
</syntaxhighlight>


==== Отображение диагностического инструмента в интерфейсе ADT ====
==== Отображение диагностического инструмента в интерфейсе ADT ====
{{note|Для того чтобы новый диагностический инструмент отображался интерфейсе ADT, необходимо перезапустить  alterator-manager:
<syntaxhighlight lang="bash">
# systemctl restart alterator-manager.service
</syntaxhighlight>}}


[[Файл:Adt_example.png|Пример отображения диагностического инструмента в интерфейсе ADT]]
[[Файл:Adt_example.png|Пример отображения диагностического инструмента в интерфейсе ADT]]
Строка 386: Строка 490:
[[Файл:Adt_example_test.png|Набор тестов инструмента]]
[[Файл:Adt_example_test.png|Набор тестов инструмента]]


[https://gitlab.basealt.space/alt/diag-example Шаблон примера]


= Ошибки и нестандартные случаи =
== Ошибки и нестандартные случаи ==


=== Диагностический инструмент не отображается ===
=== Диагностический инструмент не отображается ===


Необходимо проверить объект alterator-manager с именем “ru.basealt.alterator” на системной шине D-Bus. Используйте утилиту D-Feet:
Необходимо проверить объект alterator-manager с именем «ru.basealt.alterator» на системной шине D-Bus.
<pre>
 
# apt-get update
Для этого можно использовать утилиту D-Feet ({{pkgL|d-feet}}) или D-Spy ({{pkgL|dspy}}).
# apt-get install d-feet
 
</pre>
В D-Feet и D-Spy можно посмотреть объекты заведенные как на системной шине, так и на сессионной шине для текущего пользователя.
В D-Feet можно посмотреть объекты заведенные как на системной шине, так и на сессионной шине для текущего пользователя:
 
D-Feet:


[[Файл:Dfeet_diag-domain-client.png|D-Feet, системная шина]]
[[Файл:Dfeet_diag-domain-client.png|D-Feet, системная шина]]
Строка 403: Строка 507:
[[Файл:session_bus.png|D-Feet, сессионная шина]]
[[Файл:session_bus.png|D-Feet, сессионная шина]]


= Публикации на тему =
D-Spy:
 
[[Файл:Dspy_diag-domain-client.png|D-Spy, сессионная шина]]
 
== Публикации на тему ==
* Тезисы [[Pereslavl_summer_2023|XIX конференции разработчиков свободных программ 2023]], [https://www.altlinux.org/Images.www.altlinux.org/f/f5/Pereslavl-summer-2023-Ossdevconf-XIX.pdf Утилита диагностики системы ALT Diagnoctic Tool, Алексей Сапрунов]
* Тезисы [[Pereslavl_summer_2023|XIX конференции разработчиков свободных программ 2023]], [https://www.altlinux.org/Images.www.altlinux.org/f/f5/Pereslavl-summer-2023-Ossdevconf-XIX.pdf Утилита диагностики системы ALT Diagnoctic Tool, Алексей Сапрунов]
* Системный администратор, [https://samag.ru/archive/article/4906 Linux-инструмент диагностики с графическим интерфейсом – ALT Diagnostic Tool, Aнтон Абрамов]
* Системный администратор, [https://samag.ru/archive/article/4906 Linux-инструмент диагностики с графическим интерфейсом – ALT Diagnostic Tool, Aнтон Абрамов]

Текущая версия от 20:35, 10 октября 2024


ALT Diagnostic Tool (ADT) — представляет собой инструмент для запуска тестов в терминале или в графическом интерфейсе.

Цель создания

Цель создания ADT — упрощение проведения диагностики и анализа работы системы. Работа ADT по поиску доступных тестов, их запуску и получению результатов работы теста осуществляется через D-Bus с использованием Alterator Manager и его модуля Executor. Благодаря подобной схеме реализации утилита диагностики системы получает доступ к интерфейсу взаимодействия на шине D-Bus. С использованием Alterator Manager и D-Bus возвращается информация о результатах выполнения теста.

Назначение

Утилита ADT позволяет:

  • проводить диагностику системы посредством набора подготовленных утилит;
  • выводить на экран результаты диагностики;
  • сохранять файл журнала с результатами диагностики;
  • выполнять операции, требующие привилегий, от учетной записи непривилигированного пользователя.

Программа ADT предназначена для:

  • системных администраторов;
  • опытных пользователей;
  • службы технической поддержки.

Возможности программы позволяют проводить диагностику системы в графическом приложении и записать файл с отчетом. Запуск инструментов диагностики регулируется системным администратором, позволяя создавать отчеты пользователям, не передавая им административные полномочия.

Установка

Для работы с ADT необходимо установить:

Установка ADT:

# apt-get install adt
Примечание: Вместе с adt устанавливаются:


Установка инструментов диагностики состояния клиента домена и состояния контроллера домена:

# apt-get install diag-domain-client diag-domain-controller

Запуск

Запуск службы alterator-manager

Запустить и добавить в автозагрузку службу alterator-manager:

# systemctl enable --now alterator-manager.service

Запуск ADT

Запустить ADT можно:

  • из командной строки:
    $ adt
    
  • в рабочей среде Mate: Меню → «Системные»→ «ADT»;
  • в рабочей среде KDE5: «Меню запуска приложений»→ «Настройки»→ «ADT».

Интерфейс

Внешний вид программы без установленных инструментов диагностики:

Интерфейс ADT без установленных инструментов диагностики

Внешний вид программы с инструментами диагностики:

Интерфейс ADT с установленными инструментами диагностики

Пользовательский интерфейс программы состоит из секций:

  • Список инструментов диагностики.
  • Описание инструмента.
  • Действия пользователя.

Работа с ADT

Для работы с инструментом диагностики его необходимо выбрать в списке:

Интерфейс ADT с установленными инструментами диагностики

Двойной щелчок мыши либо кнопка «Выбрать инструмент» перемещают пользователя к работе с набором тестов инструмента:

ADT. Набор тестов инструмента диагностики

В области управления инструментом диагностики доступны опции: «Отчет», «Запустить все тесты», «Назад». Напротив каждого теста находятся кнопки «Запустить» и «Журнал».

Нажатие на кнопку «Запустить все тесты» запускает весь набор тестов выбранного инструмента:

ADT. Результат выполнения набора тестов

Для того чтобы запустить отдельный тест, необходимо нажать кнопку «Запустить», расположенную справа от названия теста:

ADT. Запуск отдельного теста

Кнопка «Журнал» выводит отчет теста от утилиты инструмента диагностики (если инструмент поддерживает такую возможность):

ADT. Отчет теста

Для поиска конкретного теста среди доступных можно воспользоваться строкой «Фильтр»:

ADT. Фильтр

Кнопка «Отчет» сохраняет в файл полный текст информации инструмента диагностики (если инструмент поддерживает такую возможность).

ADT. Сохранение отчета в файл


Примечание: Для возможности генерирования файла с отчетом, инструмент диагностики должен поддерживать опции -r, --report.


Руководство администратора

Спецификация

Компоненты

Alterator-manager — модульный сервис, предназначенный для конфигурации посредством D-Bus. Весь функционал реализуется в виде модулей, а интерфейсы описываются в конфигурационных файлах «alterator entry».

Система межпроцессного взаимодействия D-Bus — механизм для обмена сообщениями между различными программами в операционной системе. D-Bus позволяет программам отправлять сообщения и вызывать методы других программ, обеспечивая совместную работу и координацию между приложениями. D-Bus представляет из себя совокупность следующих шин:

  • Системная шина — создаётся при старте демона D-Bus. Предназначена для взаимодействия между различными системными службами, а также взаимодействие пользовательских приложений с этими службами;
  • Сессионная шина — создаётся для каждого пользователя во время авторизации как отдельный экземпляр. Предназначена для взаимодействия между пользовательскими приложениями в рамках одной сессии.

На шинах D-Bus регистрируются службы, предоставляющие определенные функции. Они могут быть как частью операционной системы, так и сторонними приложениями.

Для каждой службы заводятся объекты, представляющие собой абстракции реальных ресурсов или служб.

У каждого объекта есть один или несколько интерфейсов, которые определяют, какие действия можно совершить с объектом. Интерфейсы описывают методы (функции), которые можно вызвать, свойства, которые можно запросить или изменить, и сигналы, которые объект может отправлять.

Объекты, создаваемые службами. Каждая служба может создавать объекты, которые представляют собой абстракции реальных ресурсов или служб. Например, служба сетевого менеджера может предоставлять объекты для каждого сетевого соединения.

Интерфейсы объектов. У каждого объекта есть один или несколько интерфейсов, которые определяют, какие действия можно совершить с объектом. Интерфейсы описывают методы (функции), которые можно вызвать, свойства, которые можно запросить или изменить, и сигналы, которые объект может отправлять.

Каждая служба поддерживающая D-Bus представлена в виде объектов на этих шинах. А взаимодействие между ними осуществляется посредством интерфейсов и методов этих объектов.

На системной шине методы запускаются с правами root и имеют высокие привилегии. На сессионной шине методы запускаются с правами пользователя и не имеют доступа к системным ресурсам, которые требуют высоких привилегий. С точки зрения alterator-manager диагностический инструмент является объектом на D-Bus, описанном в двух файлах «alterator entry»:

  • .backend — описывает интерфейс диагностического инструмента, обеспечивающий взаимодействие с D-Bus. В нем же описываются методы интерфейса: info, run, list, report;
  • .diagnostictool — описывает отображение диагностического инструмента в ADT. Содержит информацию о тестах, доступных в рамках описываемого диагностического инструмента.

alterator-module-executor — модуль альтератора для обработки файлов .backend и запуска исполняемых файлов.

Алгоритм работы

Алгоритм работы ALT Diagnostic Tool:

  1. Systemd служба alterator-manager во время запуска создает на шине D-Bus службу с именем «ru.basealt.alterator».
  2. Systemd служба alterator-module-executor собирает информацию из файлов .backend обо всех установленных диагностических инструментах и создает объекты на системной и сессионных (в зависимости от расположения backend-файлов) шинах D-Bus с именами вида «ru.basealt.alterator.<имя инструмента>».
  3. ADT формирует список диагностических инструментов, обращаясь к D-Bus и получая информацию обо всех объектах сервиса «ru.basealt.alterator», имеющих интерфейс «ru.basealt.alterator.diag1».
  4. Для каждого диагностического инструмента ADT вызывает на D-Bus метод List, чтобы получить список всех возможных тестов.
  5. ADT запускает через D-Bus метод Run, передав ему в качестве параметра имя теста.
  6. По коду возврата ADT получает информацию об успешном/не успешном прохождении теста, а из данных, полученных из stderr и stdout формирует журнал выполнения теста.

Блок-схема взаимодействия компонентов:

Схема взаимодействия компонентов

Разработка инструмента диагностики

Формат файлов инструмента диагностики

Минимальный набор файлов для инструмента диагностики в ADT:

  • исполняемый файл;
  • файлы .backend и .diagnostictool (или .diag), описывающие сущности Alterator Entry.
Примечание: Оба варианта .diag и .diagnostictool считаются верными.


Требования к исполняемому файлу

Исполняемый файл может быть как бинарным, так и текстовым (написанным на интерпретируемом языке). Файл должен поддерживать запуск в следующем виде:

/путь_к_исполняемому_файлу {param}

где {param} — означает имя теста, который необходимо выполнить.

При успешном завершении теста исполняемый файл должен завершиться с кодом возврата 0. При не успешном завершении теста — с кодом возврата отличным от 0.

Лог выполнения нужно выводить в стандартный вывод.

Необходима также поддержка следующих ключей:

  • -l или --list — вывести список тестов. Список необходимо выводить в стандартный вывод. Имя каждого теста с новой строки;
  • -r или --report — сгенерировать файл с отчетом. Файл с отчетом может представлять собой как текстовые данные, так и бинарные (например, архив). Его содержимое необходимо направить в стандартный вывод. ADT получит этот вывод и сохранит в файл с именем вида «имя_инструмента_дата» и суффиксом, указанным в файле .diagnostictool.

Исполняемый файл рекомендуется разместить в каталоге согласно стандарту FHS (Filesystem Hierarchy Standard).

Рекомендации к файлам .backend и .diagnostictool

Для описания файлов .backend и .diagnostictool следует воспользоваться спецификацией Alterator Entry.

Файлы .backend и .diagnostictool являются текстовыми и содержат описание в виде секций. Имеют следующий синтаксис:

[имя секции1]
Поле1 = значение
Поле2 = значение
ПолеN = значение
[имя секции2]
Поле1 = значение
Поле2 = значение
ПолеN = значение
[имя секцииN]
Поле1 = значение
Поле2 = значение
ПолеN = значение

Где:

  • все поля чувствительны к регистру и должны начинаться с заглавной буквы;
  • перед и после знака «=» пробелы;
  • значения полей указываются без кавычек;
  • значения могут содержать пробелы;
  • если строка начинается с «#», то она считается комментарием и при чтении информации из файла игнорируется.

Имя каталога должно соответствовать суффиксу в имени файла:

  • ./backends для файла .backend;
  • ./diagnostictools для файла .diagnostictool (или .diag).
Файл .diagnostictool

Файл .diagnostictool имеет имя вида <имя диагностического инструмента>.diagnostictool.

Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге /usr/share/alterator/diagnostictools/. В противном случае, рекомендуется использовать каталог /etc/alterator/diagnostictools/.

Файл .diagnostictool содержит информацию для GUI. Он включает секцию [Alterator Entry] и секции, описывающие варианты тестирования.

Секция Alterator Entry:

  • [Alterator Entry]
    • Name — идентификатор инструмента (имя без пробелов);
    • Type — всегда Diagnostictool;
    • DisplayName — имя инструмента;
    • DisplayName[локаль] — имя инструмента, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали;
    • Comment — описание инструмента;
    • Comment[локаль] — описание, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали;
    • Icon — имя файла с иконкой;
    • ReportSuffix — суффикс файла с отчетом. Этот файл будет создаваться при вызове метода Report.

Секции, описывающие варианты тестирования:

  • [Название секции соответствует названию теста]
    • DisplayName — идентификатор теста (имя без пробелов);
    • DisplayName[локаль] — имя теста, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали;
    • Comment — описание теста;
    • Comment[локаль] — описание теста, выводящиеся в GUI, если используется интерфейс с использованием указанной в скобках локали.
Файл .backend

Файл .backend имеет имя вида <имя диагностического инструмента>.ru.basealt.alterator.backend.

Если разрабатываемый диагностический инструмент предполагается распространять, то файлы сущностей необходимо разместить в каталоге:

  • /usr/share/alterator/backends/system — если объект необходимо создать на системной шине;
  • /usr/share/alterator/backends/user — если объект необходимо создать на сессионной шине;

В противном случае, рекомендуется использовать каталог:

  • /etc/alterator/backends/system/ — если объект необходимо создать на системной шине;
  • /etc/alterator/backends/user/ — если объект необходимо создать на сессионной шине.

Секция Alterator Entry описывает информацию об объекте и содержит следующие поля:

  • [Alterator Entry]
    • Type — содержит тип метода. Всегда имеет значение Backend;
    • Module — всегда executor;
    • Name — идентификатор инструмента (имя без пробелов);
    • Interface — идентификатор интерфейса. Имеет значение ru.basealt.alterator.diag1. Можно сократить до diag1;
    • thread_limit — указывает максимальное число потоков при одновременном выполнении нескольких методов.

Секция Info описывает метод Info и содержит следующие поля:

  • [Info]
    • execute — в качестве параметра необходимо передать команду, выводящую содержимое файла .diagnostictool (cat <путь к файлу>);
    • stdout_bytes — всегда enabled;
    • thread_limit — всегда 3;
    • action_id — содержит идентификатор метода. Всегда имеет значение Info.

Секция Run описывает метод Run и содержит следующие поля:

  • [Run]
    • execute — содержит строку для запуска тестов вида <путь к исполняемому файлу> {param} ;
    • stdout_signal_name — всегда diag1_stdout_signal. ADT ожидает сигнал с таким именем;
    • stderr_signal_name — всегда diag1_stderr_signal. ADT ожидает сигнал с таким именем;
    • action_id — содержит идентификатор метода. Всегда имеет значение Run.

Секция List описывает метод List и содержит следующие поля:

  • [List]
    • execute — содержит команду для вывода списка всех возможных тестов в виде <путь к исполняемому файлу> -l;
    • stdout_strings — всегда enabled;
    • action_id — содержит идентификатор метода. Всегда имеет значение List.

Секция Report содержит следующие поля:

  • [Report]
    • execute — содержит команду для создания отчета в виде <путь к исполняемому файлу> -R;
    • stdout_bytes — всегда enabled;
    • action_id — всегда Report.

Пример инструмента диагностики

Ниже представлен пример диагностического инструмента для определения производителя материнской платы.

Пример состоит из трех файлов:

  • исполняемый файл: /usr/bin/diag-example;
  • файл .backend: /usr/share/alterator/backends/diag-example.backend;
  • файл .diag, описывающий тесты: /usr/share/alterator/diagnostictools/diag-example.diag.

Шаблон примера

Исполняемый файл

Содержимое исполняемого файла /usr/bin/diag-example:

Example diagnostic tool
#!/bin/bash
#
# Copyright (c) 2024 Evgeny Sinelnikov <sin@altlinux.org>
#
# Example diagnostic tool
#
# SPDX-License-Identifier: GPL-2.0-or-later
#

set -euo pipefail

. shell-getopt

PROG="${0##*/}"
PROG_VERSION='0.0.1'

cmd="run"
global_retval=0

print_version()
{
	cat <<EOF
$PROG version $PROG_VERSION
Written by Evgeny Sinelnikov <sin@altlinux.org>

Copyright (C) 2024 Evgeny Sinelnikov <sin@altlinux.org>
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
EOF
	exit
}

show_usage()
{
	cat <<EOF
$PROG - example diagnostic tool.

Usage: $PROG [options] [<diagnostic-task>]

Options:
  -l, --list                list of diagnostic tasks;
  -V, --version             print program version and exit;
  -h, --help                show this text and exit.

Report bugs to https://bugzilla.altlinux.org/

EOF
	exit
}

TEMP=$(getopt -n "$PROG" -o "l,V,h" -l "list,version,help" -- "$@") || show_usage
eval set -- "$TEMP"

while :; do
	case "$1" in
		--) shift; break
			;;
		-l|--list) cmd="list";
			;;
		-V|--version) print_version
			;;
		-h|--help) show_usage
			;;
		*) fatal "Unrecognized option: $1"
			;;
	esac
	shift
done

task_list="$*"

task_show()
{
	local func="$1"

	echo "$func"
}

task_run()
{
	local retval=126
	local func="$1"

	if test -n "$task_list"; then
		echo "$task_list" | tr ' ' '\n' | grep -q "^$func\$" ||
			return 0
	fi

	$func && retval=0 || retval="$?"
	test $retval = 0 || global_retval=1

	return $retval
}

task()
{
	local task="$1"

	case "$cmd" in
		list) task_show "$task"
			;;
		run) task_run "$task" && echo "[DONE]: $task" || echo "[FAIL]: $task"
			;;
		*) fatal "Unrecognized command: $cmd"
			;;
	esac
}

is_gigabyte()
{
	/usr/sbin/dmidecode -s baseboard-manufacturer | grep -q "^Gigabyte Technology"
}

is_std_def_kernel_running()
{
	uname -r | grep -q '^[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+-std-def-'
}

task is_gigabyte
task is_std_def_kernel_running

exit "$global_retval"

Файл .backend

Содержимое файла /usr/share/alterator/backends/diag-example.backend:

[Alterator Entry]
Type = Backend
Module = executor
Name = diag_example
Interface = diag1

[Info]
execute = cat /usr/share/alterator/diagnostictools/diag-example.diag
stdout_bytes = enabled
stdout_byte_limit = 200000
action_id = Info

[Run]
execute = diag-example {param}
stdout_signal_name = diag_example_stdout_signal
stderr_signal_name = diag_example_stderr_signal
thread_limit = 1
action_id = Run

[List]
execute = diag-example -l
stdout_strings = enabled
stdout_strings_limit = 200000
action_id = List

Файл .diag, описывающий тесты

Содержимое файла /usr/share/alterator/diagnostictools/diag-example.diag:

[Alterator Entry]
Type = diag
Name = Example
DisplayName = Diagnostic tool example
DisplayName[ru] = Пример инструмента диагностики
Comment = Diagnostic tool comment
Comment[ru] = Комментарий к диагностическому инструменту
Icon = system-run

[is_gigabyte]
DisplayName = Is motherboard manufacturer — Gigabyte?
DisplayName[ru] = Производитель материнской платы — Gigabyte?

Отображение диагностического инструмента в интерфейсе ADT

Примечание: Для того чтобы новый диагностический инструмент отображался интерфейсе ADT, необходимо перезапустить alterator-manager:
# systemctl restart alterator-manager.service


Пример отображения диагностического инструмента в интерфейсе ADT

Набор тестов инструмента


Ошибки и нестандартные случаи

Диагностический инструмент не отображается

Необходимо проверить объект alterator-manager с именем «ru.basealt.alterator» на системной шине D-Bus.

Для этого можно использовать утилиту D-Feet (d-feet) или D-Spy (dspy).

В D-Feet и D-Spy можно посмотреть объекты заведенные как на системной шине, так и на сессионной шине для текущего пользователя.

D-Feet:

D-Feet, системная шина

D-Feet, сессионная шина

D-Spy:

D-Spy, сессионная шина

Публикации на тему