Skip to content

Instantly share code, notes, and snippets.

@jlouis
Created March 28, 2016 15:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jlouis/deac0716412b85bd0378 to your computer and use it in GitHub Desktop.
Save jlouis/deac0716412b85bd0378 to your computer and use it in GitHub Desktop.
What should happen to a timer when you administratively disable a fuse?
Shrinking xxxxxx.xx.xxx.x.x.x.x..x.xx.xxxxxxxxxxx(10 times)
[{set,
{var,1},
{call,fuse_eqc,install,
[vanessa,{{standard,1,1},{reset,60000}}],
[{id,1},
{self,{var,{pid,root}}},
{res,ok},
{callouts,
{seq,
[{seq,
[{callout,fuse_time,convert_time_unit,[1,milli_seconds,native],1},
{return,1}]},
{seq,
[{internal,fuse_eqc,install_fuse,
[vanessa,{vanessa,#{count => 1,fuse_type => standard,period => 1,reset => 60000}}],
[{id,1},{self,{var,{pid,root}}}],
empty},
{seq,
[{internal,fuse_eqc,clear_blown,
[vanessa],
[{id,1},{self,{var,{pid,root}}}],
empty},
{seq,
[{internal,fuse_eqc,clear_melts,
[vanessa],
[{id,1},{self,{var,{pid,root}}}],
empty},
{return,ok}]}]}]}]}}]}},
{set,
{var,2},
{call,fuse_eqc,melt_installed,
[vanessa],
[{id,17},
{self,{var,{pid,root}}},
{res,ok},
{callouts,
{seq,
{res,
{internal,fuse_time_eqc,monotonic_time,[],
[{id,17},{self,{var,{pid,root}}}],
{seq,[{callout,fuse_time,monotonic_time,[],0},{return,0}]}},
0},
{seq,
[{seq,
[{internal,fuse_eqc,record_melt,
[vanessa,0],
[{id,17},{self,{var,{pid,root}}}],
empty},
{seq,
{res,
{internal,fuse_eqc,fuse_period,
[vanessa],
[{id,17},{self,{var,{pid,root}}}],
empty},
1},
{seq,
[{internal,fuse_eqc,expire_melts,
[vanessa,1,0],
[{id,17},{self,{var,{pid,root}}}],
empty},
empty]}}]},
{return,ok}]}}}]}},
{set,
{var,3},
{call,fuse_eqc,melt_installed,
[vanessa],
[{id,18},
{self,{var,{pid,root}}},
{res,ok},
{callouts,
{seq,
{res,
{internal,fuse_time_eqc,monotonic_time,[],
[{id,18},{self,{var,{pid,root}}}],
{seq,[{callout,fuse_time,monotonic_time,[],0},{return,0}]}},
0},
{seq,
[{seq,
[{internal,fuse_eqc,record_melt,
[vanessa,0],
[{id,18},{self,{var,{pid,root}}}],
empty},
{seq,
{res,
{internal,fuse_eqc,fuse_period,
[vanessa],
[{id,18},{self,{var,{pid,root}}}],
empty},
1},
{seq,
[{internal,fuse_eqc,expire_melts,
[vanessa,1,0],
[{id,18},{self,{var,{pid,root}}}],
empty},
{internal,fuse_eqc,blow_fuse,
[vanessa],
[{id,18},{self,{var,{pid,root}}}],
{seq,
{res,
{internal,fuse_time_eqc,send_after,
[60000,'_',{reset,vanessa}],
[{id,18},{self,{var,{pid,root}}}],
{seq,
[{callout,fuse_time,send_after,
[60000,'_',{reset,vanessa}],
{tref,0}},
{return,{tref,0}}]}},
{tref,0}},
{internal,fuse_eqc,add_blown,
[vanessa,{tref,0}],
[{id,18},{self,{var,{pid,root}}}],
empty}}}]}}]},
{return,ok}]}}}]}},
{set,
{var,4},
{call,fuse_eqc,circuit_disable,
[vanessa],
[{id,28},
{self,{var,{pid,root}}},
{res,ok},
{callouts,
{seq,
[{internal,fuse_eqc,add_disabled,
[vanessa],
[{id,28},{self,{var,{pid,root}}}],
empty},
{seq,
[{internal,fuse_eqc,clear_melts,
[vanessa],
[{id,28},{self,{var,{pid,root}}}],
empty},
{seq,
[{internal,fuse_eqc,clear_blown,
[vanessa],
[{id,28},{self,{var,{pid,root}}}],
{internal,fuse_time_eqc,cancel_timer,
[{tref,0}],
[{id,28},{self,{var,{pid,root}}}],
{seq,
[{callout,fuse_time,cancel_timer,[{tref,0}],60000},
{return,60000}]}}},
{return,ok}]}]}]}}]}}]
S: [{fuse_time_eqc, {state, 0, [], 0}},
{fuse_eqc, {state, [], [], [], [], []}}]
fuse_eqc:install(vanessa, {{standard, 1, 1}, {reset, 60000}}) ->
1 = fuse_time:convert_time_unit(1, milli_seconds, native),
ok.
S: [{fuse_time_eqc, {state, 0, [], 0}},
{fuse_eqc,
{state, [], [], [],
[{vanessa,
#{count => 1, fuse_type => standard, period => 1,
reset => 60000}}],
[]}}]
fuse_eqc:melt_installed(vanessa) ->
0 = fuse_time:monotonic_time(),
ok.
S: [{fuse_time_eqc, {state, 0, [], 0}},
{fuse_eqc,
{state, [{vanessa, 0}], [], [],
[{vanessa,
#{count => 1, fuse_type => standard, period => 1,
reset => 60000}}],
[]}}]
fuse_eqc:melt_installed(vanessa) ->
0 = fuse_time:monotonic_time(),
{tref, 0} = fuse_time:send_after(60000, <0.30953.7>, {reset, vanessa}),
ok.
S: [{fuse_time_eqc,
{state, 0, [{60000, 0, '_', {reset, vanessa}}], 1}},
{fuse_eqc,
{state, [{vanessa, 0}, {vanessa, 0}], [{vanessa, {tref, 0}}], [],
[{vanessa,
#{count => 1, fuse_type => standard, period => 1,
reset => 60000}}],
[]}}]
fuse_eqc:circuit_disable(vanessa) -> ok.
S: [{fuse_time_eqc, {state, 0, [], 1}},
{fuse_eqc,
{state, [], [], [vanessa],
[{vanessa,
#{count => 1, fuse_type => standard, period => 1,
reset => 60000}}],
[]}}]
Reason:
Post-condition failed:
Callout mismatch: expected: fuse_time:cancel_timer({tref, 0})
false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment