422 Commits

Author SHA1 Message Date
Eric Mastro
87db051ab2
[statemachine] add AnyState, support transition trigger from any state 2023-02-21 17:21:22 +11:00
Eric Mastro
ea80387137
[statemachine] capture triggerable exceptions 2023-02-21 17:21:22 +11:00
Eric Mastro
e651056701
[statemachine] cleanup 2023-02-21 17:21:22 +11:00
Eric Mastro
ad9f5a4d51
[statemachine] check declared transitions after state change
- check declared transitions after state change
- make `Event` and `transition` public to enable external usage
- add exported machine.state proc
- add tests for machine.state
- add test TODO for not being able to check exception in run
- add test for checking declarative transitions after state transition
- remove onMoveToNextStateEvent as it was too confusing. Easier to read `Event.transition(state2, state3)`
2023-02-21 17:21:22 +11:00
Eric Mastro
0eacbea850
[statemachine] add additional tests for declarations 2023-02-21 17:21:22 +11:00
Eric Mastro
127adc0b8a
[statemachine] initial steps for declarative transitions
# Conflicts:
#	codex/utils/asyncstatemachine.nim
2023-02-21 17:21:22 +11:00
Mark Spanbroek
2035568b88
WIP switch to new statemachine model
Heavy work in progress, doesn't even compile yet,
this commit will be replaced by new cleaned up small commits

- callbacks are sync again
- agent.start(slots) is replaced by new state SaleStart
- disables explicit state transition tests for now; need to be replaced
2023-02-21 17:21:21 +11:00
Mark Spanbroek
59395d9bbd
[statemachine] adds a statemachine for async workflows
Allows events to be scheduled synchronously.

See https://github.com/status-im/nim-codex/pull/344

Co-Authored-By: Ben Bierens <thatbenbierens@gmail.com>
Co-Authored-By: Eric Mastro <eric.mastro@gmail.com>
2023-02-21 17:21:21 +11:00
Eric Mastro
47da5c1625
[marketplace] sales state machine: use slotState
Use `slotState` instead of `requestState` for sales state machine.

[marketplace] clean up
2023-02-21 17:21:21 +11:00
Eric Mastro
03a87636e7
[marketplace] support slotIndex no longer optional
Previously, SalesAgent.slotIndex had been moved to not optional. However, there were still many places where optionality was assumed. This commit removes those assumuptions.
2023-02-14 13:47:53 +01:00
Eric Mastro
cb6e0bab6f
[marketplace] use async subscription event handlers 2023-02-14 13:47:53 +01:00
Eric Mastro
fdab5737dc
Rebase and update NBS commit
Rebase on top of main and update NBS commit to the CI fix.
2023-02-14 13:47:53 +01:00
Mark Spanbroek
b017359d13
[sales] make slotIndex non-optional 2023-02-14 13:47:52 +01:00
Mark Spanbroek
8a8e7aed70
[sales] fix: do not crash when fetching state fails 2023-02-14 13:47:52 +01:00
Mark Spanbroek
083e341592
[sales] cleanup 2023-02-14 13:47:52 +01:00
Mark Spanbroek
5f98f70714
[config] remove unused imports 2023-02-14 13:47:52 +01:00
Eric Mastro
46a218a38e
[marketplace] bump codex-contracts-eth 2023-02-14 13:47:52 +01:00
Eric Mastro
c0c604ce79
[marketplace] add missing file 2023-02-14 13:47:52 +01:00
Eric Mastro
437036a9a6
[marketplace] align with contract changes
- getState / state > requestState
- getSlot > getRequestFromSlotId
- support MarketplaceConfig
- support slotState, remove unneeded Slot type
- collateral > config.collateral.initialAmount
- remove proofPeriod contract call
- Revert reason “Slot empty” > “Slot is free”
- getProofEnd > read SlotState

Tests for changes
2023-02-14 13:47:52 +01:00
Eric Mastro
66b5ee52f9
[marketplace] clean up 2023-02-14 13:47:52 +01:00
Eric Mastro
1fbdb5d035
[marketplace] update to work with latest contracts 2023-02-14 13:47:51 +01:00
Eric Mastro
6aa2d35015
[marketplace] infer slot index from slotid
prevents reassigning a random slot index when restoring state from chain
2023-02-14 13:47:51 +01:00
Eric Mastro
19fe1b85e3
[marketplace] use requestId for mySlots 2023-02-14 13:47:51 +01:00
Eric Mastro
3db7b49537
[marketplace] handle slot filled by other host
Handle the case when in the downloading, proving, or filling states, that another host fills the slot.
2023-02-14 13:47:51 +01:00
Eric Mastro
0957c9adfa
PR comments
- add slotIndex to `SalesAgent` constructor
- remove `SalesAgent.init`
- rename `SalesAgent.init` to `start` and `SalesAgent.deinit` to `stop`.
- rename `SalesAgent. populateRequest` to `SalesAgent.retreiveRequest`.
- move availability removal to the downloading state. once availability is persisted to disk, it should survive node restarts.
-
2023-02-14 13:47:51 +01:00
Eric Mastro
e8f87e3f52
[marketplace] fix ci issue with chronicles output 2023-02-14 13:47:51 +01:00
Eric Mastro
dc534f93c7
bump dagger-contracts 2023-02-14 13:47:51 +01:00
Eric Mastro
579da07ca6
[marketplace] sales state machine tests 2023-02-14 13:47:51 +01:00
Eric Mastro
67914249b6
[marketplace] move sale process to async state machine 2023-02-14 13:47:50 +01:00
Eric Mastro
54173f1f1c
[marketplace] add async state machine
Allows for `enterAsync` to be cancelled.
2023-02-14 13:47:50 +01:00
Eric Mastro
fc95654ba8
[marketplace] make availability optional for node restart
# Conflicts:
#	tests/codex/testsales.nim
2023-02-14 13:47:50 +01:00
Eric Mastro
fd398fc304
[marketplace] make on chain event callbacks async
# Conflicts:
#	tests/codex/helpers/mockmarket.nim
2023-02-14 13:47:50 +01:00
Eric Mastro
10815ac0b5
[marketplace] get active slots from chain
# Conflicts:
#	codex/contracts/market.nim
2023-02-14 13:47:50 +01:00
Ben Bierens
9f73c86477
Docs/update setup run and test steps (#342)
* Adds instructions how to integrate MSYS2 terminal into VSCode

* Adds instructions for the installation of the ethereum test node required for the integration tests.

* work-in-progress updating steps for two-client scenario.

* Moves two-client test to separate MD file

* Rename

* Process review comments

* Indent mistake

* Attempt to sign commit
2023-02-09 10:56:01 +01:00
markspanbroek
3b4a078052
[build] fix nimbus-build-system (#343)
Ensures that we include the correct paths when building
with nimbus-build-system.

Fixes Error: cannot open file: ""

Copied from:
1ea102b033/config.nims (L5)
2023-02-08 09:48:27 +01:00
markspanbroek
82e7a2dde6
Fix CI (#339)
* [ci] Use Nim version 1.6.10 instead of version-1-6

* [ci] use nimbus-build-system branch support-shallow-checkout
2023-02-06 17:15:02 +01:00
Eric Mastro
df729be261
[marketplace] support latest contracts changes (#327)
* [marketplace] support removal of Storage contract

* [marketplace] change submod dep dagger-contracts to codex-contracts-eth
2023-01-19 16:58:04 +11:00
markspanbroek
b1cf8e5239
[build] update nimbus-build-system (#329) 2023-01-12 15:11:31 +01:00
Dmitriy Ryajov
8481e301d5
add missed repo store test (#324) 2022-12-05 09:00:13 -06:00
Dmitriy Ryajov
7907d67797
don't crash on shutdown (#323)
* don't crash on shutdown

* cleanup
2022-12-05 09:00:02 -06:00
Dmitriy Ryajov
0beeefd760
Repo limits (#319)
* initial implementation of repo store

* allow isManifest on multicodec

* rework with new blockstore

* add raw codec

* rework listBlocks

* remove fsstore

* reworking with repostore

* bump datastore

* fix listBlocks iterator

* adding store's common tests

* run common store tests

* remove fsstore backend tests

* bump datastore

* add `listBlocks` tests

* listBlocks filter based on block type

* disabling tests in need of rewriting

* allow passing block type

* move BlockNotFoundError definition

* fix tests

* increase default advertise loop sleep to 10 mins

* use `self`

* add cache quota functionality

* pass meta store and start repo

* add `CacheQuotaNamespace`

* pass meta store

* bump datastore to latest master

* don't use os `/` as key separator

* Added quota limits support

* tests for quota limits

* add block expiration key

* remove unnesesary space

* use idleAsync in listBlocks

* proper test name

* re-add contrlC try/except

* add storage quota and block ttl config options

* clarify comments

* change expires key format

* check for block presence before storing

* bump datastore

* use dht with fixed datastore `has`

* bump datastore to latest master

* bump dht to latest master
2022-12-02 18:00:55 -06:00
markspanbroek
9143a25fa1
[ci] Add tips for maintaining CI (#311)
* [ci] Add tips for maintaining CI

Lessons learned from speeding up the CI in
https://github.com/status-im/nim-codex/pull/303

* [ci] Readme: add tip about timing of every test

As suggested by @Menduist

* [ci] Readme: add link to github actions usage limits

As suggested by @Menduist
2022-11-16 14:58:49 +01:00
markspanbroek
cdd175279c
Fix nimble requirements (#305)
* [build] Update nim-ethers to 0.2.4

* [build] set correct lrucache requirement in nimble file
2022-11-16 13:10:23 +01:00
Dmitriy Ryajov
88f1be388a
fix help, info, add description for loglevel (#316)
* fix `help`, `info`, add description for `loglevel`

* add abbreviations for discovery params
2022-11-15 13:16:02 -06:00
Dmitriy Ryajov
5abf80cc69
Block download (#304)
* track inflight requests

* preperly handle precense updates

* trace number of of scheduled blocks

* invoke `payForBlocks` at the correct time

* reduntant block info on want list updates

* don't update prices in task handler

* PeerID -> PeerId

* cleanup

* proper log topic

* better chronicles topic filtering

* more trace logging

* sort want blocks

* wip - fix tests

* wip - fix tests, presence changes

* fix small test issue

* return price

* payment related changes

* misc

* re-enable payment tests

* fix warn wording

* fix `u256` conversion

* minor misc changes

* don't idle for so long on `encode`

* logging

* move buff

* disable cache by default

* disable cache by default

* fix streamOneBlock

* log node stopping/exiting

* trace logging

* don't stringify cid

* use `self`

* quick cleanup

* rename enums

* rename enums

* turns out we don't needs this test

* fix wording
2022-11-15 09:46:21 -06:00
markspanbroek
456e675b8a
[build] Update nim-leopard to version 0.1.0 (#310)
Reduces the time required to build nim-leopard.
2022-11-15 09:05:52 +01:00
Dmitriy Ryajov
5f9507cfcd
Blocks leak and inflight for pending blocks (#315)
* attach `wait` to handle fut

* fix crash when can't find a CID and timeout hits

the exception was not raised, thus a Nil was returned that was
than wrapped in an option, leading to crash.


Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>

* add inFlight flag

* adding pending blocks tests

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
Co-authored-by: Csaba Kiraly <csaba.kiraly@gmail.com>
2022-11-15 00:12:05 -06:00
Dmitriy Ryajov
978e2f09e4
bumping chronos to latest master (#314) 2022-11-14 22:15:37 -06:00
Dmitriy Ryajov
f235cc6621
don't spawn queue requests (#313)
* don't spawn queue requests

* adjust list blocks idle timer

* increase timeout on failing test...
2022-11-14 18:01:05 -06:00
Dmitriy Ryajov
f36dc54eda
Log topic filtering (#312)
* comment

* split out coders and add log level endpoin

* adjust info url

* add log filtering test

* don't stringify cid

* add log level test
2022-11-14 17:42:57 -06:00