-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathaerospike_test.go
106 lines (95 loc) · 2.11 KB
/
aerospike_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package aerospike
import (
"fmt"
"github.com/stretchr/testify/assert"
_ "github.com/viant/asc"
"github.com/viant/dsc"
"github.com/viant/dsunit"
"github.com/viant/endly"
"github.com/viant/endly/system/docker"
"github.com/viant/toolbox"
"testing"
)
/*
Prerequisites:
1.docker service running
*/
//Global variables for all test integrating with endly.
var endlyManager = endly.New()
var endlyContext = endlyManager.NewContext(toolbox.NewContext())
func setup(t *testing.T) {
err := startAerospike()
if err != nil {
t.Error(err)
t.FailNow()
}
}
func tearDown(t *testing.T) {
err := stopAerospike()
if err != nil {
t.Error(err)
t.FailNow()
}
}
func TestDsunit_Aerospike(t *testing.T) {
setup(t)
defer tearDown(t)
if dsunit.InitFromURL(t, "config/init.json") {
if !dsunit.PrepareFor(t, "mydb", "data", "use_case_1") {
return
}
err := runSomeBusinessLogic()
if !assert.Nil(t, err) {
return
}
dsunit.ExpectFor(t, "mydb", dsunit.FullTableDatasetCheckPolicy, "data", "use_case_1")
}
}
func runSomeBusinessLogic() error {
config, err := dsc.NewConfigWithParameters("aerospike", "tcp(127.0.0.1:3000)/[namespace]", "", map[string]interface{}{
"namespace": "test",
"host": "127.0.0.1",
})
if err != nil {
return err
}
manager, err := dsc.NewManagerFactory().Create(config)
if err != nil {
return err
}
result, err := manager.Execute("UPDATE users SET comments = ? WHERE id = ?", "dsunit test", 3)
if err != nil {
return err
}
sqlResult, err := result.RowsAffected()
if err != nil {
return err
}
if sqlResult != 1 {
return fmt.Errorf("expected one row updated but had: %v", sqlResult)
}
return nil
}
func startAerospike() error {
_, err := endlyManager.Run(endlyContext, &docker.RunRequest{
Image: "aerospike/aerospike-server:latest",
Ports: map[string]string{
"3000": "3000",
"3001": "3001",
"3002": "3002",
"3004": "3004",
"8081": "8081",
},
Name: "aerospike_dsunit",
})
return err
}
func stopAerospike() error {
_, err := endlyManager.Run(endlyContext, &docker.StopRequest{
Name: "aerospike_dsunit",
})
if err != nil {
return err
}
return err
}