diff --git a/test/api_test.go b/test/api_test.go index 5755e0d..16702b7 100644 --- a/test/api_test.go +++ b/test/api_test.go @@ -11,6 +11,7 @@ import ( "net/http" "strconv" "testing" + "time" "github.com/dtm-labs/dtm/client/dtmcli" "github.com/dtm-labs/dtm/client/dtmcli/dtmimp" @@ -51,12 +52,15 @@ func TestAPIQuery(t *testing.T) { } func TestAPIAll(t *testing.T) { + startTime := time.Now() for i := 0; i < 3; i++ { // add three gid := dtmimp.GetFuncName() + fmt.Sprintf("%d", i) err := genMsg(gid).Submit() assert.Nil(t, err) waitTransProcessed(gid) } + endTime := time.Now() + resp, err := dtmcli.GetRestyClient().R().SetQueryParam("limit", "1").Get(dtmutil.DefaultHTTPServer + "/all") assert.Nil(t, err) m := map[string]interface{}{} @@ -92,6 +96,40 @@ func TestAPIAll(t *testing.T) { assert.Equal(t, "", nextPos3) // assert.Equal(t, 2, len(m["transactions"].([]interface{}))) // the left 2. + // filter test + resp, err = dtmcli.GetRestyClient().R().SetQueryParams(map[string]string{ + "limit": "10", + "status": "succeed", + "transType": "msg", + "createTimeStart": strconv.Itoa(int(startTime.Add(time.Minute*-1).Unix() * 1000)), + "createTimeEnd": strconv.Itoa(int(endTime.Add(time.Minute*1).Unix() * 1000)), + }).Get(dtmutil.DefaultHTTPServer + "/all") + assert.Nil(t, err) + dtmimp.MustUnmarshalString(resp.String(), &m) + nextPos1 := m["next_position"].(string) + // assert.Equal(t, 3, len(m["transactions"].([]interface{}))) + assert.GreaterOrEqual(t, len(m["transactions"].([]interface{})), 3) // Be disturbed by something else test case, so use >=3 instead of =3. + assert.Empty(t, nextPos1) // is over + for _, item := range m["transactions"].([]interface{}) { + g := item.(map[string]interface{}) + assert.Equal(t, "msg", g["trans_type"]) + assert.Equal(t, "succeed", g["status"]) + } + + // filter, five minutes ago + resp, err = dtmcli.GetRestyClient().R().SetQueryParams(map[string]string{ + "limit": "10", + "status": "succeed", + "transType": "msg", + "createTimeStart": strconv.Itoa(int(startTime.Add(time.Minute*-10).Unix() * 1000)), + "createTimeEnd": strconv.Itoa(int(endTime.Add(time.Minute*-5).Unix() * 1000)), + }).Get(dtmutil.DefaultHTTPServer + "/all") + assert.Nil(t, err) + dtmimp.MustUnmarshalString(resp.String(), &m) + nextPos1 = m["next_position"].(string) + assert.Equal(t, 0, len(m["transactions"].([]interface{}))) + assert.Empty(t, nextPos1) // is over + //fmt.Printf("pos1:%s,pos2:%s,pos3:%s", nextPos, nextPos2, nextPos3) }