refactor code according to comments
diff --git a/apigee_sync_test.go b/apigee_sync_test.go
index 004306d..e9af4df 100644
--- a/apigee_sync_test.go
+++ b/apigee_sync_test.go
@@ -5,9 +5,6 @@
"github.com/apigee-labs/transicator/common"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
- "math/rand"
- "strconv"
- "time"
)
var _ = Describe("listener", func() {
@@ -94,87 +91,4 @@
storeDataSnapshot(snapshot)
})
- /*
- * in-mem cache test
- */
- It("Test In-mem cache", func() {
- testCache := &DatascopeCache{requestChan: make(chan *cacheOperationRequest), readDoneChan: make(chan []string)}
- go testCache.datascopeCacheManager()
- testCache.clearAndInitCache("test-version")
- countChan := make(chan int)
- base := 10
- rand.Seed(time.Now().Unix())
- num := base + rand.Intn(base)
- scopeMap := make(map[string]bool)
- // async update
- for i := 0; i < num; i++ {
- id := strconv.Itoa(i)
- scopeStr := strconv.Itoa(i % base)
- scope := &dataDataScope{ID: id, Scope: scopeStr}
- scopeMap[scope.Scope] = true
- go func(scope *dataDataScope) {
- testCache.updateCache(scope)
- countChan <- 1
- }(scope)
- }
-
- // wait until update done
- for i := 0; i < num; i++ {
- <-countChan
- }
-
- // verify update
- retrievedScopes := testCache.readAllScope()
- Expect(len(scopeMap)).To(Equal(len(retrievedScopes)))
- for _, s := range retrievedScopes {
- // verify each retrieved scope is valid
- Expect(scopeMap[s]).To(BeTrue())
- // no duplicate scopes
- scopeMap[s] = true
- }
-
- // remove all the datascopes with odd scope
- count := 0
- for i := 0; i < num; i++ {
- if (i%base)%2 == 1 {
- count += 1
- id := strconv.Itoa(i)
- scopeStr := strconv.Itoa(i % base)
- scope := &dataDataScope{ID: id, Scope: scopeStr}
- go func(scope *dataDataScope) {
- testCache.removeCache(scope)
- countChan <- 1
- }(scope)
- }
- }
-
- for i := 0; i < count; i++ {
- <-countChan
- }
-
- // all retrieved scopes should be even
- retrievedScopes = testCache.readAllScope()
- for _, s := range retrievedScopes {
- scopeNum, _ := strconv.Atoi(s)
- Expect(scopeNum % 2).To(BeZero())
- }
-
- // async remove all datascopes
- for i := 0; i < num; i++ {
- id := strconv.Itoa(i)
- scopeStr := strconv.Itoa(i % base)
- scope := &dataDataScope{ID: id, Scope: scopeStr}
- go func(scope *dataDataScope) {
- testCache.removeCache(scope)
- countChan <- 1
- }(scope)
- }
-
- for i := 0; i < num; i++ {
- <-countChan
- }
- retrievedScopes = testCache.readAllScope()
- Expect(len(retrievedScopes)).To(Equal(0))
- })
-
})
diff --git a/apigee_sync_datascope_cache.go b/datascope_cache.go
similarity index 100%
rename from apigee_sync_datascope_cache.go
rename to datascope_cache.go
diff --git a/datascope_cache_test.go b/datascope_cache_test.go
new file mode 100644
index 0000000..e8ee2c0
--- /dev/null
+++ b/datascope_cache_test.go
@@ -0,0 +1,95 @@
+package apidApigeeSync
+
+import (
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+ "math/rand"
+ "strconv"
+ "time"
+)
+
+var _ = Describe("datascope cache", func() {
+ /*
+ * in-mem cache test
+ */
+ It("Test In-mem cache", func() {
+ testCache := &DatascopeCache{requestChan: make(chan *cacheOperationRequest), readDoneChan: make(chan []string)}
+ go testCache.datascopeCacheManager()
+ testCache.clearAndInitCache("test-version")
+ countChan := make(chan int)
+ base := 10
+ rand.Seed(time.Now().Unix())
+ num := base + rand.Intn(base)
+ scopeMap := make(map[string]bool)
+ // async update
+ for i := 0; i < num; i++ {
+ id := strconv.Itoa(i)
+ scopeStr := strconv.Itoa(i % base)
+ scope := &dataDataScope{ID: id, Scope: scopeStr}
+ scopeMap[scope.Scope] = true
+ go func(scope *dataDataScope) {
+ testCache.updateCache(scope)
+ countChan <- 1
+ }(scope)
+ }
+
+ // wait until update done
+ for i := 0; i < num; i++ {
+ <-countChan
+ }
+
+ // verify update
+ retrievedScopes := testCache.readAllScope()
+ Expect(len(scopeMap)).To(Equal(len(retrievedScopes)))
+ for _, s := range retrievedScopes {
+ // verify each retrieved scope is valid
+ Expect(scopeMap[s]).To(BeTrue())
+ // no duplicate scopes
+ scopeMap[s] = true
+ }
+
+ // remove all the datascopes with odd scope
+ count := 0
+ for i := 0; i < num; i++ {
+ if (i%base)%2 == 1 {
+ count += 1
+ id := strconv.Itoa(i)
+ scopeStr := strconv.Itoa(i % base)
+ scope := &dataDataScope{ID: id, Scope: scopeStr}
+ go func(scope *dataDataScope) {
+ testCache.removeCache(scope)
+ countChan <- 1
+ }(scope)
+ }
+ }
+
+ for i := 0; i < count; i++ {
+ <-countChan
+ }
+
+ // all retrieved scopes should be even
+ retrievedScopes = testCache.readAllScope()
+ for _, s := range retrievedScopes {
+ scopeNum, _ := strconv.Atoi(s)
+ Expect(scopeNum % 2).To(BeZero())
+ }
+
+ // async remove all datascopes
+ for i := 0; i < num; i++ {
+ id := strconv.Itoa(i)
+ scopeStr := strconv.Itoa(i % base)
+ scope := &dataDataScope{ID: id, Scope: scopeStr}
+ go func(scope *dataDataScope) {
+ testCache.removeCache(scope)
+ countChan <- 1
+ }(scope)
+ }
+
+ for i := 0; i < num; i++ {
+ <-countChan
+ }
+ retrievedScopes = testCache.readAllScope()
+ Expect(len(retrievedScopes)).To(Equal(0))
+ })
+
+})