diff --git a/bird/bird.go b/bird/bird.go index dd93f5b..2c86c8b 100644 --- a/bird/bird.go +++ b/bird/bird.go @@ -92,6 +92,7 @@ func fromCacheMemory(key string) (Parsed, bool) { } func fromCacheRedis(key string) (Parsed, bool) { + key = "B" + IPVersion + "_" + key val, err := CacheRedis.Get(key) if err != nil { return NilParse, false @@ -121,6 +122,7 @@ func toCacheMemory(key string, val Parsed) { } func toCacheRedis(key string, val Parsed) { + key = "B" + IPVersion + "_" + key val["ttl"] = time.Now().Add(5 * time.Minute) err := CacheRedis.Set(key, val) if err != nil { diff --git a/bird/redis_cache_test.go b/bird/redis_cache_test.go index e54c546..a8b6103 100644 --- a/bird/redis_cache_test.go +++ b/bird/redis_cache_test.go @@ -56,3 +56,45 @@ func Test_RedisCacheAccessKeyMissing(t *testing.T) { t.Log("Cache error:", err) t.Log(parsed) } + +func Test_RedisCacheRoutes(t *testing.T) { + f, err := openFile("routes_bird1_ipv4.sample") + if err != nil { + t.Error(err) + } + defer f.Close() + + parsed := parseRoutes(f) + _, ok := parsed["routes"].([]Parsed) + if !ok { + t.Fatal("Error getting routes") + } + + cache, err := NewRedisCache(CacheConfig{ + RedisServer: "localhost:6379", + }) + + if err != nil { + t.Log("Redis server not available:", err) + t.Log("Skipping redis tests.") + return + } + + err = cache.Set("routes_protocol_test", parsed) + if err != nil { + t.Error(err) + } + + parsed, err = cache.Get("routes_protocol_test") + if err != nil { + t.Error(err) + return + } + + routes, ok := parsed["routes"].([]interface{}) + if !ok { + t.Error("Error getting routes") + } + + t.Log("Retrieved routes:", len(routes)) +}