From b8250b6abad2a8193751b421635ce8a9928dbc4a Mon Sep 17 00:00:00 2001 From: AvitalFineRedis Date: Sun, 6 Jun 2021 19:16:45 +0300 Subject: [PATCH 1/6] Add index_type Enum --- redisearch/client_test.go | 5 +++++ redisearch/index.go | 21 ++++++++++++++++++++- redisearch/index_test.go | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/redisearch/client_test.go b/redisearch/client_test.go index d70b935..6e0a35a 100644 --- a/redisearch/client_test.go +++ b/redisearch/client_test.go @@ -831,6 +831,7 @@ func TestClient_CreateIndexWithIndexDefinition1(t *testing.T) { wantErr bool }{ {"default", args{sc, NewIndexDefinition()}, false}, + {"default+index_on", args{sc, NewIndexDefinition().SetIndexOn(JSON)}, false}, {"default+async", args{sc, NewIndexDefinition().SetAsync(true)}, false}, {"default+score", args{sc, NewIndexDefinition().SetScore(0.75)}, false}, {"default+score_field", args{sc, NewIndexDefinition().SetScoreField("myscore")}, false}, @@ -1045,3 +1046,7 @@ func TestClient_ListIndex(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "index-list-test", indexes[0]) } + +func TestClient_JsonIndexType(t *testing.T) { + +} diff --git a/redisearch/index.go b/redisearch/index.go index e711368..bdabe44 100644 --- a/redisearch/index.go +++ b/redisearch/index.go @@ -4,6 +4,18 @@ import ( "github.com/gomodule/redigo/redis" ) +// IndexType - Enum of existing index types +type IndexType int + +const ( + HASH IndexType = iota + JSON +) + +func (it IndexType) String() string { + return [...]string{"HASH", "JSON"}[it] +} + // IndexInfo - Structure showing information about an existing index type IndexInfo struct { Schema Schema @@ -42,7 +54,14 @@ type IndexDefinition struct { // This is only valid for >= RediSearch 2.0 func NewIndexDefinition() *IndexDefinition { prefixArray := make([]string, 0) - return &IndexDefinition{"HASH", false, prefixArray, "", "", "", -1, "", ""} + return &IndexDefinition{HASH.String(), false, prefixArray, "", "", "", -1, "", ""} +} + +// This is only valid for >= RediSearch 2.0 +func (defintion *IndexDefinition) SetIndexOn(value IndexType) (outDef *IndexDefinition) { + outDef = defintion + outDef.IndexOn = value.String() + return } // This is only valid for >= RediSearch 2.0 diff --git a/redisearch/index_test.go b/redisearch/index_test.go index f2e42e2..d8d83b2 100644 --- a/redisearch/index_test.go +++ b/redisearch/index_test.go @@ -20,6 +20,7 @@ func TestIndexDefinition_Serialize(t *testing.T) { want redis.Args }{ {"default", fields{NewIndexDefinition()}, args{redis.Args{}}, redis.Args{"ON", "HASH"}}, + {"default", fields{NewIndexDefinition().SetIndexOn(JSON)}, args{redis.Args{}}, redis.Args{"ON", "JSON"}}, {"default+async", fields{NewIndexDefinition().SetAsync(true)}, args{redis.Args{}}, redis.Args{"ON", "HASH", "ASYNC"}}, {"default+score", fields{NewIndexDefinition().SetScore(0.75)}, args{redis.Args{}}, redis.Args{"ON", "HASH", "SCORE", 0.75}}, {"default+score_field", fields{NewIndexDefinition().SetScoreField("myscore")}, args{redis.Args{}}, redis.Args{"ON", "HASH", "SCORE_FIELD", "myscore"}}, From c5ef15eddc203aafe01cb95163573f5bb88745a3 Mon Sep 17 00:00:00 2001 From: Guy Korland Date: Tue, 8 Jun 2021 11:00:46 +0300 Subject: [PATCH 2/6] run tests with redismod (#112) * run tests with redismod --- .circleci/config.yml | 41 ++++++++++----------------------------- redisearch/client_test.go | 40 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 33 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f6b75d4..bb09c1a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -24,18 +24,22 @@ jobs: - run: name: Copy RediSearch command: | - docker run --rm --entrypoint cat redislabs/redisearch:edge /usr/lib/redis/modules/redisearch.so > redisearch.so + docker run --rm --entrypoint cat redislabs/redismod:edge /usr/lib/redis/modules/redisearch.so > redisearch.so chmod 755 redisearch.so + docker run --rm --entrypoint cat redislabs/redismod:edge /usr/lib/redis/modules/rejson.so > rejson.so + chmod 755 rejson.so + - run: name: Run RediSearch with tls support command: | docker run -d -v $(pwd)/redisearch.so:/data/redisearch.so \ + -v $(pwd)/rejson.so:/data/rejson.so \ -v $(pwd)/redis/tests/tls/:/data \ -p 6379:6379 redis redis-server --tls-port 6379 --port 0 \ --tls-cert-file /data/redis.crt \ --tls-key-file /data/redis.key \ --tls-ca-cert-file /data/ca.crt \ - --tls-auth-clients no --loadmodule /data/redisearch.so + --tls-auth-clients no --loadmodule /data/redisearch.so --loadmodule /data/rejson.so - run: name: Run Examples command: | @@ -43,10 +47,10 @@ jobs: TLS_KEY=redis/tests/tls/redis.key \ TLS_CACERT=redis/tests/tls/ca.crt - build: # test with redisearch:edge + build-latest: docker: - image: circleci/golang:1.12 - - image: redislabs/redisearch:edge + - image: redislabs/redismod:latest working_directory: /go/src/github.com/RediSearch/redisearch-go steps: @@ -58,30 +62,10 @@ jobs: - run: make coverage - run: bash <(curl -s https://codecov.io/bash) -t ${CODECOV_TOKEN} - build-latest: - docker: - - image: circleci/golang:1.12 - - image: redislabs/redisearch:latest - - working_directory: /go/src/github.com/RediSearch/redisearch-go - steps: - - checkout - - run: make test - build-v16: docker: - image: circleci/golang:1.12 - - image: redislabs/redisearch:1.6.13 - - working_directory: /go/src/github.com/RediSearch/redisearch-go - steps: - - checkout - - run: make test - - build-v14: - docker: - - image: circleci/golang:1.12 - - image: redislabs/redisearch:1.4.28 + - image: redislabs/redisearch:1.6.15 working_directory: /go/src/github.com/RediSearch/redisearch-go steps: @@ -91,7 +75,7 @@ jobs: build_nightly: # test nightly with redisearch:edge docker: - image: circleci/golang:1.12 - - image: redislabs/redisearch:edge + - image: redislabs/redismod:edge working_directory: /go/src/github.com/RediSearch/redisearch-go steps: @@ -102,11 +86,9 @@ workflows: version: 2 commit: jobs: - - build - build-tls - build-latest - build-v16 - - build-v14 nightly: triggers: - schedule: @@ -118,6 +100,3 @@ workflows: jobs: - build_nightly - build-tls - - build-latest - - build-v16 - - build-v14 \ No newline at end of file diff --git a/redisearch/client_test.go b/redisearch/client_test.go index 6e0a35a..7f4605f 100644 --- a/redisearch/client_test.go +++ b/redisearch/client_test.go @@ -622,6 +622,43 @@ func TestClient_GetRediSearchVersion(t *testing.T) { assert.Nil(t, err) } +func TestClient_CreateIndexWithIndexDefinitionJSON(t *testing.T) { + c := createClient("index-definition-test") + version, err := c.getRediSearchVersion() + assert.Nil(t, err) + if version <= 20200 { + // JSON IndexDefinition is available for RediSearch 2.2+ + return + } + // Create a schema + sc := NewSchema(DefaultOptions). + AddField(NewTextFieldOptions("name", TextFieldOptions{Sortable: true})). + AddField(NewTextFieldOptions("description", TextFieldOptions{Weight: 5.0, Sortable: true})). + AddField(NewNumericField("price")) + + type args struct { + schema *Schema + definition *IndexDefinition + } + tests := []struct { + name string + args args + wantErr bool + }{ + {"default+index_on", args{sc, NewIndexDefinition().SetIndexOn(JSON)}, false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c.Drop() + if err := c.CreateIndexWithIndexDefinition(tt.args.schema, tt.args.definition); (err != nil) != tt.wantErr { + t.Errorf("CreateIndexWithIndexDefinition() error = %v, wantErr %v", err, tt.wantErr) + } + }) + teardown(c) + + } +} + func TestClient_CreateIndexWithIndexDefinition(t *testing.T) { i := createClient("index-definition-test") version, err := i.getRediSearchVersion() @@ -831,7 +868,6 @@ func TestClient_CreateIndexWithIndexDefinition1(t *testing.T) { wantErr bool }{ {"default", args{sc, NewIndexDefinition()}, false}, - {"default+index_on", args{sc, NewIndexDefinition().SetIndexOn(JSON)}, false}, {"default+async", args{sc, NewIndexDefinition().SetAsync(true)}, false}, {"default+score", args{sc, NewIndexDefinition().SetScore(0.75)}, false}, {"default+score_field", args{sc, NewIndexDefinition().SetScoreField("myscore")}, false}, @@ -1048,5 +1084,5 @@ func TestClient_ListIndex(t *testing.T) { } func TestClient_JsonIndexType(t *testing.T) { - + } From 0ca2e538716af96456c855c6144d986a32342f0e Mon Sep 17 00:00:00 2001 From: Avital Fine <79420960+AvitalFineRedis@users.noreply.github.com> Date: Tue, 8 Jun 2021 11:02:01 +0300 Subject: [PATCH 3/6] Update client_test.go --- redisearch/client_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/redisearch/client_test.go b/redisearch/client_test.go index 7f4605f..8737859 100644 --- a/redisearch/client_test.go +++ b/redisearch/client_test.go @@ -1082,7 +1082,3 @@ func TestClient_ListIndex(t *testing.T) { assert.Nil(t, err) assert.Equal(t, "index-list-test", indexes[0]) } - -func TestClient_JsonIndexType(t *testing.T) { - -} From fd12a63eab32acc8f3aa3e51712a1ce594728db4 Mon Sep 17 00:00:00 2001 From: Avital Fine <79420960+AvitalFineRedis@users.noreply.github.com> Date: Tue, 8 Jun 2021 11:13:10 +0300 Subject: [PATCH 4/6] Update index.go --- redisearch/index.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redisearch/index.go b/redisearch/index.go index bdabe44..9aab4d7 100644 --- a/redisearch/index.go +++ b/redisearch/index.go @@ -57,7 +57,7 @@ func NewIndexDefinition() *IndexDefinition { return &IndexDefinition{HASH.String(), false, prefixArray, "", "", "", -1, "", ""} } -// This is only valid for >= RediSearch 2.0 +// This is only valid for >= RediSearch 2.2 func (defintion *IndexDefinition) SetIndexOn(value IndexType) (outDef *IndexDefinition) { outDef = defintion outDef.IndexOn = value.String() From aaa00ee1f468cb59cdb7576bb0a71bd21306d26b Mon Sep 17 00:00:00 2001 From: Avital Fine <79420960+AvitalFineRedis@users.noreply.github.com> Date: Wed, 9 Jun 2021 20:57:38 +0300 Subject: [PATCH 5/6] Update .circleci/config.yml Co-authored-by: filipe oliveira --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bb09c1a..bdfd702 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -47,7 +47,7 @@ jobs: TLS_KEY=redis/tests/tls/redis.key \ TLS_CACERT=redis/tests/tls/ca.crt - build-latest: + build: # test with redismod:latest docker: - image: circleci/golang:1.12 - image: redislabs/redismod:latest From c5c10cc842fae0f95c2ab377b554d118ae764d29 Mon Sep 17 00:00:00 2001 From: Avital Fine <79420960+AvitalFineRedis@users.noreply.github.com> Date: Wed, 9 Jun 2021 20:57:44 +0300 Subject: [PATCH 6/6] Update .circleci/config.yml Co-authored-by: filipe oliveira --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index bdfd702..3926488 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -87,7 +87,7 @@ workflows: commit: jobs: - build-tls - - build-latest + - build - build-v16 nightly: triggers: