func (m *MockRcvContext) Dict(name string) state.Dict { if m.CtxDicts == nil { m.CtxDicts = state.NewInMem() } return m.CtxDicts.Dict(name) }
func (a *app) newState() state.State { return state.NewInMem() }
func BenchmarkBeePersistence(b *testing.B) { b.StopTimer() log.SetOutput(ioutil.Discard) hive := &hive{ id: 1, config: HiveConfig{ StatePath: "/tmp/bhtest_bench_bee", RaftTick: 100 * time.Millisecond, RaftHBTicks: 1, RaftElectTicks: 5, RaftInFlights: 1, RaftFsyncTick: 1 * time.Second, }, collector: &noOpStatCollector{}, } removeState(hive.config.StatePath) hive.ticker = randtime.NewTicker(hive.config.RaftTick, 0) hive.registry = newRegistry(hive.String()) ncfg := raft.Config{ ID: hive.id, Name: hive.String(), Send: hive.sendRaft, Ticker: hive.ticker.C, } hive.node = raft.StartMultiNode(ncfg) bee := bee{ beeID: 1, beeColony: Colony{ ID: 1, Leader: 1, }, hive: hive, app: &app{ name: "test", flags: appFlagTransactional | appFlagPersistent, }, stateL1: state.NewTransactional(state.NewInMem()), dataCh: newMsgChannel(uint(b.N)), batchSize: 1024, } bee.becomeLeader() hive.registry.addBee(BeeInfo{ ID: 1, Hive: 1, App: "test", Colony: bee.colony(), }) if err := bee.createGroup(); err != nil { b.Fatal(err) } b.StartTimer() h := benchBeeHandler{data: []byte{1, 1, 1, 1}} mhs := make([]msgAndHandler, bee.batchSize) for j := uint(0); j < bee.batchSize; j++ { mhs[j] = msgAndHandler{ msg: &msg{}, handler: h, } } for i := uint(0); i < uint(b.N); i += bee.batchSize { bee.handleMsg(mhs) } b.StopTimer() time.Sleep(1 * time.Second) hive.node.Stop() }
func newMockContext() *mockContext { ctx := &mockContext{ Transactional: state.NewTransactional(state.NewInMem()), } return ctx }