Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/jl/master #12

Merged
merged 21 commits into from
Mar 28, 2016
Merged

Feature/jl/master #12

merged 21 commits into from
Mar 28, 2016

Conversation

jlouis
Copy link
Owner

@jlouis jlouis commented Mar 26, 2016

Simple set of refactorings needed in order to make the test model more pliable.

Steal most of the timer code from jlouis/dht and adapt it to this project.
We can now run timing as part of the cluster, and we can slowly move
toward a system where time is mocked in the main system by means
of eqc_mocking rather than our own mock. It makes for clearer code,
but it also makes for simpler, less intrusion into the SUT.

The next steps are to hook up the fuse_eqc model to the timer code
and make all of this work as it should.
@jlouis
Copy link
Owner Author

jlouis commented Mar 26, 2016

Building toward the needed infrastructure to support #9

@jlouis
Copy link
Owner Author

jlouis commented Mar 26, 2016

To support the code in the system with EQC, we need to introduce a cluster so we can get time mocking under control. This patch provides the first initial work for this. It uses eqc_component to set up a mocking/callback scheme in which the eqc_component monad is used to handle internal state transfers in the statem model.

There are still some tasks which can be lifted and made more precise. Hopefully this will uncover some bugs w.r.t. timing.

Once the code is in, we can start handling the command section as laid out in #9 as this requires meticulous control over time, something we have not had yet in the fuse model.

@jlouis
Copy link
Owner Author

jlouis commented Mar 26, 2016

Don't worry too much about travis failures for now, they'll be fixed over time.

Work toward fixing timing problems and improving readability of the model.
We can use the monad in eqc_component to track state changes in our system
over time. By factoring out common work, the model becomes simpler.
Let everything take the State as the first parameter, not the last.
If the timer triggers while we are resetting, then the timer is in the mailbox.
Handle this by ignoring such a timer.
We now disable the timer when the fuse is disabled. This solves the
question on how to handle timers under circuit disables/enables.
@jlouis jlouis merged commit f1ad14c into master Mar 28, 2016
@jlouis jlouis deleted the feature/jl/master branch June 22, 2021 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant