Skip to content

Commit d7f7415

Browse files
authored
Merge pull request #14 from RTradeLtd/lens/reindex
TEM-151: support for reindexing
2 parents 0cc3036 + 8aa7357 commit d7f7415

File tree

16 files changed

+1292
-207
lines changed

16 files changed

+1292
-207
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ before_script:
2727
- go build ./...
2828
- go test -run xxxx ./...
2929
- make testenv
30-
30+
3131
script:
3232
- go fmt ./...
3333
- golint $(go list ./... | grep -v /vendor/) # golint doesn't ignore vendor

Gopkg.lock

Lines changed: 12 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ ignored = ["github.com/gen2brain/go-fitz"]
1010

1111
[[constraint]]
1212
name = "github.com/RTradeLtd/grpc"
13-
version = "v1.0.5b"
13+
version = "v1.1.0"
1414

1515
[[constraint]]
1616
name = "github.com/RTradeLtd/rtfs"
@@ -51,3 +51,11 @@ ignored = ["github.com/gen2brain/go-fitz"]
5151
[[constraint]]
5252
name = "go.uber.org/zap"
5353
version = "v1.9.1"
54+
55+
[[constraint]]
56+
name = "google.golang.org/grpc"
57+
version = "1.15.0"
58+
59+
[[override]]
60+
name = "github.com/golang/protobuf"
61+
version = "1.2.0"

Makefile

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,30 @@ testenv:
5656
sleep $(WAIT)
5757
@echo "=================== done ==================="
5858

59+
.PHONY: testenv-integration
60+
testenv-integration: testenv
61+
@echo Connecting testenv IPFS node to RTrade IPFS node for test assets
62+
ipfs --api=/ip4/127.0.0.1/tcp/5001 swarm connect /ip4/172.218.49.115/tcp/5002/ipfs/Qmf964tiE9JaxqntDsSBGasD4aaofPQtfYZyMSJJkRrVTQ
63+
5964
# Run simple checks
6065
.PHONY: check
6166
check:
6267
go vet $(GOFLAGS) ./...
6368
go test $(GOFLAGS) -run xxxx ./...
6469

65-
# Generate mocks
66-
.PHONY: mocks
67-
mocks:
70+
# Generate code
71+
.PHONY: gen
72+
gen:
73+
ifacemaker -d \
74+
-f search/search.go \
75+
-s Service \
76+
-i Searcher \
77+
--pkg search \
78+
-o search/search.i.go \
79+
-c "Code generated by ifacemaker. DO NOT EDIT." \
80+
-y "Searcher provides the internal Lens search API"
81+
counterfeiter -o ./mocks/search.mock.go \
82+
./search/search.i.go Searcher
6883
counterfeiter -o ./mocks/manager.mock.go \
6984
./vendor/github.com/RTradeLtd/rtfs/rtfs.i.go Manager
7085
counterfeiter -o ./mocks/images.mock.go \

cmd/temporal-lens/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ var commands = map[string]cmd.Cmd{
8383
if err != nil {
8484
log.Fatal(err)
8585
}
86+
defer s.Close()
8687
entriesToMigrate, err := s.GetEntries()
8788
if err != nil {
8889
log.Fatal(err)

integration_test.go

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package lens
2+
3+
import (
4+
"encoding/json"
5+
"fmt"
6+
"os"
7+
"testing"
8+
"time"
9+
10+
"github.com/RTradeLtd/Lens/analyzer/images"
11+
"github.com/RTradeLtd/Lens/logs"
12+
"github.com/RTradeLtd/Lens/models"
13+
"github.com/RTradeLtd/Lens/search"
14+
"github.com/RTradeLtd/config"
15+
"github.com/RTradeLtd/rtfs"
16+
)
17+
18+
const (
19+
testHash = "QmSi9TLyzTXmrLMXDvhztDoX3jghoG3vcRrnPkLvGgfpdW"
20+
testHashPdf = "QmTbvUMmniE7wUP1ucbtC9s4ree7s8mSiQBt1c4odzKnY4"
21+
testHashMarkdown = "QmS5yadpmuu5hPz884XoRFnTTTKaTS4GmdJddd7maysznm"
22+
testHashJpg = "QmNWaM9vM4LUs8ZUHThAqC3hCHeQF8fYdJhLjJMwzJmzYS"
23+
defaultConfig = "test/config.json"
24+
)
25+
26+
func TestLens_Integration(t *testing.T) {
27+
if os.Getenv("TEST") != "integration" {
28+
t.Skip("skipping integration test", t.Name())
29+
}
30+
31+
// load config, instantiate everything
32+
cfg, err := config.LoadConfig(defaultConfig)
33+
if err != nil {
34+
t.Fatal(err)
35+
}
36+
ipfsAPI := fmt.Sprintf("%s:%s", cfg.IPFS.APIConnection.Host, cfg.IPFS.APIConnection.Port)
37+
manager, err := rtfs.NewManager(ipfsAPI, nil, 1*time.Minute)
38+
if err != nil {
39+
t.Fatal(err)
40+
}
41+
var l, _ = logs.NewLogger("", false)
42+
ia, err := images.NewAnalyzer(images.ConfigOpts{
43+
ModelLocation: "tmp",
44+
}, l)
45+
if err != nil {
46+
t.Fatal(err)
47+
}
48+
searcher, err := search.NewService("/tmp/integration_test/badgerds-lens")
49+
if err != nil {
50+
t.Fatal(err)
51+
}
52+
defer searcher.Close()
53+
defer os.RemoveAll("/tmp/integration_test/badgerds-lens")
54+
service, err := NewService(ConfigOpts{
55+
UseChainAlgorithm: true,
56+
}, *cfg, manager, ia, searcher, l)
57+
if err != nil {
58+
t.Fatal(err)
59+
}
60+
61+
///////////////////////
62+
// INTEGRATION TESTS //
63+
///////////////////////
64+
65+
// magnify and store object
66+
metadata, err := service.Magnify(testHash, false)
67+
if err != nil {
68+
t.Fatal(err)
69+
}
70+
resp, err := service.Store(testHash, metadata)
71+
if err != nil {
72+
t.Fatal(err)
73+
}
74+
keywordBytes, err := service.search.Get(metadata.Summary[0])
75+
if err != nil {
76+
t.Fatal(err)
77+
}
78+
keyword := models.Keyword{}
79+
if err = json.Unmarshal(keywordBytes, &keyword); err != nil {
80+
t.Fatal(err)
81+
}
82+
83+
// query for identifier
84+
_, err = service.Get("protocols")
85+
if err != nil {
86+
t.Fatal(err)
87+
}
88+
89+
// retrieve stored object
90+
var out models.Object
91+
if err = service.ipfs.DagGet(resp.ContentHash, &out); err != nil {
92+
t.Fatal(err)
93+
}
94+
if out.LensID != resp.LensID {
95+
t.Errorf("expected id '%s', found '%s'", resp.LensID, out.LensID)
96+
}
97+
_, err = service.ipfs.Cat(out.Name)
98+
if err != nil {
99+
t.Fatal(err)
100+
}
101+
102+
// test pdf index and storage
103+
metadata, err = service.Magnify(testHashPdf, false)
104+
if err != nil {
105+
t.Fatal(err)
106+
}
107+
resp, err = service.Store(testHashPdf, metadata)
108+
if err != nil {
109+
t.Fatal(err)
110+
}
111+
112+
// try to update existing object and retrieve it from IPFS
113+
metadata.Category = "bobheadxi"
114+
o, err := service.Update(resp.LensID, testHashPdf, metadata)
115+
if err != nil {
116+
t.Fatalf("failed to update object: %s", err.Error())
117+
}
118+
var updated models.Object
119+
b, err := service.Get(o.LensID.String())
120+
if err != nil {
121+
t.Fatalf("failed to retrieve object: %s", err.Error())
122+
}
123+
json.Unmarshal(b, &updated)
124+
if updated.MetaData.Category != metadata.Category {
125+
t.Errorf("expected category '%s', found '%s'", metadata.Category, updated.MetaData.Category)
126+
}
127+
if updated.LensID != o.LensID {
128+
t.Errorf("expected id '%s', got '%s'", o.LensID, updated.LensID)
129+
}
130+
}

0 commit comments

Comments
 (0)