Rainbond/api/handler/eventLog_test.go

193 lines
5.5 KiB
Go
Raw Normal View History

2018-03-14 14:12:26 +08:00
// Copyright (C) 2014-2018 Goodrain Co., Ltd.
2017-11-07 11:40:44 +08:00
// RAINBOND, Application Management Platform
2018-03-14 14:33:31 +08:00
2017-11-07 11:40:44 +08:00
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. For any non-GPL usage of Rainbond,
// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd.
// must be obtained first.
2018-03-14 14:33:31 +08:00
2017-11-07 11:40:44 +08:00
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
2018-03-14 14:33:31 +08:00
2017-11-07 11:40:44 +08:00
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package handler
import (
"fmt"
2017-11-07 11:40:44 +08:00
"os/exec"
"testing"
"time"
api_db "github.com/goodrain/rainbond/api/db"
api_model "github.com/goodrain/rainbond/api/model"
"github.com/goodrain/rainbond/cmd/api/option"
2017-11-07 11:40:44 +08:00
"github.com/Sirupsen/logrus"
)
func TestEmessage(t *testing.T) {
fmt.Printf("begin.\n")
conf := option.Config{
DBType: "mysql",
DBConnectionInfo: "admin:admin@tcp(127.0.0.1:3306)/region",
}
//创建db manager
if err := api_db.CreateDBManager(conf); err != nil {
fmt.Printf("create db manager error, %v", err)
}
getLevelLog("dd09a25eb9744afa9b3ad5f5541013e7", "info")
fmt.Printf("end.\n")
}
func TestGetLevelLog(t *testing.T) {
l := CreateLogManager([]string{"http://192.168.2.172:2379"})
messageList, err := l.eventdb.GetMessages("df07f2b579364cf791137d33aceb89be", "debug", 0)
if err != nil {
t.Fatal(err)
}
t.Log(messageList)
}
2017-11-07 11:40:44 +08:00
func getLevelLog(eventID string, level string) (*api_model.DataLog, error) {
//messages, err := db.GetManager().EventLogDao().GetEventLogMessages(eventID)
//if err != nil {
// return nil, err
//}
////var d []api_model.MessageData
//for _, v := range messages {
// log, err := uncompress(v.Message)
// if err != nil {
// return nil, err
// }
// logrus.Debugf("log is %v", log)
// fmt.Printf("log is %v", string(log))
//
// var mLogs []msgStruct
// if err := ffjson.Unmarshal(log, &mLogs); err != nil {
// return nil, err
// }
// fmt.Printf("jlog %v", mLogs)
// break
//}
2017-11-07 11:40:44 +08:00
return nil, nil
}
type msgStruct struct {
EventID string `json:"event_id"`
Step string `json:"step"`
Message string `json:"message"`
Level string `json:"level"`
Time string `json:"time"`
}
func TestLines(t *testing.T) {
filePath := "/Users/pujielan/Downloads/log"
logrus.Debugf("file path is %s", filePath)
n := 1000
f, err := exec.Command("tail", "-n", fmt.Sprintf("%d", n), filePath).Output()
if err != nil {
fmt.Printf("err if %v", err)
}
fmt.Printf("f is %v", string(f))
}
func TestTimes(t *testing.T) {
//toBeCharge := "2015-01-01 00:00:00" //待转化为时间戳的字符串 注意 这里的小时和分钟还要秒必须写 因为是跟着模板走的 修改模板的话也可以不写
toBeCharge := "2017-09-29T10:02:44+08:00" //待转化为时间戳的字符串 注意 这里的小时和分钟还要秒必须写 因为是跟着模板走的 修改模板的话也可以不写
timeLayout := "2006-01-02T15:04:05" //转化所需模板
loc, _ := time.LoadLocation("Local") //重要:获取时区
//toBeCharge = strings.Split(toBeCharge, ".")[0]
fmt.Println(toBeCharge)
theTime, err := time.ParseInLocation(timeLayout, toBeCharge, loc) //使用模板在对应时区转化为time.time类型
fmt.Println(err)
sr := theTime.Unix() //转化为时间戳 类型是int64
fmt.Println(theTime) //打印输出theTime 2015-01-01 15:15:00 +0800 CST
fmt.Println(sr)
}
func TestSort(t *testing.T) {
arr := [...]int{3, 41, 24, 76, 11, 45, 3, 3, 64, 21, 69, 19, 36}
fmt.Println(arr)
num := len(arr)
//循环排序
for i := 0; i < num; i++ {
for j := i + 1; j < num; j++ {
if arr[i] > arr[j] {
temp := arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
}
fmt.Println(arr)
}
func quickSort(array []int, left int, right int) {
if left < right {
key := array[left]
low := left
high := right
for low < high {
for low < high && array[high] > key {
high--
}
array[low] = array[high]
for low < high && array[low] < key {
low++
}
array[high] = array[low]
}
array[low] = key
quickSort(array, left, low-1)
quickSort(array, low+1, right)
}
}
func qsort(array []int, low, high int) {
if low < high {
m := partition(array, low, high)
// fmt.Println(m)
qsort(array, low, m-1)
qsort(array, m+1, high)
}
}
func partition(array []int, low, high int) int {
key := array[low]
tmpLow := low
tmpHigh := high
for {
//查找小于等于key的元素该元素的位置一定是tmpLow到high之间因为array[tmpLow]及左边元素小于等于key不会越界
for array[tmpHigh] > key {
tmpHigh--
}
//找到大于key的元素该元素的位置一定是low到tmpHigh+1之间。因为array[tmpHigh+1]必定大于key
for array[tmpLow] <= key && tmpLow < tmpHigh {
tmpLow++
}
if tmpLow >= tmpHigh {
break
}
// swap(array[tmpLow], array[tmpHigh])
array[tmpLow], array[tmpHigh] = array[tmpHigh], array[tmpLow]
fmt.Println(array)
}
array[tmpLow], array[low] = array[low], array[tmpLow]
return tmpLow
}
func TestFastSort(t *testing.T) {
var sortArray = []int{3, 41, 24, 76, 11, 45, 3, 3, 64, 21, 69, 19, 36}
fmt.Println(sortArray)
qsort(sortArray, 0, len(sortArray)-1)
fmt.Println(sortArray)
}