Архитектор из дома

olis
Уже с Приветом
Posts: 4935
Joined: 02 Mar 2002 10:01
Location: UK

Re: Архитектор из дома

Post by olis »

Мальчик-Одуванчик wrote: Для тестирования базовой функциональности для случая a) не столь важно что вернет сокет сколь более важно исключить саму сетку и связанные с ней настройки, таймауты, результаты запросов из базового тестирования.
Примерно так отлаживал прикладуху для микропроцессора. Сначала базовая функциональность с заглушкой, покрытой юнит-тестами, потом с использованием usb порта как устройства коммуникации, потом добавил блютус, потом обычную сетку.
А вот такая штука если.
Драйвер, который принимает данные с serial порта и пишет в память через DMA. Его задача - просто все передать без потерь в user space. Данные в serial port пишет некая железка, самопально припаенная, со скоростью несколько Mb/s.
Я то просто некую утилиту, которая вызывает драйвер и пишет данные в файл, написал. Потом эти данные уже анализировались не в реальном времени.
А какие юнит тесты тут можно придумать, что умные люди скажут?
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Архитектор из дома

Post by Мальчик-Одуванчик »

olis wrote:
Мальчик-Одуванчик wrote: Для тестирования базовой функциональности для случая a) не столь важно что вернет сокет сколь более важно исключить саму сетку и связанные с ней настройки, таймауты, результаты запросов из базового тестирования.
Примерно так отлаживал прикладуху для микропроцессора. Сначала базовая функциональность с заглушкой, покрытой юнит-тестами, потом с использованием usb порта как устройства коммуникации, потом добавил блютус, потом обычную сетку.
А вот такая штука если.
Драйвер, который принимает данные с serial порта и пишет в память через DMA. Его задача - просто все передать без потерь в user space. Данные в serial port пишет некая железка, самопально припаенная, со скоростью несколько Mb/s.
Я то просто некую утилиту, которая вызывает драйвер и пишет данные в файл, написал. Потом эти данные уже анализировались не в реальном времени.
А какие юнит тесты тут можно придумать, что умные люди скажут?
А как меняется структура этих данных после приема с порта и перед записью в память?
olis
Уже с Приветом
Posts: 4935
Joined: 02 Mar 2002 10:01
Location: UK

Re: Архитектор из дома

Post by olis »

Мальчик-Одуванчик wrote:
olis wrote:
Мальчик-Одуванчик wrote: Для тестирования базовой функциональности для случая a) не столь важно что вернет сокет сколь более важно исключить саму сетку и связанные с ней настройки, таймауты, результаты запросов из базового тестирования.
Примерно так отлаживал прикладуху для микропроцессора. Сначала базовая функциональность с заглушкой, покрытой юнит-тестами, потом с использованием usb порта как устройства коммуникации, потом добавил блютус, потом обычную сетку.
А вот такая штука если.
Драйвер, который принимает данные с serial порта и пишет в память через DMA. Его задача - просто все передать без потерь в user space. Данные в serial port пишет некая железка, самопально припаенная, со скоростью несколько Mb/s.
Я то просто некую утилиту, которая вызывает драйвер и пишет данные в файл, написал. Потом эти данные уже анализировались не в реальном времени.
А какие юнит тесты тут можно придумать, что умные люди скажут?
А как меняется структура этих данных после приема с порта и перед записью в память?
Никак. Биты пакуются в байты в шифт регистром, байты пишутся в буфер. Последовательность битов та же самая.
X37WAL!^
Уже с Приветом
Posts: 2243
Joined: 28 Nov 2007 23:11
Location: NJ

Re: Архитектор из дома

Post by X37WAL!^ »

olis wrote:
Мальчик-Одуванчик wrote:
olis wrote:
Мальчик-Одуванчик wrote: Для тестирования базовой функциональности для случая a) не столь важно что вернет сокет сколь более важно исключить саму сетку и связанные с ней настройки, таймауты, результаты запросов из базового тестирования.
Примерно так отлаживал прикладуху для микропроцессора. Сначала базовая функциональность с заглушкой, покрытой юнит-тестами, потом с использованием usb порта как устройства коммуникации, потом добавил блютус, потом обычную сетку.
А вот такая штука если.
Драйвер, который принимает данные с serial порта и пишет в память через DMA. Его задача - просто все передать без потерь в user space. Данные в serial port пишет некая железка, самопально припаенная, со скоростью несколько Mb/s.
Я то просто некую утилиту, которая вызывает драйвер и пишет данные в файл, написал. Потом эти данные уже анализировались не в реальном времени.
А какие юнит тесты тут можно придумать, что умные люди скажут?
А как меняется структура этих данных после приема с порта и перед записью в память?
Никак. Биты пакуются в байты в шифт регистром, байты пишутся в буфер. Последовательность битов та же самая.
По-моему тут и файлы нафиг не нужны. Буфер байтов на входе, буфер байтов на выходе? Пихаете эталонный входной буфер драйверу с разной скоростью, кусками разной длины - ну как там у вас на практике работает... А выходной буфер в отдельном треде не торопясь сверяете с входным. Проверить, что ничего не падает в corner cases: принят пустой буфер, таймаут вместо данных итд...
olis
Уже с Приветом
Posts: 4935
Joined: 02 Mar 2002 10:01
Location: UK

Re: Архитектор из дома

Post by olis »

X37WAL!^ wrote: По-моему тут и файлы нафиг не нужны. Буфер байтов на входе, буфер байтов на выходе? Пихаете эталонный входной буфер драйверу с разной скоростью, кусками разной длины - ну как там у вас на практике работает... А выходной буфер в отдельном треде не торопясь сверяете с входным. Проверить, что ничего не падает в corner cases: принят пустой буфер, таймаут вместо данных итд...
А как эталонные данные пихать в сериал порт? Протокол SPI, синхронный. 2 сигнала - data и clock (ну еще chip select, но это не суть).
И это - никакого буфера байтов на входе нет. Идет поток битов с RF приемника. Clock тоже оттуда.

P.S. Кстати, первое задание которое я получил в нынешней конторе - пофискить баг в этом драйвере. Там несколько битов терялось в момент переключения между DMA буферами. Потом мне сказали что 2 месяца пытались это сделать.
X37WAL!^
Уже с Приветом
Posts: 2243
Joined: 28 Nov 2007 23:11
Location: NJ

Re: Архитектор из дома

Post by X37WAL!^ »

olis wrote:
X37WAL!^ wrote: По-моему тут и файлы нафиг не нужны. Буфер байтов на входе, буфер байтов на выходе? Пихаете эталонный входной буфер драйверу с разной скоростью, кусками разной длины - ну как там у вас на практике работает... А выходной буфер в отдельном треде не торопясь сверяете с входным. Проверить, что ничего не падает в corner cases: принят пустой буфер, таймаут вместо данных итд...
А как эталонные данные пихать в сериал порт? Протокол SPI, синхронный. 2 сигнала - data и clock (ну еще chip select, но это не суть).
Вообще-то пихать надо не в сериал порт (от которого вы собственно и пытаетесь абстрагироваться), а в драйвер. Драйвер вы сами писали? Как именно он читает/пишет из порта?
olis
Уже с Приветом
Posts: 4935
Joined: 02 Mar 2002 10:01
Location: UK

Re: Архитектор из дома

Post by olis »

X37WAL!^ wrote:
olis wrote:
X37WAL!^ wrote: По-моему тут и файлы нафиг не нужны. Буфер байтов на входе, буфер байтов на выходе? Пихаете эталонный входной буфер драйверу с разной скоростью, кусками разной длины - ну как там у вас на практике работает... А выходной буфер в отдельном треде не торопясь сверяете с входным. Проверить, что ничего не падает в corner cases: принят пустой буфер, таймаут вместо данных итд...
А как эталонные данные пихать в сериал порт? Протокол SPI, синхронный. 2 сигнала - data и clock (ну еще chip select, но это не суть).
Вообще-то пихать надо не в сериал порт (от которого вы собственно и пытаетесь абстрагироваться), а в драйвер. Драйвер вы сами писали? Как именно он читает/пишет из порта?
Что значит в драйвер? Работа драйвера сконфигурировать SPI порт и DMA контроллер. Драйвер сам никак не читает из порта, это не его дело.
P.S. И да, мне пришлось практически полностью переписать драйвер чтобы пофиксить тот баг :)
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Архитектор из дома

Post by Мальчик-Одуванчик »

olis wrote:
X37WAL!^ wrote:
olis wrote:
X37WAL!^ wrote: По-моему тут и файлы нафиг не нужны. Буфер байтов на входе, буфер байтов на выходе? Пихаете эталонный входной буфер драйверу с разной скоростью, кусками разной длины - ну как там у вас на практике работает... А выходной буфер в отдельном треде не торопясь сверяете с входным. Проверить, что ничего не падает в corner cases: принят пустой буфер, таймаут вместо данных итд...
А как эталонные данные пихать в сериал порт? Протокол SPI, синхронный. 2 сигнала - data и clock (ну еще chip select, но это не суть).
Вообще-то пихать надо не в сериал порт (от которого вы собственно и пытаетесь абстрагироваться), а в драйвер. Драйвер вы сами писали? Как именно он читает/пишет из порта?
Что значит в драйвер? Работа драйвера сконфигурировать SPI порт и DMA контроллер. Драйвер сам никак не читает из порта, это не его дело.
P.S. И да, мне пришлось практически полностью переписать драйвер чтобы пофиксить тот баг :)
А как драйвер реагирует на обрыв соединения
И на его последующее восстановление?
Он как-то вообще распознает что к устройство подключено к порту и что это надлежащее устройство?
olis
Уже с Приветом
Posts: 4935
Joined: 02 Mar 2002 10:01
Location: UK

Re: Архитектор из дома

Post by olis »

Мальчик-Одуванчик wrote: А как драйвер реагирует на обрыв соединения
И на его последующее восстановление?
Он как-то вообще распознает что к устройство подключено к порту и что это надлежащее устройство?
А никак. SPI протокол этого не позволяет. Устройство припаяно к порту. Как только подается питание начинает генериться clock сигнал.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

olis wrote: А как эталонные данные пихать в сериал порт? Протокол SPI, синхронный. 2 сигнала - data и clock (ну еще chip select, но это не суть).
И это - никакого буфера байтов на входе нет. Идет поток битов с RF приемника. Clock тоже оттуда.
Нечто аналогичное мы делали больше 10 лет назад. Делали мы это так: стоял контупер с тестовой системой, подключался спецательным энторфейсом к сигнальному генератору и "энкодеру". В один энторфейс пихали все, что нужно знать о несущей частоте, в другой - собственно данные. Потом все это дело летело либо через эфир, либо через коаксиал прямо в RF-приемник. Софт в девайсе все это декодировал и репортил обратно в тестовую систему, которая собственно и сличала, что декодированные данные соответствуют отправленным. Стопроцентное покрытие функциональности и никаких юнит-тестов. Разумеется, элементарно тестируются и таймауты и обрывы "на середине" и вообще все, что можно представить
Мат на форуме запрещен, блдж!
olis
Уже с Приветом
Posts: 4935
Joined: 02 Mar 2002 10:01
Location: UK

Re: Архитектор из дома

Post by olis »

АццкоМото wrote:
olis wrote: А как эталонные данные пихать в сериал порт? Протокол SPI, синхронный. 2 сигнала - data и clock (ну еще chip select, но это не суть).
И это - никакого буфера байтов на входе нет. Идет поток битов с RF приемника. Clock тоже оттуда.
Нечто аналогичное мы делали больше 10 лет назад. Делали мы это так: стоял контупер с тестовой системой, подключался спецательным энторфейсом к сигнальному генератору и "энкодеру". В один энторфейс пихали все, что нужно знать о несущей частоте, в другой - собственно данные. Потом все это дело летело либо через эфир, либо через коаксиал прямо в RF-приемник. Софт в девайсе все это декодировал и репортил обратно в тестовую систему, которая собственно и сличала, что декодированные данные соответствуют отправленным. Стопроцентное покрытие функциональности и никаких юнит-тестов. Разумеется, элементарно тестируются и таймауты и обрывы "на середине" и вообще все, что можно представить
Да, конечно. Но у нас просто либо генерился тестовый GPS сигнал, либо принимался реальный. И потом писался в файл и проверялся. Определить действительно ли это GPS сигнал и были ли потери данных элементарно.
Но все это не имеет никакого отношения к юнит-тестам. :)

P.S. А потеря данных была потому что задержка при переключении DMA буферов была слишком большой. Там в общем то не было никаких багов, и все было сделано по уму. Просто скорость потока была слишком высокой и его никак нельзя было остановить.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Архитектор из дома

Post by АццкоМото »

olis wrote:Но все это не имеет никакого отношения к юнит-тестам. :)
:fr:
Мат на форуме запрещен, блдж!
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Архитектор из дома

Post by Сабина »

Влезла я в душу бывшему менеджеру сегодня и допытала как так вышло что он такой весь из себя умный остался в стороне(но архитектор и бог на своем собственном проэкте) а коллеги его из того же самого тима все замочили по успешному стартапу (2 если точно).
В общем поняла что если ты умный и еще и архитектор и с характером - то ой ей ей как нелегко пробиться. Кроме случаев когда делаешь свое и берешь на себя все риски. Но это не для каждого
https://www.youtube.com/watch?v=wOwblaKmyVw

Return to “Работа и Карьера в IT”