|
|
@@ -8,6 +8,7 @@ import (
|
|
|
"git.sxidc.com/service-supports/ds-sdk/sdk/tag"
|
|
|
"github.com/iancoleman/strcase"
|
|
|
"math/rand"
|
|
|
+ "strings"
|
|
|
"sync"
|
|
|
"testing"
|
|
|
"time"
|
|
|
@@ -24,16 +25,15 @@ type Class struct {
|
|
|
}
|
|
|
|
|
|
const (
|
|
|
- token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU="
|
|
|
- address = "localhost"
|
|
|
- httpPort = "10000"
|
|
|
- grpcPort = "10001"
|
|
|
- namespace = "ns-sdk-demo"
|
|
|
- dataSource = "ds-sdk-demo"
|
|
|
- deleteSql = "delete-sdk-demo"
|
|
|
- goRoutineCount = 100
|
|
|
- tableName = "test.classes"
|
|
|
- sqlResultTimeFormat = "2006-01-02T15:04:05.000000+08:00"
|
|
|
+ token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU="
|
|
|
+ address = "localhost"
|
|
|
+ httpPort = "10000"
|
|
|
+ grpcPort = "10001"
|
|
|
+ namespace = "ns-sdk-demo"
|
|
|
+ dataSource = "ds-sdk-demo"
|
|
|
+ deleteSql = "delete-sdk-demo"
|
|
|
+ goRoutineCount = 100
|
|
|
+ tableName = "test.classes"
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
@@ -42,6 +42,22 @@ var (
|
|
|
}
|
|
|
)
|
|
|
|
|
|
+const (
|
|
|
+ sqlResultTimeMicroFormat = "2006-01-02T15:04:05.000000+08:00"
|
|
|
+ sqlResultTimeMilliFormat = "2006-01-02T15:04:05.000+08:00"
|
|
|
+ sqlResultTimeSecFormat = "2006-01-02T15:04:05+08:00"
|
|
|
+)
|
|
|
+
|
|
|
+func chooseTimeLayout(timeStr string) string {
|
|
|
+ if strings.HasSuffix(timeStr, ".000000+08:00") {
|
|
|
+ return sqlResultTimeMicroFormat
|
|
|
+ } else if strings.HasSuffix(timeStr, ".000+08:00") {
|
|
|
+ return sqlResultTimeMilliFormat
|
|
|
+ } else {
|
|
|
+ return sqlResultTimeSecFormat
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func TestBasic(t *testing.T) {
|
|
|
classID := strutils.SimpleUUID()
|
|
|
className := strutils.SimpleUUID()
|
|
|
@@ -143,7 +159,6 @@ func TestRawSqlTemplate(t *testing.T) {
|
|
|
newStudentNum := rand.Int31n(100)
|
|
|
|
|
|
now := time.Now()
|
|
|
- exceptedNowStr := now.Format(sqlResultTimeFormat)
|
|
|
|
|
|
insertExecuteParams, err := raw_sql_tpl.InsertExecuteParams{
|
|
|
TableName: tableName,
|
|
|
@@ -204,7 +219,7 @@ func TestRawSqlTemplate(t *testing.T) {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
|
|
|
|
- countExecuteParams, err := raw_sql_tpl.ConditionsExecuteParams{
|
|
|
+ countExecuteParams, err := raw_sql_tpl.CountExecuteParams{
|
|
|
TableName: tableName,
|
|
|
Conditions: raw_sql_tpl.NewConditions().
|
|
|
Equal("id", classID).
|
|
|
@@ -215,7 +230,7 @@ func TestRawSqlTemplate(t *testing.T) {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
|
|
|
|
- newCountExecuteParams, err := raw_sql_tpl.ConditionsExecuteParams{
|
|
|
+ newCountExecuteParams, err := raw_sql_tpl.CountExecuteParams{
|
|
|
TableName: tableName,
|
|
|
Conditions: raw_sql_tpl.NewConditions().
|
|
|
Equal("id", classID).
|
|
|
@@ -263,12 +278,16 @@ func TestRawSqlTemplate(t *testing.T) {
|
|
|
t.Fatal("总数不正确")
|
|
|
}
|
|
|
|
|
|
+ graduatedTimeLayout := chooseTimeLayout(queryResults[0]["graduated_time"].(string))
|
|
|
+ createdTimeLayout := chooseTimeLayout(queryResults[0]["created_time"].(string))
|
|
|
+ lastUpdatedTimeLayout := chooseTimeLayout(queryResults[0]["last_updated_time"].(string))
|
|
|
+
|
|
|
if classes[0].ID != classID ||
|
|
|
classes[0].Name != className ||
|
|
|
classes[0].StudentNum != int(studentNum) ||
|
|
|
- classes[0].GraduatedTime.Format(sqlResultTimeFormat) != exceptedNowStr ||
|
|
|
- classes[0].CreatedTime.Format(sqlResultTimeFormat) != exceptedNowStr ||
|
|
|
- classes[0].LastUpdatedTime.Format(sqlResultTimeFormat) != exceptedNowStr {
|
|
|
+ classes[0].GraduatedTime.Format(graduatedTimeLayout) != now.Format(graduatedTimeLayout) ||
|
|
|
+ classes[0].CreatedTime.Format(createdTimeLayout) != now.Format(createdTimeLayout) ||
|
|
|
+ classes[0].LastUpdatedTime.Format(lastUpdatedTimeLayout) != now.Format(lastUpdatedTimeLayout) {
|
|
|
t.Fatal("查询数据不正确")
|
|
|
}
|
|
|
|
|
|
@@ -297,12 +316,16 @@ func TestRawSqlTemplate(t *testing.T) {
|
|
|
t.Fatal("总数不正确")
|
|
|
}
|
|
|
|
|
|
+ graduatedTimeLayout = chooseTimeLayout(queryResults[0]["graduated_time"].(string))
|
|
|
+ createdTimeLayout = chooseTimeLayout(queryResults[0]["created_time"].(string))
|
|
|
+ lastUpdatedTimeLayout = chooseTimeLayout(queryResults[0]["last_updated_time"].(string))
|
|
|
+
|
|
|
if classes[0].ID != classID ||
|
|
|
classes[0].Name != newClassName ||
|
|
|
classes[0].StudentNum != int(newStudentNum) ||
|
|
|
- classes[0].GraduatedTime.Format(sqlResultTimeFormat) != exceptedNowStr ||
|
|
|
- classes[0].CreatedTime.Format(sqlResultTimeFormat) != exceptedNowStr ||
|
|
|
- classes[0].LastUpdatedTime.Format(sqlResultTimeFormat) != exceptedNowStr {
|
|
|
+ classes[0].GraduatedTime.Format(graduatedTimeLayout) != now.Format(graduatedTimeLayout) ||
|
|
|
+ classes[0].CreatedTime.Format(createdTimeLayout) != now.Format(createdTimeLayout) ||
|
|
|
+ classes[0].LastUpdatedTime.Format(lastUpdatedTimeLayout) != now.Format(lastUpdatedTimeLayout) {
|
|
|
t.Fatal("查询数据不正确")
|
|
|
}
|
|
|
|
|
|
@@ -391,6 +414,9 @@ func TestSql(t *testing.T) {
|
|
|
Ignored: "",
|
|
|
}
|
|
|
|
|
|
+ queryClasses := make([]Class, 0)
|
|
|
+ queryClass := new(Class)
|
|
|
+
|
|
|
err = sdk.InitInstance(token, address, httpPort, grpcPort, namespace, dataSource)
|
|
|
if err != nil {
|
|
|
t.Fatal(err)
|
|
|
@@ -539,4 +565,117 @@ func TestSql(t *testing.T) {
|
|
|
if err != nil {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
|
+
|
|
|
+ err = sdk.InsertEntity(sdk.GetInstance(), tableName, class)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ tableRows, totalCount, err := sdk.Query(sdk.GetInstance(), &raw_sql_tpl.QueryExecuteParams{
|
|
|
+ TableName: tableName,
|
|
|
+ SelectColumns: []string{"id", "name"},
|
|
|
+ Conditions: raw_sql_tpl.NewConditions().
|
|
|
+ Equal("id", classID).
|
|
|
+ Equal("name", className).
|
|
|
+ Equal("student_num", studentNum),
|
|
|
+ PageNo: 0,
|
|
|
+ PageSize: 0,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if totalCount != 1 || len(tableRows) != int(totalCount) {
|
|
|
+ t.Fatal("总数不正确")
|
|
|
+ }
|
|
|
+
|
|
|
+ err = sdk.ParseSqlResults(tableRows, &queryClasses)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if queryClasses[0].ID != classID ||
|
|
|
+ queryClasses[0].Name != className ||
|
|
|
+ queryClasses[0].StudentNum != 0 ||
|
|
|
+ !queryClasses[0].GraduatedTime.IsZero() ||
|
|
|
+ (queryClasses[0].CreatedTime != nil && !queryClasses[0].CreatedTime.IsZero()) ||
|
|
|
+ !queryClasses[0].LastUpdatedTime.IsZero() {
|
|
|
+ t.Fatal("查询数据不正确")
|
|
|
+ }
|
|
|
+
|
|
|
+ tableRow, err := sdk.QueryOne(sdk.GetInstance(), &raw_sql_tpl.QueryOneExecuteParams{
|
|
|
+ TableName: tableName,
|
|
|
+ SelectColumns: []string{"id", "name"},
|
|
|
+ Conditions: raw_sql_tpl.NewConditions().
|
|
|
+ Equal("id", classID).
|
|
|
+ Equal("name", className).
|
|
|
+ Equal("student_num", studentNum),
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ err = sdk.ParseSqlResults(tableRow, queryClass)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if queryClass.ID != classID ||
|
|
|
+ queryClass.Name != className ||
|
|
|
+ queryClass.StudentNum != 0 ||
|
|
|
+ !queryClass.GraduatedTime.IsZero() ||
|
|
|
+ (queryClass.CreatedTime != nil && !queryClass.CreatedTime.IsZero()) ||
|
|
|
+ !queryClass.LastUpdatedTime.IsZero() {
|
|
|
+ t.Fatal("查询数据不正确")
|
|
|
+ }
|
|
|
+
|
|
|
+ queryCount, err := sdk.Count(sdk.GetInstance(), &raw_sql_tpl.CountExecuteParams{
|
|
|
+ TableName: tableName,
|
|
|
+ Conditions: raw_sql_tpl.NewConditions().
|
|
|
+ Equal("id", classID).
|
|
|
+ Equal("name", className).
|
|
|
+ Equal("student_num", studentNum),
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if queryCount != 1 {
|
|
|
+ t.Fatal("数量不正确")
|
|
|
+ }
|
|
|
+
|
|
|
+ exist, err := sdk.CheckExist(sdk.GetInstance(), &raw_sql_tpl.CheckExistExecuteParams{
|
|
|
+ TableName: tableName,
|
|
|
+ Conditions: raw_sql_tpl.NewConditions().
|
|
|
+ Equal("id", classID).
|
|
|
+ Equal("name", className).
|
|
|
+ Equal("student_num", studentNum),
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !exist {
|
|
|
+ t.Fatal("存在状态错误")
|
|
|
+ }
|
|
|
+
|
|
|
+ hasOnlyOne, err := sdk.CheckHasOnlyOne(sdk.GetInstance(), &raw_sql_tpl.CheckHasOnlyOneExecuteParams{
|
|
|
+ TableName: tableName,
|
|
|
+ Conditions: raw_sql_tpl.NewConditions().
|
|
|
+ Equal("id", classID).
|
|
|
+ Equal("name", className).
|
|
|
+ Equal("student_num", studentNum),
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if !hasOnlyOne {
|
|
|
+ t.Fatal("唯一性错误")
|
|
|
+ }
|
|
|
+
|
|
|
+ err = sdk.DeleteEntity(sdk.GetInstance(), tableName, class)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
}
|