summary refs log tree commit diff stats
path: root/cache_test.go
diff options
context:
space:
mode:
authorBen Morrison <ben@gbmor.dev>2019-05-27 17:56:59 -0400
committerBen Morrison <ben@gbmor.dev>2019-05-27 17:56:59 -0400
commit449d0c14d8b2ec192ddebdc348cd53b6dab8a505 (patch)
treeaa135e86a3bafcd5426f382e315da9e776a25d0b /cache_test.go
parentc38385cfed939f6cfeb9bae32e4104e938454946 (diff)
downloadgetwtxt-449d0c14d8b2ec192ddebdc348cd53b6dab8a505.tar.gz
testing/benching push/pull DB, refreshCache
Diffstat (limited to 'cache_test.go')
-rw-r--r--cache_test.go113
1 files changed, 113 insertions, 0 deletions
diff --git a/cache_test.go b/cache_test.go
new file mode 100644
index 0000000..82d37c2
--- /dev/null
+++ b/cache_test.go
@@ -0,0 +1,113 @@
+package main
+
+import (
+	"net"
+	"testing"
+
+	"github.com/getwtxt/registry"
+)
+
+func Test_refreshCache(t *testing.T) {
+	initTestConf()
+	confObj.Mu.RLock()
+	prevtime := confObj.LastCache
+	confObj.Mu.RUnlock()
+
+	t.Run("Cache Time Check", func(t *testing.T) {
+		refreshCache()
+		confObj.Mu.RLock()
+		newtime := confObj.LastCache
+		confObj.Mu.RUnlock()
+
+		if !newtime.After(prevtime) || newtime == prevtime {
+			t.Errorf("Cache time did not update, check refreshCache() logic\n")
+		}
+	})
+}
+
+func Benchmark_refreshCache(b *testing.B) {
+	initTestConf()
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		refreshCache()
+	}
+}
+
+func Test_pushpullDatabase(t *testing.T) {
+	initTestConf()
+	initDatabase()
+	out, _, err := registry.GetTwtxt("https://gbmor.dev/twtxt.txt")
+	if err != nil {
+		t.Errorf("Couldn't set up test: %v\n", err)
+	}
+	statusmap, err := registry.ParseUserTwtxt(out, "gbmor", "https://gbmor.dev/twtxt.txt")
+	if err != nil {
+		t.Errorf("Couldn't set up test: %v\n", err)
+	}
+	twtxtCache.AddUser("gbmor", "https://gbmor.dev/twtxt.txt", net.ParseIP("127.0.0.1"), statusmap)
+
+	t.Run("Push to Database", func(t *testing.T) {
+		err := pushDatabase()
+		if err != nil {
+			t.Errorf("%v\n", err)
+		}
+	})
+
+	t.Run("Clearing Registry", func(t *testing.T) {
+		err := twtxtCache.DelUser("https://gbmor.dev/twtxt.txt")
+		if err != nil {
+			t.Errorf("%v", err)
+		}
+	})
+
+	t.Run("Pulling from Database", func(t *testing.T) {
+		pullDatabase()
+		twtxtCache.Mu.RLock()
+		if _, ok := twtxtCache.Users["https://gbmor.dev/twtxt.txt"]; !ok {
+			t.Errorf("Missing user previously pushed to database\n")
+		}
+		twtxtCache.Mu.RUnlock()
+
+	})
+}
+
+func Benchmark_pushDatabase(b *testing.B) {
+	initTestConf()
+
+	if len(dbChan) < 1 {
+		initDatabase()
+	}
+
+	out, _, err := registry.GetTwtxt("https://gbmor.dev/twtxt.txt")
+	if err != nil {
+		b.Errorf("Couldn't set up benchmark: %v\n", err)
+	}
+
+	statusmap, err := registry.ParseUserTwtxt(out, "gbmor", "https://gbmor.dev/twtxt.txt")
+	if err != nil {
+		b.Errorf("Couldn't set up benchmark: %v\n", err)
+	}
+
+	twtxtCache.AddUser("gbmor", "https://gbmor.dev/twtxt.txt", net.ParseIP("127.0.0.1"), statusmap)
+
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		err := pushDatabase()
+		if err != nil {
+			b.Errorf("%v\n", err)
+		}
+	}
+}
+func Benchmark_pullDatabase(b *testing.B) {
+	initTestConf()
+
+	if len(dbChan) < 1 {
+		initDatabase()
+	}
+
+	for i := 0; i < b.N; i++ {
+		pullDatabase()
+	}
+}