-
Сообщений
19 651 -
Зарегистрирован
-
Посещение
-
Время онлайн
333д 22ч 42м 32с
Все публикации пользователя GoldRobot
-
Чел. Это плата за безопасность. Ты сам себе злой буратино, который потом ебеться с тем что выше. Если нет контеншена, то атомик довольно быстро работает. Так же если классу НУЖНО разделяемое владение, что он ажно в себя вписывает, то он и должен быть, очевидно, обязательным. Если ты пишешь говно по которому даже не ясно за что оно ответственно, то ССЗБ. Не отработают методы, если не шаредптр сделан. Ну тоесть ты написал хуйню, объяснить которую даже не можешь. Ясно. Я удивлен что ты даже с gmock не знаком. Хотя казалось бы, не дуит, не дуит мы думали ты. Чел, ту хуйню которые ты написал и даешь нам как пример, согласно гугловским гайдлайнам нужно в печи нахуй сжечь.
-
Ты про свои гениальные тесты вида: MyClass::MyFunc() { member_variable_ = 1; } MyTest() { MyClass tested_class; tested_class.MyFunc(); assert(tested_class.member_variable_ == 1); } ? Да, очень полезные тесты. Согласен. Пишешь код в классе, а потом пишешь в тесте проверку, что все операции в функции действительно выполнились. Судя по коду я попал в точку, ты вообще не понимаешь о чем говоришь Флажки блять в классе. Ты ебанутый? Узри же, МАГИЮ https://google.github.io/googletest/gmock_cook_book.html#OrderedCalls Извне? AddRef чья обязанность позвать? Нету ThreadSafeRef/WeakThreadSafeRef? Если ты такое дерьмище адское поддерживаешь, и допиливаешь. Без тестов и не умея тесты писать, мое тебе уважение брат. Без рофлов, когда фундаментальные тулсы написаны вот так, представить боюсь что за паутина там у тебя накожена вообще. Расскажи. Нагрузочное тестирование не является проверкой на провисшие ссылки. Собственно как и проверки тредсейфа, о чем вы сами, вроде, доказали. Еще идеи?
-
Ты провисшие ссылки то как собрался тестить? Еще рофл конечно такую хуйню в конструкторе писать. Конечно придется код написать так что бы он тестировался, а ты как думал? Хотелось бы послушать как ты покрываешь тестами на протухсшие ссылки/указатели синхронный код. И в чем тут будет разница. БТВ Ты вообще какую-то аддовую хуйню написал. Если ты не передал туда владение, просто по this передал, то схуяли оно там должно декрементить и что-то удалять? Тоесть у тебя ThreadSafeRefcounted полагается что кто-то ИЗВНЕ зовет decrease_count или типа того? На момент вызова ThreadSafeRefcounted счетчик УЖЕ инкрементирован. Его конструктор уже отработал. unless ты отнаследующейся пометив public, и у тебя MakeRef ответственна за инкрементит. Тогда это уже нихуя не умный указатель. Не пишите такую хуету как грохуф, прошу вас и заклинаю, изайте шаред птры из стд.
-
Не совсем. Слипами и прочим ты тестируешь совокупность имплементации и кейсов которые ты не знаешь. А должен тестировать кейс которые ты знаешь. До ребяток никак не доходит, что предметом тестирования становится не имлпементация того как у тебя там джейсон перекладывается, а логика синхронизации. Логика работы с примитивами и собственно с тем что представляет из себя сущность полезного кода. От того и не понимания и перлы про "хахаха тестишь имплементацию". Для этого достаточно и нужно мокать и абстрагировать. Тебе нужно придумать логику работы, и проверить то что ты эту логику заимплементил как ожидалось. Это и является предметом теста. Тоесть в простейшем примере если у тебя есть метод exec_and_cache Тебе бы неплохо проверить что при вызове его происходит: connection.lock connection.exec connection.unlock cache.lock cache.save cache.unlock И ни один другой метод не вызывается. Ты ведь продумал логику свою, логику в код транслировал, вот ее и проверяй. Проверяй что два лока в дедлок не могут принципиально встать. Вдруг ты подумал, но накодил cache.lock->connection.unlock? Скорее проблема непонимания у дуита и ко в том, что они мокинг воспринимают исключительно как способ подсунуть классик без имплементации. Ну чтоб без коннекта в базе как-то запустился. О настоящем тесте асинхронку, таймеров, работы с сокетами, файловой системой, для того что бы проверить как работает то что ты накодил, они не слышали. Просто тестят что у них сокет читается, ну и ладно. Прописываю чтения документации о пусть будет gmock. Впрочем я их понимаю, нахуй надо. Это все слишком сложно получается в итоге. Чтож, видимо мышления дуита это твой предел. Невысокий оказался.
-
По факту есть что сказать? Дуит попытался, разьебался. Ты следующий.
-
вкатил колбаску тебе защеку
-
Пиздец у тебя устаревшие взгляды на жизнь. Ты к нам с какого года? Сейчас принято смотреть как другие люди смотрят как другие люди играю в игры, т.н. реакции. Да и давно уже популярен формат реакций на реакции на то как другие люди играют в игры. В общем обнови прошивку старик
-
Дсер катается вокруг дроеда, а ему нормально
-
Ага читал и кекал и плакал за него Пиздец обидка-то на самом деле. Причем я не понимаю, я погуглил можно отключить зуб на плойке. Почему не отключат? Не первый же раз в туриках наебываются.
-
так Лида еще не вышла. За Лео очень по кайфу, но пани Собеску 100% буду трогать. Ладно, я тоже...
-
Клянешься? Смотри нам, если поменяешь Леочку на Лидию, пиздить всем топиком будем. Блядей никто не любит.
-
Не позорься. Хватит уже. Раз ты даже не задумываешься (хотя я уже не раз на этом акцентрировал внимание) что можно зафиксировать порядок вызовов, то в этом всем нет смысла. Иди книжку почитай по тестированию какую, я хз. Чел, ты, ты...
-
Ну, у тебя же очевидно Bank не в воздухе лежит, а является приватным полем ThreadSafeBank класса, который перекрывает эти 3 метода. Вот и проверь, что перед любой операцией с Bank, поднимается лок. А потом опускается. Можешь, но не можешь. Очень странно жанглируешь словами. А так да. Придется больно и дорого писать тестируемый код, который можно будет протестировать. Тоесть, все так же как и абсолютно с другим кодом сложнее чем 'decode(str)->json', когда тебе нужно протестировать результат не отдаваемый собственно тебе напрямую. Спасибо что согласился переписав на свой лад. Если ты пишешь код который невозможно протестировать, то, очевидно, он будет нетестируемым. Неважно сколько потоков.
-
Конечно, ведь дуит нарисовал хуйню от пизды. В ней не только потокобезопасность не потестить то, в ней вообще ничего не потестить. И проверять ты должен не то что "компилятор решит или не решит", а то что ТЫ поставил точку синхронизации. Если ты свой классик пытаешься делать трейд сейф, и хочешь тестировать, то тебе и нужно сделать это проверяемым и тестируемым. Если ты обмазываешь мютексом, то придется и проверить что на момент чтения-записи мютекс поднят. Придется отделить данные, отделить от мютекса. Придется подрочиться с порядком вызовов. Проверить что вызвав метод set(a_value, b_value) ты видишь lock, data.set_implement(a_value, b_value), unlock. В таком и только таком порядке. В яндекс браузере ну наверняка есть мок который проверяет что при вызове http_get(url) вызывается метод SuvereniousDefense.call_mayor(url, user_home_adress) и потом YandexAdvertizie.embed_advertising(get_response)? Вот и тут так же брат. Вы пишите же моки в своем яндекс браузере верон? Ведь пишите?
-
Ясно, что еще можно было ожидать от псевдо-программиста. Как это делать я тебе уже сказал. Тестируй поведение своего класса, мокай, проверяй возможные кейсы. Остальное пусть грохуф тебе объясняет, мой ресурс который я для тебя выделил уже закончился.
-
Ну обмаж свой первый пример мютексом. Посмотри на него. И возможно поймешь. А если не поймешь, напиши сюда, ребята объяснят.
-
Я все еще нихуя не понял, как буд-то ты пытаешься сказать о чем то, чего не знаешь. Тест должен проверять не "работает" или "не работает", а то что поведение ожидаемо, и результат совпадает. Почему мне это объяснять то нужно вообще? Если ты тестируешь трейд сейфети, то ты и будешь покрывать тестами отсутствие дата рейсов. А не то что оно скомпилилось. Внезапно, примитивы синхронизации можно мокнуть. Заменить и подменить в тесте. Так же как и источники проблем, по типу сокетов и таймеров, для воспроизведения реального кейса. Это не считая хотя бы попросту кланговских санитайзеров, которые не идеальны, но очень хорошо упрощают жизнь. Твоя идея того что внезапно std::mutex отьебнет на какой-то платформе, или компиляторе, конечно, революционная, я такое даже представить себе не мог. Но думаю если стандартные примитивы не работают на платформе, то проблема некорректной работы с ними, будет уже наименьшей из моих головных проблем. Такое делает один из моих коллег переодически, я же ебал в рот это по причинам которые изначально написал. В большинстве задач у нас это либо оверкил, либо усложняет код настолько, что он превращается в неподдерживаемое легаси сразу после релиза, к сожалению.
-
Что-то я вообще не понял твоей мысли. Если ты покрыл тестами, то код корректный должен быть.
-
А что мешает? Возможно. Просто тяжело и дорого покрывать.
-
я мне кажется ни одной софтины не помню которая былабы не асинхронной вне лаб чтоли кто-то синхронку пишет? однопоточное еще реально, но синхронка это сразу на выкидку просто пиши сразу многопоток если это работа с сетью, то сразу такой класс чтобы он был тредсейф никаких ебучих boost::asio::strand подобного дерьма
-
незнаю мне 30 лет только в паспорте и синий я только вне теккена бываю
-
В этом топике все синий+ кроме меня и тебя брат
-
TheMainManSWE Я думал я один рейну считаю хворангом с без хуя. А оказывается ее даже ты из мишим выписал...