You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
3.6 KiB
144 lines
3.6 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"flag" |
|
"log" |
|
"math/rand" |
|
"os" |
|
"strconv" |
|
"testing" |
|
"time" |
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
|
|
"go-common/app/service/main/dapper/conf" |
|
"go-common/app/service/main/dapper/model" |
|
) |
|
|
|
func init() { |
|
rand.Seed(time.Now().UnixNano()) |
|
} |
|
|
|
var cfg *conf.Config |
|
var flagMap = map[string]string{ |
|
"app_id": "main.common-arch.dapper-service", |
|
"conf_token": "528dd7e00bb411e894c14a552f48fef8", |
|
"tree_id": "5172", |
|
"conf_version": "server-1", |
|
"deploy_env": "uat", |
|
"conf_host": "config.bilibili.co", |
|
"conf_path": os.TempDir(), |
|
"region": "sh", |
|
"zone": "sh001", |
|
} |
|
|
|
func TestMain(m *testing.M) { |
|
for key, val := range flagMap { |
|
flag.Set(key, val) |
|
} |
|
flag.Parse() |
|
if err := conf.Init(); err != nil { |
|
log.Printf("init config from remote error: %s", err) |
|
} |
|
cfg = conf.Conf |
|
if cfg.InfluxDB != nil { |
|
cfg.InfluxDB.Database = "dapper_ut" |
|
} |
|
if cfg.HBase != nil { |
|
cfg.HBase.Namespace = "dapperut" |
|
} |
|
if hbaseAddrs := os.Getenv("TEST_HBASE_ADDRS"); hbaseAddrs != "" { |
|
cfg.HBase = &conf.HBaseConfig{Addrs: hbaseAddrs, Namespace: "dapperut"} |
|
if influxdbAddr := os.Getenv("TEST_INFLUXDB_ADDR"); influxdbAddr != "" { |
|
cfg.InfluxDB = &conf.InfluxDBConfig{Addr: influxdbAddr, Database: "dapper_ut"} |
|
} |
|
} |
|
os.Exit(m.Run()) |
|
} |
|
|
|
func TestDao(t *testing.T) { |
|
if cfg == nil { |
|
t.Skipf("no config provide skipped") |
|
} |
|
daoImpl, err := New(cfg) |
|
if err != nil { |
|
t.Fatalf("new dao error: %s", err) |
|
} |
|
ctx := context.Background() |
|
Convey("test fetch serviceName and operationName", t, func() { |
|
serviceNames, err := daoImpl.FetchServiceName(ctx) |
|
So(err, ShouldBeNil) |
|
So(serviceNames, ShouldNotBeEmpty) |
|
for _, serviceName := range serviceNames { |
|
operationNames, err := daoImpl.FetchOperationName(ctx, serviceName) |
|
So(err, ShouldBeNil) |
|
t.Logf("%s operationNames: %v", serviceName, operationNames) |
|
} |
|
}) |
|
Convey("test write rawtrace", t, func() { |
|
if err := daoImpl.WriteRawTrace( |
|
context.Background(), |
|
strconv.FormatUint(rand.Uint64(), 16), |
|
map[string][]byte{strconv.FormatUint(rand.Uint64(), 16): []byte("hello world")}, |
|
); err != nil { |
|
t.Error(err) |
|
} |
|
}) |
|
Convey("test batchwrite span point", t, func() { |
|
points := []*model.SpanPoint{ |
|
&model.SpanPoint{ |
|
ServiceName: "service_a", |
|
OperationName: "opt1", |
|
PeerService: "peer_service_a", |
|
SpanKind: "client", |
|
Timestamp: time.Now().Unix() - rand.Int63n(3600), |
|
MaxDuration: model.SamplePoint{ |
|
SpanID: rand.Uint64(), |
|
TraceID: rand.Uint64(), |
|
Value: rand.Int63n(1024), |
|
}, |
|
MinDuration: model.SamplePoint{ |
|
SpanID: rand.Uint64(), |
|
TraceID: rand.Uint64(), |
|
Value: rand.Int63n(1024), |
|
}, |
|
AvgDuration: model.SamplePoint{ |
|
SpanID: rand.Uint64(), |
|
TraceID: rand.Uint64(), |
|
Value: rand.Int63n(1024), |
|
}, |
|
Errors: []model.SamplePoint{ |
|
model.SamplePoint{ |
|
SpanID: rand.Uint64(), |
|
TraceID: rand.Uint64(), |
|
Value: 1, |
|
}, |
|
model.SamplePoint{ |
|
SpanID: rand.Uint64(), |
|
TraceID: rand.Uint64(), |
|
Value: 1, |
|
}, |
|
}, |
|
}, |
|
&model.SpanPoint{ |
|
ServiceName: "service_b", |
|
OperationName: "opt2", |
|
PeerService: "peer_service_b", |
|
SpanKind: "server", |
|
Timestamp: time.Now().Unix() - rand.Int63n(3600), |
|
}, |
|
&model.SpanPoint{ |
|
ServiceName: "service_c", |
|
OperationName: "opt3", |
|
PeerService: "peer_service_c", |
|
SpanKind: "client", |
|
Timestamp: time.Now().Unix() - rand.Int63n(3600), |
|
}, |
|
} |
|
err := daoImpl.BatchWriteSpanPoint(context.Background(), points) |
|
if err != nil { |
|
t.Error(err) |
|
} |
|
}) |
|
}
|
|
|