func addTestMetrics(agent *model.AgentDTO) {
	metrics := []*model.Metric{
		{
			OrgId:     1,
			Public:    true,
			Namespace: "/testing/demo/demo1",
			Version:   1,
			Policy: []rbody.PolicyTable{
				{
					Name:     "user",
					Type:     "string",
					Required: true,
				},
				{
					Name:     "passwd",
					Type:     "string",
					Required: true,
				},
				{
					Name:     "limit",
					Type:     "integer",
					Required: false,
					Default:  10,
				},
			},
		},
		{
			OrgId:     1,
			Public:    true,
			Namespace: "/testing/demo2/demo",
			Version:   2,
			Policy:    nil,
		},
	}
	lock.Lock()
	err := sqlstore.AddMissingMetricsForAgent(agent, metrics)
	lock.Unlock()
	if err != nil {
		panic(err)
	}

	err = sqlstore.AddAgentSession(&model.AgentSession{
		Id:       uuid.NewUUID().String(),
		AgentId:  agent.Id,
		Version:  1,
		RemoteIp: "127.0.0.1",
		Server:   "localhost",
		Created:  time.Now(),
	})
	if err != nil {
		panic(err)
	}
}
func (a *AgentSession) HandleCatalog() interface{} {
	return func(body []byte) {
		catalog := make([]*rbody.Metric, 0)
		if err := json.Unmarshal(body, &catalog); err != nil {
			log.Error(3, err.Error())
			return
		}
		log.Debug("Received catalog for session %s: %s", a.SocketSession.Id, body)
		metrics := make([]*model.Metric, len(catalog))
		for i, m := range catalog {
			metrics[i] = &model.Metric{
				OrgId:     a.Agent.OrgId,
				Public:    a.Agent.Public,
				Namespace: m.Namespace,
				Version:   int64(m.Version),
				Policy:    m.Policy,
			}
		}
		err := sqlstore.AddMissingMetricsForAgent(a.Agent, metrics)
		if err != nil {
			log.Error(3, "failed to update metrics in DB. %s", err)
		}
	}
}