package config_manager

import (
	"testing"
	//"github.com/stretchr/testify/assert"
	"encoding/json"
	"git.loafle.net/overflow/overflow_probe/agent_api/config_manager"
	"git.loafle.net/overflow/overflow_probe/agent_api/messages"
	"git.loafle.net/overflow/overflow_probe/agent_api/observer"
	log "github.com/cihub/seelog"
	"github.com/google/uuid"
	"io/ioutil"
	"time"
)

func TestLoadConfig(t *testing.T) {

	// notify temp channel
	//ch := make(chan interface{},0)
	//observer.Add(messages.CFG_LOADED,ch)
	//go func() {
	//	data :=<- ch
	//	c := data.(config_manager.ConfigManager)
	//	cc := c.GetSensors()
	//	assert.NotEqual(t, len(cc),0)
	//}()

	// make config manager after to load
	//c := NewConfigManager()
	//c.loadGlobalConfig("/root/gowork/src/git.loafle.net/overflow/overflow_probe/config_manager/test_agent/global.yaml")
	//c.loadCrawlerConfigAll()
	//
	//assert.NotEqual(t, len(c.configs),0)
	//observer.Notify(messages.CFG_LOADED,c)
	//time.Sleep(1 * time.Second)
}

func TestAddConfig(t *testing.T) {
	_configManager.loadGlobalConfig("/root/gowork/src/git.loafle.net/overflow/overflow_probe/config_manager/test_agent/global.yaml")

	// 원본 테스트 설정 파일 로드
	b, err := ioutil.ReadFile("/root/gowork/src/git.loafle.net/overflow/overflow_probe/config_manager/test_agent/test.json")
	if err != nil {
		log.Error(err)
	}
	var m = config_manager.Config{}
	json.Unmarshal(b, &m)

	// uuid로 원본 파일 복제
	rid, _ := uuid.NewRandom()
	m.Id = rid.String()
	b, err = json.Marshal(&m)
	ioutil.WriteFile("/root/gowork/src/git.loafle.net/overflow/overflow_probe/config_manager/test_agent/"+m.Id, b, 0644)

	// add test
	observer.Notify(messages.TASK_SENSOR_ADD, "/root/gowork/src/git.loafle.net/overflow/overflow_probe/config_manager/test_agent/"+m.Id)
	time.Sleep(1 * time.Second)
}

func TestRemoveConfig(t *testing.T) {
	GetInstance()
	_configManager.loadGlobalConfig("/home/snoop/develop/path/go/src/git.loafle.net/overflow/overflow_probe/config_manager/test_agent/global.yaml")
	_configManager.loadCrawlerConfigAll()

	// remove test
	//observer.Notify(messages.TASK_SENSOR_REMOVE,"d0fcc7b1-43a7-4acd-a7bf-c9572a9d4c9e")
	time.Sleep(1 * time.Second)
}
