Skip to content

Commit be84f6d

Browse files
liguriooleg-jukovec
authored andcommitted
Fix datetime checks [TO SQUASH]
Attempt to fix datetime checks for custom structs.
1 parent 10f45e5 commit be84f6d

File tree

2 files changed

+60
-20
lines changed

2 files changed

+60
-20
lines changed

datetime/config.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ box.once("init", function()
5454
s_3:create_index('primary', {
5555
type = 'tree',
5656
parts = {
57-
{1, 'uint'}
57+
{1, 'uint'},
58+
{2, 'datetime'}
5859
},
5960
if_not_exists = true
6061
})

datetime/datetime_test.go

+58-19
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ func TestDatetimeReplace(t *testing.T) {
240240
}
241241

242242
type Event struct {
243-
Datetime time.Time
243+
Datetime DateTime
244244
Location string
245245
}
246246

@@ -260,7 +260,7 @@ type Tuple2 struct {
260260
}
261261

262262
type Tuple3 struct {
263-
Datetime time.Time
263+
Datetime DateTime
264264
}
265265

266266
func (t *Tuple3) EncodeMsgpack(e *msgpack.Encoder) error {
@@ -318,7 +318,7 @@ func (ev *Event) DecodeMsgpack(d *msgpack.Decoder) error {
318318
if err != nil {
319319
return err
320320
}
321-
ev.Datetime = res.(time.Time)
321+
ev.Datetime = res.(DateTime)
322322
return nil
323323
}
324324

@@ -371,30 +371,33 @@ func TestCustomEncodeDecodeTuple1(t *testing.T) {
371371

372372
dt1, _ := time.Parse(time.RFC3339, "2010-05-24T17:51:56.000000009Z")
373373
dt2, _ := time.Parse(time.RFC3339, "2022-05-24T17:51:56.000000009Z")
374+
const cid = 13
375+
const orig = "orig"
374376

375-
tuple := Tuple{Cid: 13, Orig: "orig", Events: []Event{{dt1, "Minsk"}, {dt2, "Moscow"}}}
377+
tuple := Tuple{Cid: cid, Orig: orig, Events: []Event{{NewDateTime(dt1), "Minsk"}, {NewDateTime(dt2), "Moscow"}}}
376378
resp, err := conn.Replace("testDatetime_3", &tuple)
377379
if err != nil || resp.Code != 0 {
378380
t.Fatalf("Failed to replace: %s", err.Error())
379-
return
380381
}
381382
if len(resp.Data) != 1 {
382383
t.Fatalf("Response Body len != 1")
383384
}
384-
if tpl, ok := resp.Data[0].([]interface{}); !ok {
385-
t.Errorf("Unexpected body of Replace")
386-
} else {
387-
if len(tpl) != 3 {
388-
t.Fatalf("Unexpected body of Replace (tuple len)")
389-
}
390-
if id, ok := tpl[0].(uint64); !ok || id != 13 {
391-
t.Fatalf("Unexpected body of Replace (13)")
392-
}
393-
if o, ok := tpl[1].(string); !ok || o != "orig" {
394-
t.Fatalf("Unexpected body of Replace (orig)")
395-
}
385+
386+
tpl, ok := resp.Data[0].([]interface{})
387+
if !ok {
388+
t.Fatalf("Unexpected body of Replace")
396389
}
397390

391+
if len(tpl) != 3 {
392+
t.Fatalf("Unexpected body of Replace (tuple len)")
393+
}
394+
if id, ok := tpl[0].(uint64); !ok || id != cid {
395+
t.Fatalf("Unexpected body of Replace (%d)", cid)
396+
}
397+
if o, ok := tpl[1].(string); !ok || o != orig {
398+
t.Fatalf("Unexpected body of Replace (%s)", orig)
399+
}
400+
fmt.Printf("%+v\n", tpl[2]) // FIXME
398401
}
399402

400403
func TestCustomEncodeDecodeTuple2(t *testing.T) {
@@ -418,6 +421,7 @@ func TestCustomEncodeDecodeTuple2(t *testing.T) {
418421
if err != nil {
419422
t.Fatalf("Failed to SelectTyped(): %s", err.Error())
420423
}
424+
fmt.Printf("%+v", tuples)
421425

422426
// Teardown: delete a value.
423427
_, err = conn.Delete(space, index, []interface{}{&dt})
@@ -437,17 +441,33 @@ func TestCustomEncodeDecodeTuple3(t *testing.T) {
437441
// Setup: insert a value.
438442
tm := time.Unix(0, 0)
439443
dt := NewDateTime(tm)
440-
_, err := conn.Insert(space, []interface{}{&dt})
444+
resp, err := conn.Insert(space, []interface{}{&dt})
441445
if err != nil {
442446
t.Fatalf("Datetime insert failed: %s", err.Error())
443447
}
444448

449+
fmt.Printf("%+v\n", resp.Data[0])
450+
445451
var tuples2 []Tuple2
446-
err = conn.SelectTyped("testDatetime_2", index, 0, 1, IterEq, []interface{}{1, &dt}, &tuples2)
452+
err = conn.SelectTyped("testDatetime_2", index, 0, 1, IterEq, []interface{}{1, dt}, &tuples2)
447453
if err != nil {
448454
t.Fatalf("Failed to SelectTyped: %s", err.Error())
449455
return
450456
}
457+
if len(tuples2) == 0 {
458+
t.Fatalf("Wrong tuples length") // FIXME
459+
}
460+
if cid := tuples2[0].Cid; cid != 5 {
461+
t.Fatalf("Wrong Cid (%d), should be 5", cid)
462+
}
463+
if orig := tuples2[0].Orig; orig != "Poyekhali!" {
464+
t.Fatalf("Wrong Orig (%s), should be 'Hello, there!'", orig)
465+
}
466+
/*
467+
if dt := tuples2[0].Datetime; dt.IsZero() {
468+
t.Fatalf("Achtung!")
469+
}
470+
*/
451471

452472
// Teardown: delete a value.
453473
_, err = conn.Delete(space, index, []interface{}{&dt})
@@ -477,6 +497,25 @@ func TestCustomDecodeFunction(t *testing.T) {
477497
if orig := tuples[0].Orig; orig != "Poyekhali!" {
478498
t.Fatalf("Wrong Orig (%s), should be 'Hello, there!'", orig)
479499
}
500+
501+
events := tuples[0].Events
502+
if len(events) != 3 {
503+
t.Fatalf("Wrong a number of Events (%d), should be 3", len(events))
504+
}
505+
/*
506+
if ev1 := events[0]; ev1.Location != "Klushino" || ev1.Datetime.IsZero() {
507+
fmt.Println(ev1.Datetime)
508+
t.Fatalf("Klushino") // FIXME
509+
}
510+
if ev2 := events[0]; ev2.Location != "Baikonur" || ev2.Datetime.IsZero() {
511+
fmt.Println(ev2.Datetime)
512+
t.Fatalf("Baikonur") // FIXME
513+
}
514+
if ev3 := events[0]; ev3.Location != "Novoselovo" || ev3.Datetime.IsZero() {
515+
fmt.Println(ev3.Datetime)
516+
t.Fatalf("Novoselovo") // FIXME
517+
}
518+
*/
480519
}
481520

482521
func TestCustomEncodeDecodeTuple5(t *testing.T) {

0 commit comments

Comments
 (0)