Merge pull request #2115 from filecoin-project/feat/drand-config-override

allow overriding drand config
This commit is contained in:
Łukasz Magiera 2020-06-23 21:59:05 +02:00 committed by GitHub
commit 99d3571772
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 13 deletions

View File

@ -27,18 +27,22 @@ import (
var log = logging.Logger("drand") var log = logging.Logger("drand")
var drandServers = []string{ type DrandConfig struct {
"https://pl-eu.testnet.drand.sh", Servers []string
"https://pl-us.testnet.drand.sh", ChainInfo *dchain.Info
"https://pl-sin.testnet.drand.sh",
} }
var drandChain *dchain.Info var defaultConfig = DrandConfig{
Servers: []string{
"https://pl-eu.testnet.drand.sh",
"https://pl-us.testnet.drand.sh",
"https://pl-sin.testnet.drand.sh",
},
}
func init() { func init() {
var err error var err error
drandChain, err = dchain.InfoFromJSON(bytes.NewReader([]byte(build.DrandChain))) defaultConfig.ChainInfo, err = dchain.InfoFromJSON(bytes.NewReader([]byte(build.DrandChain)))
if err != nil { if err != nil {
panic("could not unmarshal chain info: " + err.Error()) panic("could not unmarshal chain info: " + err.Error())
} }
@ -73,16 +77,21 @@ type DrandBeacon struct {
localCache map[uint64]types.BeaconEntry localCache map[uint64]types.BeaconEntry
} }
func NewDrandBeacon(genesisTs, interval uint64, ps *pubsub.PubSub) (*DrandBeacon, error) { func NewDrandBeacon(genesisTs, interval uint64, ps *pubsub.PubSub, config *DrandConfig) (*DrandBeacon, error) {
if genesisTs == 0 { if genesisTs == 0 {
panic("what are you doing this cant be zero") panic("what are you doing this cant be zero")
} }
if config == nil {
config = &defaultConfig
}
drandChain := config.ChainInfo
dlogger := dlog.NewKitLoggerFrom(kzap.NewZapSugarLogger( dlogger := dlog.NewKitLoggerFrom(kzap.NewZapSugarLogger(
log.SugaredLogger.Desugar(), zapcore.InfoLevel)) log.SugaredLogger.Desugar(), zapcore.InfoLevel))
var clients []dclient.Client var clients []dclient.Client
for _, url := range drandServers { for _, url := range config.Servers {
hc, err := hclient.NewWithInfo(url, drandChain, nil) hc, err := hclient.NewWithInfo(url, drandChain, nil)
if err != nil { if err != nil {
return nil, xerrors.Errorf("could not create http drand client: %w", err) return nil, xerrors.Errorf("could not create http drand client: %w", err)

View File

@ -10,7 +10,7 @@ import (
) )
func TestPrintGroupInfo(t *testing.T) { func TestPrintGroupInfo(t *testing.T) {
c, err := hclient.New(drandServers[0], nil, nil) c, err := hclient.New(defaultConfig.Servers[0], nil, nil)
assert.NoError(t, err) assert.NoError(t, err)
cg := c.(interface { cg := c.(interface {
FetchChainInfo(groupHash []byte) (*dchain.Info, error) FetchChainInfo(groupHash []byte) (*dchain.Info, error)

View File

@ -108,8 +108,9 @@ func RetrievalResolver(l *discovery.Local) retrievalmarket.PeerResolver {
type RandomBeaconParams struct { type RandomBeaconParams struct {
fx.In fx.In
PubSub *pubsub.PubSub `optional:"true"` DrandConfig *drand.DrandConfig `optional:"true"`
Cs *store.ChainStore PubSub *pubsub.PubSub `optional:"true"`
Cs *store.ChainStore
} }
func RandomBeacon(p RandomBeaconParams, _ dtypes.AfterGenesisSet) (beacon.RandomBeacon, error) { func RandomBeacon(p RandomBeaconParams, _ dtypes.AfterGenesisSet) (beacon.RandomBeacon, error) {
@ -119,5 +120,5 @@ func RandomBeacon(p RandomBeaconParams, _ dtypes.AfterGenesisSet) (beacon.Random
} }
//return beacon.NewMockBeacon(build.BlockDelay * time.Second) //return beacon.NewMockBeacon(build.BlockDelay * time.Second)
return drand.NewDrandBeacon(gen.Timestamp, build.BlockDelay, p.PubSub) return drand.NewDrandBeacon(gen.Timestamp, build.BlockDelay, p.PubSub, p.DrandConfig)
} }