Bug 7532

Summary: Wine-tests: задумки по структурной реорганизации робота
Product: [Свободные проекты (Open source projects)] WINE-tests Reporter: Виталий Перов <vitperov>
Component: ОбщееAssignee: Виталий Перов <vitperov>
Status: DEFERRED --- QA Contact:
Severity: minor    
Priority: P4 CC: lav
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 6264    

Description Виталий Перов 2011-08-13 19:36:20 MSK
1)Хотелось бы, чтобы текущий класс get_mail возвращал полученные патчи по-одному. В этом случае удаление патчей можно выполнять после их обработки. В случае падения, патчи остаются в почтовом ящике.

2)Для использования уже существующего класса для задач не связанных с патчами (например бага 6185) нужно разделить существующий класс get_mail на два класса: mail_messages и mail_tasks.
mail_messages: общий класс, получающий по-очереди сообщения из почтового ящика, и умеющий их удалять.
mail_tasks - класс, который умеет вытаскивать из сообщений объекты wine_patch и merge_task.

3)Чтобы привести классы wine_patch и merge_task к единому виду, хотелось бы их наследовать от одного класса git_mail_task. Пока планируется только один общий метод - run().
Временно, можно попробовать обойтись и без обобщённого класса, добавив в wine_patch метод run().

4) wine_patch и merge_task имеют некоторые отличия. wine_patch может быть связан с несколькими репозиториями, а merge_task только с одним.
Для приведения их к общему виду нужно убрать привязку к нескольким репозиториям, и обеспечить дублирование патчей для каждого репозитория.
Сразу возникает проблема с уникальностью имён файлов (их тоже придётся дублировать).
Comment 1 Виталий Перов 2011-08-15 14:45:16 MSK
> Временно, можно попробовать обойтись и без обобщённого класса, добавив в
> wine_patch метод run().
Добавил метод run().
Comment 2 Виталий Перов 2011-08-15 16:08:25 MSK
(В ответ на comment #0)
> нужно разделить существующий класс get_mail на два класса:
> mail_messages и mail_tasks.
> mail_messages: общий класс, получающий по-очереди сообщения из почтового ящика,
> и умеющий их удалять.
> mail_tasks - класс, который умеет вытаскивать из сообщений объекты wine_patch и
> merge_task.

Начала реализацию.
Пока что встретились проблемы:
1) Одно сообщение может содержать несколько патчей. Т.е при очередном разборе сообщения нужно возвращать первый патч, а остальные хранить где-то во внутреннем буфере, и возвращать при следующем вызове get_next_patch().
2) Возникла проблема с удалением сообщения, когда оно содержит несколько патчей.
Если не все патчи из сообщения обработаны, то сообщение удалять нельзя.
Comment 3 Виталий Перов 2011-08-15 16:48:25 MSK
(В ответ на comment #2)
> Начала реализацию.
> Пока что встретились проблемы:
> 1) Одно сообщение может содержать несколько патчей. Т.е при очередном разборе
> сообщения нужно возвращать первый патч, а остальные хранить где-то во
> внутреннем буфере, и возвращать при следующем вызове get_next_patch().
> 2) Возникла проблема с удалением сообщения, когда оно содержит несколько
> патчей.
> Если не все патчи из сообщения обработаны, то сообщение удалять нельзя.
Закончил реализацию.
Исправил потенциальные проблемы.
Требуется протестировать решение и исправить встреченные проблемы.
Comment 4 Виталий Перов 2011-08-15 19:04:20 MSK
(В ответ на comment #3)
> Требуется протестировать решение и исправить встреченные проблемы.
Протестировал. Исправил проблемы. Работает.
Comment 5 Vitaly Lipatov 2014-09-11 18:46:30 MSK
Откладываем задачи, к которым не обращались более 100 дней.