Skip to content

Commit 7487619

Browse files
committed
[server] fix make command
1 parent d632195 commit 7487619

File tree

5 files changed

+89
-32
lines changed

5 files changed

+89
-32
lines changed

Makefile

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,22 @@ test-dynamodb:
3434
cd server && go clean --testcache && TEST_DBS="dynamodb" go test -p 1 -v ./test
3535
docker rm -vf dynamodb-local-test
3636
test-couchbase:
37-
docker run -d --name couchbase-local-test -p 8091-8097:8091-8097 -p 11210:11210 -p 11207:11207 -p 18091-18095:18091-18095 -p 18096:18096 -p 18097:18097 couchbase:latest
37+
# docker run -d --name couchbase-local-test -p 8091-8097:8091-8097 -p 11210:11210 -p 11207:11207 -p 18091-18095:18091-18095 -p 18096:18096 -p 18097:18097 couchbase:latest
38+
# create a docker container, set the cluster information and then run the tests
3839
cd server && go clean --testcache && TEST_DBS="couchbase" go test -p 1 -v ./test
39-
docker rm -vf couchbase-local-test
40+
# docker rm -vf couchbase-local-test
4041
test-all-db:
4142
rm -rf server/test/test.db server/test/test.db-shm server/test/test.db-wal && rm -rf test.db test.db-shm test.db-wal
4243
docker run -d --name authorizer_scylla_db -p 9042:9042 scylladb/scylla
4344
docker run -d --name authorizer_mongodb_db -p 27017:27017 mongo:4.4.15
4445
docker run -d --name authorizer_arangodb -p 8529:8529 -e ARANGO_NO_AUTH=1 arangodb/arangodb:3.8.4
4546
docker run -d --name dynamodb-local-test -p 8000:8000 amazon/dynamodb-local:latest
46-
docker run -d --name couchbase-local-test -p 8091-8097:8091-8097 -p 11210:11210 -p 11207:11207 -p 18091-18095:18091-18095 -p 18096:18096 -p 18097:18097 couchbase:latest
47-
cd server && go clean --testcache && TEST_DBS="sqlite,mongodb,arangodb,scylladb,dynamodb,couchbase" go test -p 1 -v ./test
47+
# docker run -d --name couchbase-local-test -p 8091-8097:8091-8097 -p 11210:11210 -p 11207:11207 -p 18091-18095:18091-18095 -p 18096:18096 -p 18097:18097 couchbase:latest
48+
cd server && go clean --testcache && TEST_DBS="sqlite,mongodb,arangodb,scylladb,dynamodb" go test -p 1 -v ./test
4849
docker rm -vf authorizer_scylla_db
4950
docker rm -vf authorizer_mongodb_db
5051
docker rm -vf authorizer_arangodb
5152
docker rm -vf dynamodb-local-test
52-
docker rm -vf couchbase-local-test
53+
# docker rm -vf couchbase-local-test
5354
generate:
5455
cd server && go run github.com/99designs/gqlgen generate && go mod tidy

scripts/couchbase-test.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/sh
2+
3+
set -x
4+
set -m
5+
6+
sleep 15
7+
8+
# Setup index and memory quota
9+
# curl -v -X POST http://127.0.0.1:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300
10+
11+
# Setup services
12+
curl -v http://127.0.0.1:8091/node/controller/setupServices -d services=kv%2Cn1ql%2Cindex
13+
14+
# Setup credentials
15+
curl -v http://127.0.0.1:8091/settings/web -d port=8091 -d username=Administrator -d password=password
16+
17+
# Setup Memory Optimized Indexes
18+
curl -i -u Administrator:password -X POST http://127.0.0.1:8091/settings/indexes -d 'storageMode=memory_optimized'
19+
20+
# Load travel-sample bucket
21+
#curl -v -u Administrator:password -X POST http://127.0.0.1:8091/sampleBuckets/install -d '["travel-sample"]'
22+
23+
echo "Type: $TYPE"
24+
25+
if [ "$TYPE" = "WORKER" ]; then
26+
echo "Sleeping ..."
27+
sleep 15
28+
29+
#IP=`hostname -s`
30+
IP=`hostname -I | cut -d ' ' -f1`
31+
echo "IP: " $IP
32+
33+
echo "Auto Rebalance: $AUTO_REBALANCE"
34+
if [ "$AUTO_REBALANCE" = "true" ]; then
35+
couchbase-cli rebalance --cluster=$COUCHBASE_MASTER:8091 --user=Administrator --password=password --server-add=$IP --server-add-username=Administrator --server-add-password=password
36+
else
37+
couchbase-cli server-add --cluster=$COUCHBASE_MASTER:8091 --user=Administrator --password=password --server-add=$IP --server-add-username=Administrator --server-add-password=password
38+
fi;
39+
fi;
40+
41+
fg 1

server/db/db.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/authorizerdev/authorizer/server/db/providers"
88
"github.com/authorizerdev/authorizer/server/db/providers/arangodb"
99
"github.com/authorizerdev/authorizer/server/db/providers/cassandradb"
10+
"github.com/authorizerdev/authorizer/server/db/providers/couchbase"
1011
"github.com/authorizerdev/authorizer/server/db/providers/dynamodb"
1112
"github.com/authorizerdev/authorizer/server/db/providers/mongodb"
1213
"github.com/authorizerdev/authorizer/server/db/providers/sql"
@@ -26,6 +27,7 @@ func InitDB() error {
2627
isMongoDB := envs.DatabaseType == constants.DbTypeMongodb
2728
isCassandra := envs.DatabaseType == constants.DbTypeCassandraDB || envs.DatabaseType == constants.DbTypeScyllaDB
2829
isDynamoDB := envs.DatabaseType == constants.DbTypeDynamoDB
30+
isCouchbaseDB := envs.DatabaseType == constants.DbTypeCouchbaseDB
2931

3032
if isSQL {
3133
log.Info("Initializing SQL Driver for: ", envs.DatabaseType)
@@ -72,5 +74,14 @@ func InitDB() error {
7274
}
7375
}
7476

77+
if isCouchbaseDB {
78+
log.Info("Initializing CouchbaseDB Driver for: ", envs.DatabaseType)
79+
Provider, err = couchbase.NewProvider()
80+
if err != nil {
81+
log.Fatal("Failed to initialize Couchbase driver: ", err)
82+
return err
83+
}
84+
}
85+
7586
return nil
7687
}

server/db/providers/couchbase/provider.go

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,54 +4,52 @@ import (
44
"context"
55
"errors"
66
"fmt"
7-
"os"
87
"reflect"
98

10-
"github.com/authorizerdev/authorizer/server/constants"
9+
"github.com/couchbase/gocb/v2"
10+
1111
"github.com/authorizerdev/authorizer/server/db/models"
1212
"github.com/authorizerdev/authorizer/server/memorystore"
13-
"github.com/couchbase/gocb/v2"
1413
)
1514

16-
// TODO change following provider to new db provider
15+
const (
16+
defaultBucketName = "authorizer"
17+
defaultScope = "_default"
18+
)
19+
1720
type provider struct {
1821
db *gocb.Scope
1922
scopeName string
2023
}
2124

22-
// NewProvider returns a new SQL provider
23-
// TODO change following provider to new db provider
25+
// NewProvider returns a new Couchbase provider
2426
func NewProvider() (*provider, error) {
25-
// scopeName := os.Getenv(constants.EnvCouchbaseScope)
26-
bucketName := os.Getenv(constants.EnvCouchbaseBucket)
27-
scopeName := os.Getenv(constants.EnvCouchbaseScope)
28-
27+
bucketName := memorystore.RequiredEnvStoreObj.GetRequiredEnv().CouchbaseBucket
28+
scopeName := memorystore.RequiredEnvStoreObj.GetRequiredEnv().CouchbaseScope
2929
dbURL := memorystore.RequiredEnvStoreObj.GetRequiredEnv().DatabaseURL
3030
userName := memorystore.RequiredEnvStoreObj.GetRequiredEnv().DatabaseUsername
3131
password := memorystore.RequiredEnvStoreObj.GetRequiredEnv().DatabasePassword
32-
3332
opts := gocb.ClusterOptions{
3433
Username: userName,
3534
Password: password,
3635
}
37-
36+
if bucketName == "" {
37+
bucketName = defaultBucketName
38+
}
39+
if scopeName == "" {
40+
scopeName = defaultScope
41+
}
3842
cluster, err := gocb.Connect(dbURL, opts)
39-
4043
if err != nil {
4144
return nil, err
4245
}
43-
4446
// To create the bucket and scope if not exist
4547
bucket, err := CreateBucketAndScope(cluster, bucketName, scopeName)
46-
4748
if err != nil {
4849
return nil, err
4950
}
50-
5151
scope := bucket.Scope(scopeName)
52-
5352
scopeIdentifier := fmt.Sprintf("%s.%s", bucketName, scopeName)
54-
5553
v := reflect.ValueOf(models.Collections)
5654
for i := 0; i < v.NumField(); i++ {
5755
field := v.Field(i)
@@ -62,10 +60,10 @@ func NewProvider() (*provider, error) {
6260
collectionOpts := gocb.CreateCollectionOptions{
6361
Context: context.TODO(),
6462
}
65-
_ = bucket.Collections().CreateCollection(user, &collectionOpts)
66-
// if err != nil && !errors.Is(err, gocb.ErrCollectionExists) {
67-
// return nil, err
68-
// }
63+
err = bucket.Collections().CreateCollection(user, &collectionOpts)
64+
if err != nil && !errors.Is(err, gocb.ErrCollectionExists) {
65+
return nil, err
66+
}
6967
indexQuery := fmt.Sprintf("CREATE PRIMARY INDEX ON %s.%s", scopeIdentifier, field.String())
7068
scope.Query(indexQuery, nil)
7169
}
@@ -100,15 +98,15 @@ func CreateBucketAndScope(cluster *gocb.Cluster, bucketName string, scopeName st
10098
}, nil)
10199

102100
bucket := cluster.Bucket(bucketName)
103-
104101
if err != nil && !errors.Is(err, gocb.ErrBucketExists) {
105102
return bucket, err
106103
}
107104

108-
err = bucket.Collections().CreateScope(scopeName, nil)
109-
110-
if err != nil && !errors.Is(err, gocb.ErrScopeExists) {
111-
return bucket, err
105+
if scopeName != defaultScope {
106+
err = bucket.Collections().CreateScope(scopeName, nil)
107+
if err != nil && !errors.Is(err, gocb.ErrScopeExists) {
108+
return bucket, err
109+
}
112110
}
113111

114112
return bucket, nil

server/test/resolvers_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ func TestResolvers(t *testing.T) {
5858
memorystore.Provider.UpdateEnvVariable(constants.EnvAwsRegion, "ap-south-1")
5959
os.Setenv(constants.EnvAwsRegion, "ap-south-1")
6060
}
61+
if dbType == constants.DbTypeCouchbaseDB {
62+
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabaseUsername, "Administrator")
63+
os.Setenv(constants.EnvKeyDatabaseUsername, "Administrator")
64+
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyDatabasePassword, "password")
65+
os.Setenv(constants.EnvKeyDatabasePassword, "password")
66+
}
6167

6268
memorystore.InitRequiredEnv()
6369

0 commit comments

Comments
 (0)