package v1 import ( "fmt" "git.sxidc.com/service-supports/dps-sdk/client" "math/rand" "testing" "time" ) var tableModelDescribe = client.TableModelDescribe{ Fields: []client.TableModelField{ {"ID", "gorm:\"primary_key;type:varchar(32);comment:id;\""}, {"Name", "gorm:\"not null;type:varchar(128);comment:数据库名称;\""}, {"Time", "gorm:\"not null;type:timestamp with time zone;comment:数据库时间;\""}, {"TableNum", "gorm:\"not null;type:integer;comment:数据库表数量;\""}, }, } func TestAutoMigrate(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: "test." + simpleUUID()[0:8], Version: "v1", TableModelDescribe: tableModelDescribe, }, }). autoMigrateBatch(&client.AutoMigrateBatchRequest{ Items: []client.AutoMigrateItem{ { TablePrefixWithSchema: "test." + simpleUUID()[0:8], Version: "v1", TableModelDescribe: tableModelDescribe, }, { TablePrefixWithSchema: "test." + simpleUUID()[0:8], Version: "v1", TableModelDescribe: tableModelDescribe, }, }, }) } func TestTransaction(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) newName := simpleUUID() newNow := time.Now().Local() newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) var count int64 resultMap := make(map[string]any) newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). transaction(func(tx client.Transaction) error { statement, err := tx.InsertTx(&client.InsertRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }) if err != nil { return err } fmt.Println(statement) err = tx.End() if err != nil { return err } return nil }). queryByKeys(&client.QueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, }, &resultMap). assertEqual(id, resultMap["id"], "ID不一致"). assertEqual(name, resultMap["name"], "名称不一致"). assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致"). assertEqual(tableNum, resultMap["table_num"], "表数量不一致"). transaction(func(tx client.Transaction) error { statement, err := tx.UpdateTx(&client.UpdateRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, NewTableRow: map[string]any{ "id": id, "name": newName, "time": newNow, "table_num": newTableNum, }, UserID: "test", }) if err != nil { return err } fmt.Println(statement) err = tx.End() if err != nil { return err } return nil }). queryByKeys(&client.QueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, }, &resultMap). assertEqual(id, resultMap["id"], "ID不一致"). assertEqual(newName, resultMap["name"], "名称不一致"). assertEqual(newNow.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致"). assertEqual(newTableNum, resultMap["table_num"], "表数量不一致"). transaction(func(tx client.Transaction) error { statement, err := tx.UpdateTx(&client.UpdateRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, NewTableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }) if err != nil { return err } fmt.Println(statement) statement, err = tx.DeleteTx(&client.DeleteRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, UserID: "test", }) if err != nil { return err } fmt.Println(statement) err = tx.End() if err != nil { return err } return nil }). countWhere(&client.CountWhereRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", Where: []client.ColumnCompare{ { Column: "id", Value: id, Compare: client.CompareEqual, }, }, }, &count). assertEqual(int64(0), count, "数量不一致") } func TestTransactionBatch(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id1 := simpleUUID() name1 := simpleUUID() now1 := time.Now().Local() tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10) id2 := simpleUUID() name2 := simpleUUID() now2 := time.Now().Local() tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10) var count int64 resultMap := make(map[string]any) newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). transaction(func(tx client.Transaction) error { statement, err := tx.InsertBatchTx(&client.InsertBatchRequest{ Items: []*client.InsertTableItem{ { TablePrefixWithSchema: tablePrefix, Version: "v1", Items: []*client.InsertItem{ { KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id1, "name": name1, "time": now1, "table_num": tableNum1, }, }, { KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id2, "name": name2, "time": now2, "table_num": tableNum2, }, }, }, }, }, UserID: "test", }) if err != nil { return err } fmt.Println(statement) err = tx.End() if err != nil { return err } return nil }). queryByKeys(&client.QueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id1}, }, &resultMap). assertEqual(id1, resultMap["id"], "ID不一致"). assertEqual(name1, resultMap["name"], "名称不一致"). assertEqual(now1.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致"). assertEqual(tableNum1, resultMap["table_num"], "表数量不一致"). queryByKeys(&client.QueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id2}, }, &resultMap). assertEqual(id2, resultMap["id"], "ID不一致"). assertEqual(name2, resultMap["name"], "名称不一致"). assertEqual(now2.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致"). assertEqual(tableNum2, resultMap["table_num"], "表数量不一致"). transaction(func(tx client.Transaction) error { statement, err := tx.DeleteBatchTx(&client.DeleteBatchRequest{ Items: []*client.DeleteTableItem{ { TablePrefixWithSchema: tablePrefix, Version: "v1", Items: []*client.DeleteItem{ {KeyValues: map[string]string{"id": id1}}, {KeyValues: map[string]string{"id": id2}}, }, }, }, UserID: "test", }) if err != nil { return err } fmt.Println(statement) err = tx.End() if err != nil { return err } return nil }). countWhere(&client.CountWhereRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", Where: []client.ColumnCompare{ { Column: "id", Value: id1, Compare: client.CompareEqual, }, }, }, &count). assertEqual(int64(0), count, "数量不一致"). countWhere(&client.CountWhereRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", Where: []client.ColumnCompare{ { Column: "id", Value: id2, Compare: client.CompareEqual, }, }, }, &count). assertEqual(int64(0), count, "数量不一致") } func TestInsert(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) resultMap := make(map[string]any) newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). insert(&client.InsertRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). queryByKeys(&client.QueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, }, &resultMap). assertEqual(id, resultMap["id"], "ID不一致"). assertEqual(name, resultMap["name"], "名称不一致"). assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致"). assertEqual(tableNum, resultMap["table_num"], "表数量不一致") } func TestInsertBatch(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id1 := simpleUUID() name1 := simpleUUID() now1 := time.Now().Local() tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10) id2 := simpleUUID() name2 := simpleUUID() now2 := time.Now().Local() tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10) resultsMap := make([]map[string]any, 0) var totalCount int64 newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). insertBatch(&client.InsertBatchRequest{ Items: []*client.InsertTableItem{ { TablePrefixWithSchema: tablePrefix, Version: "v1", Items: []*client.InsertItem{ { KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id1, "name": name1, "time": now1, "table_num": tableNum1, }, }, { KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id2, "name": name2, "time": now2, "table_num": tableNum2, }, }, }, }, }, UserID: "test", }). queryByWhereAndOrderBy(&client.QueryByWhereAndOrderByRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", Where: []client.ColumnCompare{ {Column: "id", Value: id1, Compare: client.CompareEqual}, {Column: "name", Value: name1, Compare: client.CompareEqual}, {Column: "table_num", Value: tableNum1, Compare: client.CompareEqual}, }, PageNo: 1, PageSize: 1, }, &resultsMap, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). assertEqual(id1, resultsMap[0]["id"], "ID不一致"). assertEqual(name1, resultsMap[0]["name"], "名称不一致"). assertEqual(now1.UnixMilli(), resultsMap[0]["time"].(time.Time).Local().UnixMilli(), "时间不一致"). assertEqual(tableNum1, resultsMap[0]["table_num"], "表数量不一致"). commonQuery(&client.CommonQueryRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", Where: []client.ColumnCompare{ {Column: "id", Value: id2, Compare: client.CompareEqual}, {Column: "name", Value: name2, Compare: client.CompareEqual}, {Column: "table_num", Value: tableNum2, Compare: client.CompareEqual}, }, PageNo: 1, PageSize: 1, }, &resultsMap, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). assertEqual(id2, resultsMap[0]["id"], "ID不一致"). assertEqual(name2, resultsMap[0]["name"], "名称不一致"). assertEqual(now2.UnixMilli(), resultsMap[0]["time"].(time.Time).Local().UnixMilli(), "时间不一致"). assertEqual(tableNum2, resultsMap[0]["table_num"], "表数量不一致") } func TestUpdate(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) newName := simpleUUID() newNow := time.Now().Local() newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) resultMap := make(map[string]any) newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). insert(&client.InsertRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). update(&client.UpdateRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, NewTableRow: map[string]any{ "id": id, "name": newName, "time": newNow, "table_num": newTableNum, }, UserID: "test", }). queryByKeys(&client.QueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, }, &resultMap). assertEqual(id, resultMap["id"], "ID不一致"). assertEqual(newName, resultMap["name"], "名称不一致"). assertEqual(newNow.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致"). assertEqual(newTableNum, resultMap["table_num"], "表数量不一致") } func TestDelete(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) var count int64 newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). insert(&client.InsertRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). delete(&client.DeleteRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, UserID: "test", }). countWhere(&client.CountWhereRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", Where: []client.ColumnCompare{ { Column: "id", Value: id, Compare: client.CompareEqual, }, }, }, &count). assertEqual(int64(0), count, "数量不一致") } func TestDeleteBatch(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id1 := simpleUUID() name1 := simpleUUID() now1 := time.Now().Local() tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10) id2 := simpleUUID() name2 := simpleUUID() now2 := time.Now().Local() tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10) var count int64 newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). insertBatch(&client.InsertBatchRequest{ Items: []*client.InsertTableItem{ { TablePrefixWithSchema: tablePrefix, Version: "v1", Items: []*client.InsertItem{ { KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id1, "name": name1, "time": now1, "table_num": tableNum1, }, }, { KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id2, "name": name2, "time": now2, "table_num": tableNum2, }, }, }, }, }, UserID: "test", }). deleteBatch(&client.DeleteBatchRequest{ Items: []*client.DeleteTableItem{ { TablePrefixWithSchema: tablePrefix, Version: "v1", Items: []*client.DeleteItem{ {KeyValues: map[string]string{"id": id1}}, {KeyValues: map[string]string{"id": id2}}, }, }, }, UserID: "test", }). commonCount(&client.CommonCountRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", }, &count). assertEqual(int64(0), count, "数量不一致") } func TestReply(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) resultMap := make(map[string]any) newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). insert(&client.InsertRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). reply(&client.ReplayRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, UserID: "test", }). queryByKeys(&client.QueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, }, &resultMap). assertEqual(id, resultMap["id"], "ID不一致"). assertEqual(name, resultMap["name"], "名称不一致"). assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致"). assertEqual(tableNum, resultMap["table_num"], "表数量不一致") } func TestEventQuery(t *testing.T) { initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7") defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7") tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) newName := simpleUUID() newNow := time.Now().Local() newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) var totalCount int64 eventInfos := make([]client.EventInfo, 0) newToolKit(t). autoMigrate(&client.AutoMigrateRequest{ AutoMigrateItem: client.AutoMigrateItem{ TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }, }). insert(&client.InsertRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). update(&client.UpdateRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, NewTableRow: map[string]any{ "id": id, "name": newName, "time": newNow, "table_num": newTableNum, }, UserID: "test", }). countEventByKeys(&client.CountEventByKeysRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, }, &totalCount). assertEqual(2, int(totalCount), "总数不一致"). commonCountEvent(&client.CommonCountEventRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "create", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), }, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). commonCountEvent(&client.CommonCountEventRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "update", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), }, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). eventQueryByKeys(&client.EventQueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, PageNo: 0, PageSize: 0, }, &eventInfos, &totalCount). assertEqual(2, int(totalCount), "总数不一致"). assertEqual(2, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("create", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). assertEqual(id, eventInfos[1].Key, "关键字段不一致"). assertEqual("v1", eventInfos[1].Version, "版本不一致"). assertEqual("update", eventInfos[1].Operation, "操作不一致"). assertEqual("test", eventInfos[1].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[1].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[1].Value, "值为空不一致"). eventQueryByKeys(&client.EventQueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, PageNo: 1, PageSize: 1, }, &eventInfos, &totalCount). assertEqual(2, int(totalCount), "总数不一致"). assertEqual(1, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("create", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). commonEventQuery(&client.CommonEventQueryRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "create", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), PageNo: 0, PageSize: 0, }, &eventInfos, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). assertEqual(1, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("create", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). commonEventQuery(&client.CommonEventQueryRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "update", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), PageNo: 0, PageSize: 0, }, &eventInfos, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). assertEqual(1, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("update", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). delete(&client.DeleteRequest{ TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, UserID: "test", }). countEventHistoryByKeys(&client.CountEventByKeysRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, }, &totalCount). assertEqual(3, int(totalCount), "总数不一致"). commonCountEventHistory(&client.CommonCountEventRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "create", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), }, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). commonCountEventHistory(&client.CommonCountEventRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "update", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), }, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). commonCountEventHistory(&client.CommonCountEventRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "delete", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), }, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). eventHistoryQueryByKeys(&client.EventQueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, PageNo: 0, PageSize: 0, }, &eventInfos, &totalCount). assertEqual(3, int(totalCount), "总数不一致"). assertEqual(3, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("create", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). assertEqual(id, eventInfos[1].Key, "关键字段不一致"). assertEqual("v1", eventInfos[1].Version, "版本不一致"). assertEqual("update", eventInfos[1].Operation, "操作不一致"). assertEqual("test", eventInfos[1].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[1].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[1].Value, "值为空不一致"). assertEqual(id, eventInfos[2].Key, "关键字段不一致"). assertEqual("v1", eventInfos[2].Version, "版本不一致"). assertEqual("delete", eventInfos[2].Operation, "操作不一致"). assertEqual("test", eventInfos[2].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[2].CreateTime, "创建事件为空"). assertEqual("", eventInfos[2].Value, "值为空不一致"). eventHistoryQueryByKeys(&client.EventQueryByKeysRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, PageNo: 1, PageSize: 1, }, &eventInfos, &totalCount). assertEqual(3, int(totalCount), "总数不一致"). assertEqual(1, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("create", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). commonEventHistoryQuery(&client.CommonEventQueryRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "create", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), PageNo: 0, PageSize: 0, }, &eventInfos, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). assertEqual(1, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("create", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). commonEventHistoryQuery(&client.CommonEventQueryRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "update", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), PageNo: 0, PageSize: 0, }, &eventInfos, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). assertEqual(1, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("update", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertNotEmpty(eventInfos[0].Value, "值为空不一致"). commonEventHistoryQuery(&client.CommonEventQueryRequest{ TablePrefixWithSchema: tablePrefix, KeyValues: []string{id}, Version: "v1", Operation: "delete", CreatorID: "test", StartCreatedTime: now.Format(time.DateTime), EndCreatedTime: now.Add(time.Second).Format(time.DateTime), PageNo: 0, PageSize: 0, }, &eventInfos, &totalCount). assertEqual(1, int(totalCount), "总数不一致"). assertEqual(1, len(eventInfos), "事件数量不一致"). assertEqual(id, eventInfos[0].Key, "关键字段不一致"). assertEqual("v1", eventInfos[0].Version, "版本不一致"). assertEqual("delete", eventInfos[0].Operation, "操作不一致"). assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致"). assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空"). assertEqual("", eventInfos[0].Value, "值为空不一致") }