func (s *AgentTestSuite) TestGetAllConfigs(t *C) { cmd := &proto.Cmd{ Ts: time.Now(), User: "******", Cmd: "GetAllConfigs", Service: "agent", } s.sendChan <- cmd got := test.WaitReply(s.recvChan) t.Assert(len(got), Equals, 1) reply := got[0] t.Check(reply.Error, Equals, "") t.Assert(reply.Data, Not(HasLen), 0) gotConfigs := []proto.AgentConfig{} err := json.Unmarshal(reply.Data, &gotConfigs) t.Assert(err, IsNil) bytes, _ := json.Marshal(s.config) sort.Sort(test.ByInternalService(gotConfigs)) expectConfigs := []proto.AgentConfig{ { InternalService: "agent", Config: string(bytes), Running: true, }, { InternalService: "mm", Config: `{"Foo":"bar"}`, Running: false, }, { InternalService: "qan", Config: `{"Foo":"bar"}`, Running: false, }, } if ok, diff := test.IsDeeply(gotConfigs, expectConfigs); !ok { test.Dump(gotConfigs) t.Error(diff) } }
func (s *ManagerTestSuite) TestGetConfig(t *C) { mrm := mock.NewMrmsMonitor() m := mm.NewManager(s.logger, s.factory, s.clock, s.spool, s.im, mrm) t.Assert(m, NotNil) err := m.Start() t.Assert(err, IsNil) /** * Start a mock MySQL monitor. */ mysqlMonitorConfig := &mysql.Config{ Config: mm.Config{ ServiceInstance: proto.ServiceInstance{ Service: "mysql", InstanceId: 1, }, Collect: 1, Report: 60, }, Status: map[string]string{ "threads_connected": "gauge", "threads_running": "gauge", }, } mysqlData, err := json.Marshal(mysqlMonitorConfig) t.Assert(err, IsNil) cmd := &proto.Cmd{ User: "******", Service: "mm", Cmd: "StartService", Data: mysqlData, } s.mysqlMonitor.SetConfig(mysqlMonitorConfig) reply := m.Handle(cmd) t.Assert(reply, NotNil) t.Assert(reply.Error, Equals, "") /** * Start a mock system monitor. */ systemMonitorConfig := &system.Config{ Config: mm.Config{ ServiceInstance: proto.ServiceInstance{ Service: "server", InstanceId: 1, }, Collect: 10, Report: 60, }, } systemData, err := json.Marshal(systemMonitorConfig) t.Assert(err, IsNil) cmd = &proto.Cmd{ User: "******", Service: "mm", Cmd: "StartService", Data: systemData, } s.systemMonitor.SetConfig(systemMonitorConfig) reply = m.Handle(cmd) t.Assert(reply, NotNil) t.Assert(reply.Error, Equals, "") /** * GetConfig from mm which should return all monitors' configs. */ cmd = &proto.Cmd{ Cmd: "GetConfig", Service: "mm", } reply = m.Handle(cmd) t.Assert(reply, NotNil) t.Assert(reply.Error, Equals, "") t.Assert(reply.Data, NotNil) gotConfig := []proto.AgentConfig{} if err := json.Unmarshal(reply.Data, &gotConfig); err != nil { t.Fatal(err) } expectConfig := []proto.AgentConfig{ { InternalService: "mm", ExternalService: proto.ServiceInstance{ Service: "mysql", InstanceId: 1, }, Config: string(mysqlData), Running: true, }, { InternalService: "mm", ExternalService: proto.ServiceInstance{ Service: "server", InstanceId: 1, }, Config: string(systemData), Running: true, }, } sort.Sort(test.ByInternalService(gotConfig)) if same, diff := test.IsDeeply(gotConfig, expectConfig); !same { test.Dump(gotConfig) t.Error(diff) } }