v1_test.go 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190
  1. package v1
  2. import (
  3. "fmt"
  4. "git.sxidc.com/service-supports/dps-sdk/client"
  5. uuid "github.com/satori/go.uuid"
  6. "math/rand"
  7. "strings"
  8. "testing"
  9. "time"
  10. )
  11. func getUUID() string {
  12. return uuid.NewV4().String()
  13. }
  14. func simpleUUID() string {
  15. return strings.ReplaceAll(getUUID(), "-", "")
  16. }
  17. var tableModelDescribe = map[string]string{
  18. "ID": "gorm:\"primary_key;type:varchar(32);comment:id;\"",
  19. "Name": "gorm:\"not null;type:varchar(128);comment:数据库名称;\"",
  20. "Time": "gorm:\"not null;type:timestamp with time zone;comment:数据库时间;\"",
  21. "TableNum": "gorm:\"not null;type:integer;comment:数据库表数量;\"",
  22. }
  23. func TestAutoMigrate(t *testing.T) {
  24. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  25. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  26. newToolKit(t).
  27. autoMigrate(&client.AutoMigrateRequest{
  28. Items: []client.AutoMigrateItem{
  29. {
  30. TablePrefixWithSchema: "test." + simpleUUID()[0:8],
  31. Version: "v1",
  32. TableModelDescribe: tableModelDescribe,
  33. },
  34. },
  35. })
  36. }
  37. func TestTransaction(t *testing.T) {
  38. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  39. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  40. tablePrefix := "test." + simpleUUID()[0:8]
  41. id := simpleUUID()
  42. name := simpleUUID()
  43. now := time.Now().Local()
  44. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  45. newName := simpleUUID()
  46. newNow := time.Now().Local()
  47. newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  48. var count int64
  49. resultTableRow := client.NewTableRow()
  50. newToolKit(t).
  51. autoMigrate(&client.AutoMigrateRequest{
  52. Items: []client.AutoMigrateItem{
  53. {
  54. TablePrefixWithSchema: tablePrefix,
  55. Version: "v1",
  56. TableModelDescribe: tableModelDescribe,
  57. },
  58. },
  59. }).
  60. transaction(func(tx client.Transaction) error {
  61. statement, err := tx.InsertTx(&client.InsertRequest{
  62. TablePrefixWithSchema: tablePrefix,
  63. Version: "v1",
  64. KeyColumns: []string{"id"},
  65. TableRow: client.NewTableRow().
  66. AddColumnValueString("id", id).
  67. AddColumnValueString("name", name).
  68. AddColumnValueTime("time", now).
  69. AddColumnValueInt("table_num", tableNum),
  70. UserID: "test",
  71. })
  72. if err != nil {
  73. return err
  74. }
  75. fmt.Println(statement)
  76. return nil
  77. }).
  78. queryByKeys(&client.QueryByKeysRequest{
  79. TablePrefixWithSchema: tablePrefix,
  80. Version: "v1",
  81. KeyValues: map[string]string{"id": id},
  82. }, resultTableRow).
  83. assertEqual(id, resultTableRow.ColumnValueString("id"), "ID不一致").
  84. assertEqual(name, resultTableRow.ColumnValueString("name"), "名称不一致").
  85. assertEqual(now.Unix(), resultTableRow.ColumnValueTime("time").Unix(), "时间不一致").
  86. assertEqual(tableNum, resultTableRow.ColumnValueInt("table_num"), "表数量不一致").
  87. transaction(func(tx client.Transaction) error {
  88. statement, err := tx.UpdateTx(&client.UpdateRequest{
  89. TablePrefixWithSchema: tablePrefix,
  90. Version: "v1",
  91. KeyValues: map[string]string{"id": id},
  92. NewTableRow: client.NewTableRow().
  93. AddColumnValueString("id", id).
  94. AddColumnValueString("name", newName).
  95. AddColumnValueTime("time", newNow).
  96. AddColumnValueInt("table_num", newTableNum),
  97. UserID: "test",
  98. })
  99. if err != nil {
  100. return err
  101. }
  102. fmt.Println(statement)
  103. return nil
  104. }).
  105. queryByKeys(&client.QueryByKeysRequest{
  106. TablePrefixWithSchema: tablePrefix,
  107. Version: "v1",
  108. KeyValues: map[string]string{"id": id},
  109. }, resultTableRow).
  110. assertEqual(id, resultTableRow.ColumnValueString("id"), "ID不一致").
  111. assertEqual(newName, resultTableRow.ColumnValueString("name"), "名称不一致").
  112. assertEqual(newNow.Unix(), resultTableRow.ColumnValueTime("time").Unix(), "时间不一致").
  113. assertEqual(newTableNum, resultTableRow.ColumnValueInt("table_num"), "表数量不一致").
  114. transaction(func(tx client.Transaction) error {
  115. statement, err := tx.UpdateTx(&client.UpdateRequest{
  116. TablePrefixWithSchema: tablePrefix,
  117. Version: "v1",
  118. KeyValues: map[string]string{"id": id},
  119. NewTableRow: client.NewTableRow().
  120. AddColumnValueString("id", id).
  121. AddColumnValueString("name", name).
  122. AddColumnValueTime("time", now).
  123. AddColumnValueInt("table_num", tableNum),
  124. UserID: "test",
  125. })
  126. if err != nil {
  127. return err
  128. }
  129. fmt.Println(statement)
  130. statement, err = tx.DeleteTx(&client.DeleteRequest{
  131. TablePrefixWithSchema: tablePrefix,
  132. Version: "v1",
  133. KeyValues: map[string]string{"id": id},
  134. UserID: "test",
  135. })
  136. if err != nil {
  137. return err
  138. }
  139. fmt.Println(statement)
  140. return nil
  141. }).
  142. countWhere(&client.CountWhereRequest{
  143. TablePrefixWithSchema: tablePrefix,
  144. Version: "v1",
  145. Where: client.NewClause().Equal("id", id),
  146. }, &count).
  147. assertEqual(int64(0), count, "数量不一致").
  148. insert(&client.InsertRequest{
  149. TablePrefixWithSchema: tablePrefix,
  150. Version: "v1",
  151. KeyColumns: []string{"id"},
  152. TableRow: client.NewTableRow().
  153. AddColumnValueString("id", id).
  154. AddColumnValueString("name", name).
  155. AddColumnValueTime("time", now).
  156. AddColumnValueInt("table_num", tableNum),
  157. UserID: "test",
  158. }).
  159. transaction(func(tx client.Transaction) error {
  160. statement, err := tx.DeleteWhereTx(&client.DeleteWhereRequest{
  161. TablePrefixWithSchema: tablePrefix,
  162. Version: "v1",
  163. KeyColumns: []string{"id"},
  164. Where: client.NewClause().Equal("name", name),
  165. UserID: "test",
  166. })
  167. if err != nil {
  168. return err
  169. }
  170. fmt.Println(statement)
  171. return nil
  172. }).
  173. countWhere(&client.CountWhereRequest{
  174. TablePrefixWithSchema: tablePrefix,
  175. Version: "v1",
  176. Where: client.NewClause().Equal("id", id),
  177. }, &count).
  178. assertEqual(int64(0), count, "数量不一致")
  179. }
  180. func TestTransactionBatch(t *testing.T) {
  181. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  182. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  183. tablePrefix := "test." + simpleUUID()[0:8]
  184. id1 := simpleUUID()
  185. name1 := simpleUUID()
  186. now1 := time.Now().Local()
  187. tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10)
  188. id2 := simpleUUID()
  189. name2 := simpleUUID()
  190. now2 := time.Now().Local()
  191. tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10)
  192. var count int64
  193. resultTableRow := client.NewTableRow()
  194. newToolKit(t).
  195. autoMigrate(&client.AutoMigrateRequest{
  196. Items: []client.AutoMigrateItem{
  197. {
  198. TablePrefixWithSchema: tablePrefix,
  199. Version: "v1",
  200. TableModelDescribe: tableModelDescribe,
  201. },
  202. },
  203. }).
  204. transaction(func(tx client.Transaction) error {
  205. statement, err := tx.InsertBatchTx(&client.InsertBatchRequest{
  206. Items: []client.InsertTableRowItem{
  207. {
  208. TablePrefixWithSchema: tablePrefix,
  209. Version: "v1",
  210. KeyColumns: []string{"id"},
  211. TableRows: []*client.TableRow{
  212. client.NewTableRow().
  213. AddColumnValueString("id", id1).
  214. AddColumnValueString("name", name1).
  215. AddColumnValueTime("time", now1).
  216. AddColumnValueInt("table_num", tableNum1),
  217. client.NewTableRow().
  218. AddColumnValueString("id", id2).
  219. AddColumnValueString("name", name2).
  220. AddColumnValueTime("time", now2).
  221. AddColumnValueInt("table_num", tableNum2),
  222. },
  223. },
  224. },
  225. })
  226. if err != nil {
  227. return err
  228. }
  229. fmt.Println(statement)
  230. return nil
  231. }).
  232. queryByKeys(&client.QueryByKeysRequest{
  233. TablePrefixWithSchema: tablePrefix,
  234. Version: "v1",
  235. KeyValues: map[string]string{"id": id1},
  236. }, resultTableRow).
  237. assertEqual(id1, resultTableRow.ColumnValueString("id"), "ID不一致").
  238. assertEqual(name1, resultTableRow.ColumnValueString("name"), "名称不一致").
  239. assertEqual(now1.Unix(), resultTableRow.ColumnValueTime("time").Unix(), "时间不一致").
  240. assertEqual(tableNum1, resultTableRow.ColumnValueInt("table_num"), "表数量不一致").
  241. queryByKeys(&client.QueryByKeysRequest{
  242. TablePrefixWithSchema: tablePrefix,
  243. Version: "v1",
  244. KeyValues: map[string]string{"id": id2},
  245. }, resultTableRow).
  246. assertEqual(id2, resultTableRow.ColumnValueString("id"), "ID不一致").
  247. assertEqual(name2, resultTableRow.ColumnValueString("name"), "名称不一致").
  248. assertEqual(now2.Unix(), resultTableRow.ColumnValueTime("time").Unix(), "时间不一致").
  249. assertEqual(tableNum2, resultTableRow.ColumnValueInt("table_num"), "表数量不一致").
  250. transaction(func(tx client.Transaction) error {
  251. statement, err := tx.DeleteBatchTx(&client.DeleteBatchRequest{
  252. Items: []client.DeleteTableRowItem{
  253. {
  254. TablePrefixWithSchema: tablePrefix,
  255. Version: "v1",
  256. KeyValues: []map[string]string{
  257. {"id": id1},
  258. {"id": id2},
  259. },
  260. },
  261. },
  262. UserID: "test",
  263. })
  264. if err != nil {
  265. return err
  266. }
  267. fmt.Println(statement)
  268. return nil
  269. }).
  270. countWhere(&client.CountWhereRequest{
  271. TablePrefixWithSchema: tablePrefix,
  272. Version: "v1",
  273. Where: client.NewClause().Equal("id", id1),
  274. }, &count).
  275. assertEqual(int64(0), count, "数量不一致").
  276. countWhere(&client.CountWhereRequest{
  277. TablePrefixWithSchema: tablePrefix,
  278. Version: "v1",
  279. Where: client.NewClause().Equal("id", id2),
  280. }, &count).
  281. assertEqual(int64(0), count, "数量不一致")
  282. }
  283. func TestInsert(t *testing.T) {
  284. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  285. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  286. tablePrefix := "test." + simpleUUID()[0:8]
  287. id := simpleUUID()
  288. name := simpleUUID()
  289. now := time.Now().Local()
  290. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  291. resultTableRow := client.NewTableRow()
  292. newToolKit(t).
  293. autoMigrate(&client.AutoMigrateRequest{
  294. Items: []client.AutoMigrateItem{
  295. {
  296. TablePrefixWithSchema: tablePrefix,
  297. Version: "v1",
  298. TableModelDescribe: tableModelDescribe,
  299. },
  300. },
  301. }).
  302. insert(&client.InsertRequest{
  303. TablePrefixWithSchema: tablePrefix,
  304. Version: "v1",
  305. KeyColumns: []string{"id"},
  306. TableRow: client.NewTableRow().
  307. AddColumnValueString("id", id).
  308. AddColumnValueString("name", name).
  309. AddColumnValueTime("time", now).
  310. AddColumnValueInt("table_num", tableNum),
  311. UserID: "test",
  312. }).
  313. queryByKeys(&client.QueryByKeysRequest{
  314. TablePrefixWithSchema: tablePrefix,
  315. Version: "v1",
  316. KeyValues: map[string]string{"id": id},
  317. }, resultTableRow).
  318. assertEqual(id, resultTableRow.ColumnValueString("id"), "ID不一致").
  319. assertEqual(name, resultTableRow.ColumnValueString("name"), "名称不一致").
  320. assertEqual(now.Unix(), resultTableRow.ColumnValueTime("time").Unix(), "时间不一致").
  321. assertEqual(tableNum, resultTableRow.ColumnValueInt("table_num"), "表数量不一致")
  322. }
  323. func TestInsertBatch(t *testing.T) {
  324. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  325. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  326. tablePrefix := "test." + simpleUUID()[0:8]
  327. id1 := simpleUUID()
  328. name1 := simpleUUID()
  329. now1 := time.Now().Local()
  330. tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10)
  331. id2 := simpleUUID()
  332. name2 := simpleUUID()
  333. now2 := time.Now().Local()
  334. tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10)
  335. resultTableRows := make([]client.TableRow, 0)
  336. var totalCount int64
  337. newToolKit(t).
  338. autoMigrate(&client.AutoMigrateRequest{
  339. Items: []client.AutoMigrateItem{
  340. {
  341. TablePrefixWithSchema: tablePrefix,
  342. Version: "v1",
  343. TableModelDescribe: tableModelDescribe,
  344. },
  345. },
  346. }).
  347. insertBatch(&client.InsertBatchRequest{
  348. Items: []client.InsertTableRowItem{
  349. {
  350. TablePrefixWithSchema: tablePrefix,
  351. Version: "v1",
  352. KeyColumns: []string{"id"},
  353. TableRows: []*client.TableRow{
  354. client.NewTableRow().
  355. AddColumnValueString("id", id1).
  356. AddColumnValueString("name", name1).
  357. AddColumnValueTime("time", now1).
  358. AddColumnValueInt("table_num", tableNum1),
  359. client.NewTableRow().
  360. AddColumnValueString("id", id2).
  361. AddColumnValueString("name", name2).
  362. AddColumnValueTime("time", now2).
  363. AddColumnValueInt("table_num", tableNum2),
  364. },
  365. },
  366. },
  367. }).
  368. queryByWhereAndOrderBy(&client.QueryByWhereAndOrderByRequest{
  369. TablePrefixWithSchema: tablePrefix,
  370. Version: "v1",
  371. Where: client.NewClause().
  372. Equal("id", id1).
  373. Equal("name", name1).
  374. Equal("table_num", tableNum1),
  375. PageNo: 1,
  376. PageSize: 1,
  377. }, &resultTableRows, &totalCount).
  378. assertEqual(1, int(totalCount), "总数不一致").
  379. assertEqual(id1, resultTableRows[0].ColumnValueString("id"), "ID不一致").
  380. assertEqual(name1, resultTableRows[0].ColumnValueString("name"), "名称不一致").
  381. assertEqual(now1.Unix(), resultTableRows[0].ColumnValueTime("time").Unix(), "时间不一致").
  382. assertEqual(tableNum1, resultTableRows[0].ColumnValueInt("table_num"), "表数量不一致").
  383. commonQuery(&client.CommonQueryRequest{
  384. TablePrefixWithSchema: tablePrefix,
  385. Version: "v1",
  386. Where: client.NewClause().
  387. Equal("id", id2).
  388. Equal("name", name2).
  389. Equal("table_num", tableNum2),
  390. PageNo: 1,
  391. PageSize: 1,
  392. }, &resultTableRows, &totalCount).
  393. assertEqual(1, int(totalCount), "总数不一致").
  394. assertEqual(id2, resultTableRows[0].ColumnValueString("id"), "ID不一致").
  395. assertEqual(name2, resultTableRows[0].ColumnValueString("name"), "名称不一致").
  396. assertEqual(now2.Unix(), resultTableRows[0].ColumnValueTime("time").Unix(), "时间不一致").
  397. assertEqual(tableNum2, resultTableRows[0].ColumnValueInt("table_num"), "表数量不一致").
  398. queryOnlyByWhereAndOrderBy(&client.QueryByWhereAndOrderByRequest{
  399. TablePrefixWithSchema: tablePrefix,
  400. Version: "v1",
  401. Where: client.NewClause().
  402. Equal("id", id1).
  403. Equal("name", name1).
  404. Equal("table_num", tableNum1),
  405. PageNo: 1,
  406. PageSize: 1,
  407. }, &resultTableRows).
  408. assertEqual(id1, resultTableRows[0].ColumnValueString("id"), "ID不一致").
  409. assertEqual(name1, resultTableRows[0].ColumnValueString("name"), "名称不一致").
  410. assertEqual(now1.Unix(), resultTableRows[0].ColumnValueTime("time").Unix(), "时间不一致").
  411. assertEqual(tableNum1, resultTableRows[0].ColumnValueInt("table_num"), "表数量不一致").
  412. commonQueryOnly(&client.CommonQueryRequest{
  413. TablePrefixWithSchema: tablePrefix,
  414. Version: "v1",
  415. Where: client.NewClause().
  416. Equal("id", id2).
  417. Equal("name", name2).
  418. Equal("table_num", tableNum2),
  419. PageNo: 1,
  420. PageSize: 1,
  421. }, &resultTableRows).
  422. assertEqual(id2, resultTableRows[0].ColumnValueString("id"), "ID不一致").
  423. assertEqual(name2, resultTableRows[0].ColumnValueString("name"), "名称不一致").
  424. assertEqual(now2.Unix(), resultTableRows[0].ColumnValueTime("time").Unix(), "时间不一致").
  425. assertEqual(tableNum2, resultTableRows[0].ColumnValueInt("table_num"), "表数量不一致")
  426. }
  427. func TestUpdate(t *testing.T) {
  428. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  429. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  430. tablePrefix := "test." + simpleUUID()[0:8]
  431. id := simpleUUID()
  432. name := simpleUUID()
  433. now := time.Now().Local()
  434. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  435. newName := simpleUUID()
  436. newNow := time.Now().Local()
  437. newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  438. resultTableRow := client.NewTableRow()
  439. newToolKit(t).
  440. autoMigrate(&client.AutoMigrateRequest{
  441. Items: []client.AutoMigrateItem{
  442. {
  443. TablePrefixWithSchema: tablePrefix,
  444. Version: "v1",
  445. TableModelDescribe: tableModelDescribe,
  446. },
  447. },
  448. }).
  449. insert(&client.InsertRequest{
  450. TablePrefixWithSchema: tablePrefix,
  451. Version: "v1",
  452. KeyColumns: []string{"id"},
  453. TableRow: client.NewTableRow().
  454. AddColumnValueString("id", id).
  455. AddColumnValueString("name", name).
  456. AddColumnValueTime("time", now).
  457. AddColumnValueInt("table_num", tableNum),
  458. UserID: "test",
  459. }).
  460. update(&client.UpdateRequest{
  461. TablePrefixWithSchema: tablePrefix,
  462. Version: "v1",
  463. KeyValues: map[string]string{"id": id},
  464. NewTableRow: client.NewTableRow().
  465. AddColumnValueString("id", id).
  466. AddColumnValueString("name", newName).
  467. AddColumnValueTime("time", newNow).
  468. AddColumnValueInt("table_num", newTableNum),
  469. UserID: "test",
  470. }).
  471. queryByKeys(&client.QueryByKeysRequest{
  472. TablePrefixWithSchema: tablePrefix,
  473. Version: "v1",
  474. KeyValues: map[string]string{"id": id},
  475. }, resultTableRow).
  476. assertEqual(id, resultTableRow.ColumnValueString("id"), "ID不一致").
  477. assertEqual(newName, resultTableRow.ColumnValueString("name"), "名称不一致").
  478. assertEqual(newNow.Unix(), resultTableRow.ColumnValueTime("time").Unix(), "时间不一致").
  479. assertEqual(newTableNum, resultTableRow.ColumnValueInt("table_num"), "表数量不一致")
  480. }
  481. func TestDelete(t *testing.T) {
  482. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  483. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  484. tablePrefix := "test." + simpleUUID()[0:8]
  485. id := simpleUUID()
  486. name := simpleUUID()
  487. now := time.Now().Local()
  488. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  489. var count int64
  490. newToolKit(t).
  491. autoMigrate(&client.AutoMigrateRequest{
  492. Items: []client.AutoMigrateItem{
  493. {
  494. TablePrefixWithSchema: tablePrefix,
  495. Version: "v1",
  496. TableModelDescribe: tableModelDescribe,
  497. },
  498. },
  499. }).
  500. insert(&client.InsertRequest{
  501. TablePrefixWithSchema: tablePrefix,
  502. Version: "v1",
  503. KeyColumns: []string{"id"},
  504. TableRow: client.NewTableRow().
  505. AddColumnValueString("id", id).
  506. AddColumnValueString("name", name).
  507. AddColumnValueTime("time", now).
  508. AddColumnValueInt("table_num", tableNum),
  509. UserID: "test",
  510. }).
  511. delete(&client.DeleteRequest{
  512. TablePrefixWithSchema: tablePrefix,
  513. Version: "v1",
  514. KeyValues: map[string]string{"id": id},
  515. UserID: "test",
  516. }).
  517. countWhere(&client.CountWhereRequest{
  518. TablePrefixWithSchema: tablePrefix,
  519. Version: "v1",
  520. Where: client.NewClause().Equal("id", id),
  521. }, &count).
  522. assertEqual(int64(0), count, "数量不一致")
  523. }
  524. func TestDeleteWhere(t *testing.T) {
  525. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  526. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  527. tablePrefix := "test." + simpleUUID()[0:8]
  528. id := simpleUUID()
  529. name := simpleUUID()
  530. now := time.Now().Local()
  531. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  532. var count int64
  533. newToolKit(t).
  534. autoMigrate(&client.AutoMigrateRequest{
  535. Items: []client.AutoMigrateItem{
  536. {
  537. TablePrefixWithSchema: tablePrefix,
  538. Version: "v1",
  539. TableModelDescribe: tableModelDescribe,
  540. },
  541. },
  542. }).
  543. insert(&client.InsertRequest{
  544. TablePrefixWithSchema: tablePrefix,
  545. Version: "v1",
  546. KeyColumns: []string{"id"},
  547. TableRow: client.NewTableRow().
  548. AddColumnValueString("id", id).
  549. AddColumnValueString("name", name).
  550. AddColumnValueTime("time", now).
  551. AddColumnValueInt("table_num", tableNum),
  552. UserID: "test",
  553. }).
  554. deleteWhere(&client.DeleteWhereRequest{
  555. TablePrefixWithSchema: tablePrefix,
  556. Version: "v1",
  557. KeyColumns: []string{"id"},
  558. Where: client.NewClause().Equal("name", name),
  559. UserID: "test",
  560. }).
  561. countWhere(&client.CountWhereRequest{
  562. TablePrefixWithSchema: tablePrefix,
  563. Version: "v1",
  564. Where: client.NewClause().Equal("id", id),
  565. }, &count).
  566. assertEqual(int64(0), count, "数量不一致")
  567. }
  568. func TestDeleteBatch(t *testing.T) {
  569. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  570. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  571. tablePrefix := "test." + simpleUUID()[0:8]
  572. id1 := simpleUUID()
  573. name1 := simpleUUID()
  574. now1 := time.Now().Local()
  575. tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10)
  576. id2 := simpleUUID()
  577. name2 := simpleUUID()
  578. now2 := time.Now().Local()
  579. tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10)
  580. var count int64
  581. newToolKit(t).
  582. autoMigrate(&client.AutoMigrateRequest{
  583. Items: []client.AutoMigrateItem{
  584. {
  585. TablePrefixWithSchema: tablePrefix,
  586. Version: "v1",
  587. TableModelDescribe: tableModelDescribe,
  588. },
  589. },
  590. }).
  591. insertBatch(&client.InsertBatchRequest{
  592. Items: []client.InsertTableRowItem{
  593. {
  594. TablePrefixWithSchema: tablePrefix,
  595. Version: "v1",
  596. KeyColumns: []string{"id"},
  597. TableRows: []*client.TableRow{
  598. client.NewTableRow().
  599. AddColumnValueString("id", id1).
  600. AddColumnValueString("name", name1).
  601. AddColumnValueTime("time", now1).
  602. AddColumnValueInt("table_num", tableNum1),
  603. client.NewTableRow().
  604. AddColumnValueString("id", id2).
  605. AddColumnValueString("name", name2).
  606. AddColumnValueTime("time", now2).
  607. AddColumnValueInt("table_num", tableNum2),
  608. },
  609. },
  610. },
  611. }).
  612. deleteBatch(&client.DeleteBatchRequest{
  613. Items: []client.DeleteTableRowItem{
  614. {
  615. TablePrefixWithSchema: tablePrefix,
  616. Version: "v1",
  617. KeyValues: []map[string]string{
  618. {"id": id1},
  619. {"id": id2},
  620. },
  621. },
  622. },
  623. UserID: "test",
  624. }).
  625. commonCount(&client.CommonCountRequest{
  626. TablePrefixWithSchema: tablePrefix,
  627. Version: "v1",
  628. }, &count).
  629. assertEqual(int64(0), count, "数量不一致")
  630. }
  631. func TestReply(t *testing.T) {
  632. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  633. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  634. tablePrefix := "test." + simpleUUID()[0:8]
  635. id := simpleUUID()
  636. name := simpleUUID()
  637. now := time.Now().Local()
  638. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  639. resultTableRow := client.NewTableRow()
  640. newToolKit(t).
  641. autoMigrate(&client.AutoMigrateRequest{
  642. Items: []client.AutoMigrateItem{
  643. {
  644. TablePrefixWithSchema: tablePrefix,
  645. Version: "v1",
  646. TableModelDescribe: tableModelDescribe,
  647. },
  648. },
  649. }).
  650. insert(&client.InsertRequest{
  651. TablePrefixWithSchema: tablePrefix,
  652. Version: "v1",
  653. KeyColumns: []string{"id"},
  654. TableRow: client.NewTableRow().
  655. AddColumnValueString("id", id).
  656. AddColumnValueString("name", name).
  657. AddColumnValueTime("time", now).
  658. AddColumnValueInt("table_num", tableNum),
  659. UserID: "test",
  660. }).
  661. reply(&client.ReplayRequest{
  662. TablePrefixWithSchema: tablePrefix,
  663. Version: "v1",
  664. KeyValues: map[string]string{"id": id},
  665. UserID: "test",
  666. }).
  667. queryByKeys(&client.QueryByKeysRequest{
  668. TablePrefixWithSchema: tablePrefix,
  669. Version: "v1",
  670. KeyValues: map[string]string{"id": id},
  671. }, resultTableRow).
  672. assertEqual(id, resultTableRow.ColumnValueString("id"), "ID不一致").
  673. assertEqual(name, resultTableRow.ColumnValueString("name"), "名称不一致").
  674. assertEqual(now.Unix(), resultTableRow.ColumnValueTime("time").Unix(), "时间不一致").
  675. assertEqual(tableNum, resultTableRow.ColumnValueInt("table_num"), "表数量不一致")
  676. }
  677. func TestEventQuery(t *testing.T) {
  678. initClient(t, "localhost:30170", "2b78141779ee432295ca371b91c5cac7")
  679. defer destroyClient(t, "2b78141779ee432295ca371b91c5cac7")
  680. tablePrefix := "test." + simpleUUID()[0:8]
  681. id := simpleUUID()
  682. name := simpleUUID()
  683. now := time.Now().Local()
  684. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  685. newName := simpleUUID()
  686. newNow := time.Now().Local()
  687. newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  688. var totalCount int64
  689. eventInfos := make([]client.EventInfo, 0)
  690. newToolKit(t).
  691. autoMigrate(&client.AutoMigrateRequest{
  692. Items: []client.AutoMigrateItem{
  693. {
  694. TablePrefixWithSchema: tablePrefix,
  695. Version: "v1",
  696. TableModelDescribe: tableModelDescribe,
  697. },
  698. },
  699. }).
  700. insert(&client.InsertRequest{
  701. TablePrefixWithSchema: tablePrefix,
  702. Version: "v1",
  703. KeyColumns: []string{"id"},
  704. TableRow: client.NewTableRow().
  705. AddColumnValueString("id", id).
  706. AddColumnValueString("name", name).
  707. AddColumnValueTime("time", now).
  708. AddColumnValueInt("table_num", tableNum),
  709. UserID: "test",
  710. }).
  711. update(&client.UpdateRequest{
  712. TablePrefixWithSchema: tablePrefix,
  713. Version: "v1",
  714. KeyValues: map[string]string{"id": id},
  715. NewTableRow: client.NewTableRow().
  716. AddColumnValueString("id", id).
  717. AddColumnValueString("name", newName).
  718. AddColumnValueTime("time", newNow).
  719. AddColumnValueInt("table_num", newTableNum),
  720. UserID: "test",
  721. }).
  722. countEventByKeys(&client.CountEventByKeysRequest{
  723. TablePrefixWithSchema: tablePrefix,
  724. KeyValues: []string{id},
  725. }, &totalCount).
  726. assertEqual(2, int(totalCount), "总数不一致").
  727. commonCountEvent(&client.CommonCountEventRequest{
  728. TablePrefixWithSchema: tablePrefix,
  729. KeyValues: []string{id},
  730. Version: "v1",
  731. Operation: "create",
  732. CreatorID: "test",
  733. StartCreatedTime: now.Format(time.DateTime),
  734. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  735. }, &totalCount).
  736. assertEqual(1, int(totalCount), "总数不一致").
  737. commonCountEvent(&client.CommonCountEventRequest{
  738. TablePrefixWithSchema: tablePrefix,
  739. KeyValues: []string{id},
  740. Version: "v1",
  741. Operation: "update",
  742. CreatorID: "test",
  743. StartCreatedTime: now.Format(time.DateTime),
  744. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  745. }, &totalCount).
  746. assertEqual(1, int(totalCount), "总数不一致").
  747. eventQueryByKeys(&client.EventQueryByKeysRequest{
  748. TablePrefixWithSchema: tablePrefix,
  749. KeyValues: []string{id},
  750. PageNo: 0,
  751. PageSize: 0,
  752. }, &eventInfos, &totalCount).
  753. assertEqual(2, int(totalCount), "总数不一致").
  754. assertEqual(2, len(eventInfos), "事件数量不一致").
  755. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  756. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  757. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  758. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  759. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  760. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  761. assertEqual(id, eventInfos[1].Key, "关键字段不一致").
  762. assertEqual("v1", eventInfos[1].Version, "版本不一致").
  763. assertEqual("update", eventInfos[1].Operation, "操作不一致").
  764. assertEqual("test", eventInfos[1].CreatorID, "创建者ID不一致").
  765. assertNotEmpty(eventInfos[1].CreateTime, "创建事件为空").
  766. assertNotEmpty(eventInfos[1].Value, "值为空不一致").
  767. eventQueryByKeys(&client.EventQueryByKeysRequest{
  768. TablePrefixWithSchema: tablePrefix,
  769. KeyValues: []string{id},
  770. PageNo: 1,
  771. PageSize: 1,
  772. }, &eventInfos, &totalCount).
  773. assertEqual(2, int(totalCount), "总数不一致").
  774. assertEqual(1, len(eventInfos), "事件数量不一致").
  775. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  776. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  777. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  778. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  779. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  780. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  781. commonEventQuery(&client.CommonEventQueryRequest{
  782. TablePrefixWithSchema: tablePrefix,
  783. KeyValues: []string{id},
  784. Version: "v1",
  785. Operation: "create",
  786. CreatorID: "test",
  787. StartCreatedTime: now.Format(time.DateTime),
  788. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  789. PageNo: 0,
  790. PageSize: 0,
  791. }, &eventInfos, &totalCount).
  792. assertEqual(1, int(totalCount), "总数不一致").
  793. assertEqual(1, len(eventInfos), "事件数量不一致").
  794. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  795. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  796. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  797. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  798. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  799. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  800. commonEventQuery(&client.CommonEventQueryRequest{
  801. TablePrefixWithSchema: tablePrefix,
  802. KeyValues: []string{id},
  803. Version: "v1",
  804. Operation: "update",
  805. CreatorID: "test",
  806. StartCreatedTime: now.Format(time.DateTime),
  807. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  808. PageNo: 0,
  809. PageSize: 0,
  810. }, &eventInfos, &totalCount).
  811. assertEqual(1, int(totalCount), "总数不一致").
  812. assertEqual(1, len(eventInfos), "事件数量不一致").
  813. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  814. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  815. assertEqual("update", eventInfos[0].Operation, "操作不一致").
  816. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  817. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  818. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  819. eventQueryOnlyByKeys(&client.EventQueryByKeysRequest{
  820. TablePrefixWithSchema: tablePrefix,
  821. KeyValues: []string{id},
  822. PageNo: 0,
  823. PageSize: 0,
  824. }, &eventInfos).
  825. assertEqual(2, len(eventInfos), "事件数量不一致").
  826. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  827. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  828. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  829. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  830. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  831. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  832. assertEqual(id, eventInfos[1].Key, "关键字段不一致").
  833. assertEqual("v1", eventInfos[1].Version, "版本不一致").
  834. assertEqual("update", eventInfos[1].Operation, "操作不一致").
  835. assertEqual("test", eventInfos[1].CreatorID, "创建者ID不一致").
  836. assertNotEmpty(eventInfos[1].CreateTime, "创建事件为空").
  837. assertNotEmpty(eventInfos[1].Value, "值为空不一致").
  838. eventQueryOnlyByKeys(&client.EventQueryByKeysRequest{
  839. TablePrefixWithSchema: tablePrefix,
  840. KeyValues: []string{id},
  841. PageNo: 1,
  842. PageSize: 1,
  843. }, &eventInfos).
  844. assertEqual(1, len(eventInfos), "事件数量不一致").
  845. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  846. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  847. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  848. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  849. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  850. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  851. commonEventQueryOnly(&client.CommonEventQueryRequest{
  852. TablePrefixWithSchema: tablePrefix,
  853. KeyValues: []string{id},
  854. Version: "v1",
  855. Operation: "create",
  856. CreatorID: "test",
  857. StartCreatedTime: now.Format(time.DateTime),
  858. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  859. PageNo: 0,
  860. PageSize: 0,
  861. }, &eventInfos).
  862. assertEqual(1, len(eventInfos), "事件数量不一致").
  863. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  864. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  865. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  866. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  867. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  868. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  869. commonEventQueryOnly(&client.CommonEventQueryRequest{
  870. TablePrefixWithSchema: tablePrefix,
  871. KeyValues: []string{id},
  872. Version: "v1",
  873. Operation: "update",
  874. CreatorID: "test",
  875. StartCreatedTime: now.Format(time.DateTime),
  876. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  877. PageNo: 0,
  878. PageSize: 0,
  879. }, &eventInfos).
  880. assertEqual(1, len(eventInfos), "事件数量不一致").
  881. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  882. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  883. assertEqual("update", eventInfos[0].Operation, "操作不一致").
  884. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  885. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  886. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  887. delete(&client.DeleteRequest{
  888. TablePrefixWithSchema: tablePrefix,
  889. Version: "v1",
  890. KeyValues: map[string]string{"id": id},
  891. UserID: "test",
  892. }).
  893. countEventHistoryByKeys(&client.CountEventByKeysRequest{
  894. TablePrefixWithSchema: tablePrefix,
  895. KeyValues: []string{id},
  896. }, &totalCount).
  897. assertEqual(3, int(totalCount), "总数不一致").
  898. commonCountEventHistory(&client.CommonCountEventRequest{
  899. TablePrefixWithSchema: tablePrefix,
  900. KeyValues: []string{id},
  901. Version: "v1",
  902. Operation: "create",
  903. CreatorID: "test",
  904. StartCreatedTime: now.Format(time.DateTime),
  905. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  906. }, &totalCount).
  907. assertEqual(1, int(totalCount), "总数不一致").
  908. commonCountEventHistory(&client.CommonCountEventRequest{
  909. TablePrefixWithSchema: tablePrefix,
  910. KeyValues: []string{id},
  911. Version: "v1",
  912. Operation: "update",
  913. CreatorID: "test",
  914. StartCreatedTime: now.Format(time.DateTime),
  915. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  916. }, &totalCount).
  917. assertEqual(1, int(totalCount), "总数不一致").
  918. commonCountEventHistory(&client.CommonCountEventRequest{
  919. TablePrefixWithSchema: tablePrefix,
  920. KeyValues: []string{id},
  921. Version: "v1",
  922. Operation: "delete",
  923. CreatorID: "test",
  924. StartCreatedTime: now.Format(time.DateTime),
  925. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  926. }, &totalCount).
  927. assertEqual(1, int(totalCount), "总数不一致").
  928. eventHistoryQueryByKeys(&client.EventQueryByKeysRequest{
  929. TablePrefixWithSchema: tablePrefix,
  930. KeyValues: []string{id},
  931. PageNo: 0,
  932. PageSize: 0,
  933. }, &eventInfos, &totalCount).
  934. assertEqual(3, int(totalCount), "总数不一致").
  935. assertEqual(3, len(eventInfos), "事件数量不一致").
  936. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  937. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  938. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  939. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  940. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  941. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  942. assertEqual(id, eventInfos[1].Key, "关键字段不一致").
  943. assertEqual("v1", eventInfos[1].Version, "版本不一致").
  944. assertEqual("update", eventInfos[1].Operation, "操作不一致").
  945. assertEqual("test", eventInfos[1].CreatorID, "创建者ID不一致").
  946. assertNotEmpty(eventInfos[1].CreateTime, "创建事件为空").
  947. assertNotEmpty(eventInfos[1].Value, "值为空不一致").
  948. assertEqual(id, eventInfos[2].Key, "关键字段不一致").
  949. assertEqual("v1", eventInfos[2].Version, "版本不一致").
  950. assertEqual("delete", eventInfos[2].Operation, "操作不一致").
  951. assertEqual("test", eventInfos[2].CreatorID, "创建者ID不一致").
  952. assertNotEmpty(eventInfos[2].CreateTime, "创建事件为空").
  953. assertEqual("", eventInfos[2].Value, "值为空不一致").
  954. eventHistoryQueryByKeys(&client.EventQueryByKeysRequest{
  955. TablePrefixWithSchema: tablePrefix,
  956. KeyValues: []string{id},
  957. PageNo: 1,
  958. PageSize: 1,
  959. }, &eventInfos, &totalCount).
  960. assertEqual(3, int(totalCount), "总数不一致").
  961. assertEqual(1, len(eventInfos), "事件数量不一致").
  962. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  963. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  964. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  965. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  966. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  967. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  968. commonEventHistoryQuery(&client.CommonEventQueryRequest{
  969. TablePrefixWithSchema: tablePrefix,
  970. KeyValues: []string{id},
  971. Version: "v1",
  972. Operation: "create",
  973. CreatorID: "test",
  974. StartCreatedTime: now.Format(time.DateTime),
  975. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  976. PageNo: 0,
  977. PageSize: 0,
  978. }, &eventInfos, &totalCount).
  979. assertEqual(1, int(totalCount), "总数不一致").
  980. assertEqual(1, len(eventInfos), "事件数量不一致").
  981. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  982. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  983. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  984. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  985. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  986. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  987. commonEventHistoryQuery(&client.CommonEventQueryRequest{
  988. TablePrefixWithSchema: tablePrefix,
  989. KeyValues: []string{id},
  990. Version: "v1",
  991. Operation: "update",
  992. CreatorID: "test",
  993. StartCreatedTime: now.Format(time.DateTime),
  994. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  995. PageNo: 0,
  996. PageSize: 0,
  997. }, &eventInfos, &totalCount).
  998. assertEqual(1, int(totalCount), "总数不一致").
  999. assertEqual(1, len(eventInfos), "事件数量不一致").
  1000. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  1001. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  1002. assertEqual("update", eventInfos[0].Operation, "操作不一致").
  1003. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  1004. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  1005. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  1006. commonEventHistoryQuery(&client.CommonEventQueryRequest{
  1007. TablePrefixWithSchema: tablePrefix,
  1008. KeyValues: []string{id},
  1009. Version: "v1",
  1010. Operation: "delete",
  1011. CreatorID: "test",
  1012. StartCreatedTime: now.Format(time.DateTime),
  1013. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  1014. PageNo: 0,
  1015. PageSize: 0,
  1016. }, &eventInfos, &totalCount).
  1017. assertEqual(1, int(totalCount), "总数不一致").
  1018. assertEqual(1, len(eventInfos), "事件数量不一致").
  1019. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  1020. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  1021. assertEqual("delete", eventInfos[0].Operation, "操作不一致").
  1022. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  1023. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  1024. assertEqual("", eventInfos[0].Value, "值为空不一致").
  1025. eventHistoryQueryOnlyByKeys(&client.EventQueryByKeysRequest{
  1026. TablePrefixWithSchema: tablePrefix,
  1027. KeyValues: []string{id},
  1028. PageNo: 0,
  1029. PageSize: 0,
  1030. }, &eventInfos).
  1031. assertEqual(3, len(eventInfos), "事件数量不一致").
  1032. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  1033. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  1034. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  1035. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  1036. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  1037. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  1038. assertEqual(id, eventInfos[1].Key, "关键字段不一致").
  1039. assertEqual("v1", eventInfos[1].Version, "版本不一致").
  1040. assertEqual("update", eventInfos[1].Operation, "操作不一致").
  1041. assertEqual("test", eventInfos[1].CreatorID, "创建者ID不一致").
  1042. assertNotEmpty(eventInfos[1].CreateTime, "创建事件为空").
  1043. assertNotEmpty(eventInfos[1].Value, "值为空不一致").
  1044. assertEqual(id, eventInfos[2].Key, "关键字段不一致").
  1045. assertEqual("v1", eventInfos[2].Version, "版本不一致").
  1046. assertEqual("delete", eventInfos[2].Operation, "操作不一致").
  1047. assertEqual("test", eventInfos[2].CreatorID, "创建者ID不一致").
  1048. assertNotEmpty(eventInfos[2].CreateTime, "创建事件为空").
  1049. assertEqual("", eventInfos[2].Value, "值为空不一致").
  1050. eventHistoryQueryOnlyByKeys(&client.EventQueryByKeysRequest{
  1051. TablePrefixWithSchema: tablePrefix,
  1052. KeyValues: []string{id},
  1053. PageNo: 1,
  1054. PageSize: 1,
  1055. }, &eventInfos).
  1056. assertEqual(1, len(eventInfos), "事件数量不一致").
  1057. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  1058. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  1059. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  1060. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  1061. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  1062. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  1063. commonEventHistoryQueryOnly(&client.CommonEventQueryRequest{
  1064. TablePrefixWithSchema: tablePrefix,
  1065. KeyValues: []string{id},
  1066. Version: "v1",
  1067. Operation: "create",
  1068. CreatorID: "test",
  1069. StartCreatedTime: now.Format(time.DateTime),
  1070. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  1071. PageNo: 0,
  1072. PageSize: 0,
  1073. }, &eventInfos).
  1074. assertEqual(1, len(eventInfos), "事件数量不一致").
  1075. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  1076. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  1077. assertEqual("create", eventInfos[0].Operation, "操作不一致").
  1078. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  1079. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  1080. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  1081. commonEventHistoryQueryOnly(&client.CommonEventQueryRequest{
  1082. TablePrefixWithSchema: tablePrefix,
  1083. KeyValues: []string{id},
  1084. Version: "v1",
  1085. Operation: "update",
  1086. CreatorID: "test",
  1087. StartCreatedTime: now.Format(time.DateTime),
  1088. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  1089. PageNo: 0,
  1090. PageSize: 0,
  1091. }, &eventInfos).
  1092. assertEqual(1, len(eventInfos), "事件数量不一致").
  1093. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  1094. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  1095. assertEqual("update", eventInfos[0].Operation, "操作不一致").
  1096. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  1097. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  1098. assertNotEmpty(eventInfos[0].Value, "值为空不一致").
  1099. commonEventHistoryQueryOnly(&client.CommonEventQueryRequest{
  1100. TablePrefixWithSchema: tablePrefix,
  1101. KeyValues: []string{id},
  1102. Version: "v1",
  1103. Operation: "delete",
  1104. CreatorID: "test",
  1105. StartCreatedTime: now.Format(time.DateTime),
  1106. EndCreatedTime: now.Add(time.Second).Format(time.DateTime),
  1107. PageNo: 0,
  1108. PageSize: 0,
  1109. }, &eventInfos).
  1110. assertEqual(1, len(eventInfos), "事件数量不一致").
  1111. assertEqual(id, eventInfos[0].Key, "关键字段不一致").
  1112. assertEqual("v1", eventInfos[0].Version, "版本不一致").
  1113. assertEqual("delete", eventInfos[0].Operation, "操作不一致").
  1114. assertEqual("test", eventInfos[0].CreatorID, "创建者ID不一致").
  1115. assertNotEmpty(eventInfos[0].CreateTime, "创建事件为空").
  1116. assertEqual("", eventInfos[0].Value, "值为空不一致")
  1117. }