- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
...
fun([N1, _N2], Trace) ->
?assert(
?strict_causality( #{?snk_kind := "Adding table to a shard", shard := _Shard, live_change := true}
, #{?snk_kind := "Shard schema change"}
, ?of_node(N1, Trace)
)),
?assert(
?strict_causality( #{?snk_kind := "Shard schema change", shard := _Shard}
, #{?snk_kind := "Restarting shard server", shard := _Shard}
, ?of_node(N1, Trace)
)),
%% Schema change must cause restart of the replica process and bootstrap:
{_, Rest} = ?split_trace_at(#{?snk_kind := "Shard schema change"}, Trace),
?assert(
?strict_causality( #{?snk_kind := "Restarting shard server", shard := _Shard}
, #{?snk_kind := state_change, to := bootstrap}
, Rest
))
end).
CHayT 17.07.2021 13:57 # +1
j123123 17.07.2021 20:41 # 0
bormand 17.07.2021 20:44 # +1
CHayT 17.07.2021 20:50 # +1
CHayT 17.07.2021 20:54 # +1
Тут чекаются не анскильные состояния, а видимые сайд-эффекты. Хуй знает, как это по науке называют. Я это называю trace-based testing.
CHayT 17.07.2021 20:59 # 0
CHayT 17.07.2021 21:11 # +2
В Erlang'е вообще нет никакой `науки', именно поэтому я... Был забавный тред в его мейлинг-листах, где кто-то начал писать что, мол, у вас неправильный π-calculus, потому что вот в статьях... На что ему Robert Virding ответил в духе ``хорошо, что мы не знали про π-calculus, иначе у нас получилась бы какая-то непрактичная питушня для ма-те-матиков из рашки''.
guest6 17.07.2021 21:20 # 0
bootcamp_dropout 17.07.2021 21:51 # 0
HEu3BECTHblu_nemyx 17.07.2021 21:57 # +1
bootcamp_dropout 17.07.2021 22:28 # 0
C_T_A_Jl_K_E_P 17.07.2021 23:35 # +1
MAPTbIwKA 21.07.2021 22:25 # 0
чего именно "нет"?
1024-- 22.07.2021 22:01 # +1
Вообще, подобная проблема есть среди программистов (как минимум, на ГК). Народ слишком дофига знает, начинает верить в математику, а не в реальность, и знания начинают ограничивать мышление.
bormand 17.07.2021 14:18 # 0
А как оно проверяет, что это строгая причинно-следственная связь? Просто что события в правильно порядке произошли? Или прям проверяет, что между ними есть какая-то цепочка из happens before, а не просто так вышло?
CHayT 17.07.2021 14:23 # +2
Как-то так. "За каждым событием с паттерном A следует событие с паттерном B". Можно ещё эту питушню пускать под model-checker'ом, и тогда можно убедиться, что так происходит всегда.
Desktop 17.07.2021 14:20 # 0
bormand 17.07.2021 14:26 # +1
CHayT 17.07.2021 14:29 # +1
#{key := Value} — заматчить мапу с key / Value.