123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package persistence
- import (
- "encoding/hex"
- "testing"
- "github.com/langgenius/dify-plugin-daemon/internal/db"
- "github.com/langgenius/dify-plugin-daemon/internal/oss/local"
- "github.com/langgenius/dify-plugin-daemon/internal/types/app"
- "github.com/langgenius/dify-plugin-daemon/internal/utils/cache"
- "github.com/langgenius/dify-plugin-daemon/internal/utils/strings"
- )
- func TestPersistenceStoreAndLoad(t *testing.T) {
- err := cache.InitRedisClient("localhost:6379", "difyai123456", false)
- if err != nil {
- t.Fatalf("Failed to init redis client: %v", err)
- }
- defer cache.Close()
- db.Init(&app.Config{
- DBUsername: "postgres",
- DBPassword: "difyai123456",
- DBHost: "localhost",
- DBDefaultDatabase: "postgres",
- DBPort: 5432,
- DBDatabase: "dify_plugin_daemon",
- DBSslMode: "disable",
- })
- defer db.Close()
- oss := local.NewLocalStorage("./storage")
- InitPersistence(oss, &app.Config{
- PersistenceStoragePath: "./persistence_storage",
- PersistenceStorageMaxSize: 1024 * 1024 * 1024,
- })
- key := strings.RandomString(10)
- if err := persistence.Save("tenant_id", "plugin_checksum", -1, key, []byte("data")); err != nil {
- t.Fatalf("Failed to save data: %v", err)
- }
- data, err := persistence.Load("tenant_id", "plugin_checksum", key)
- if err != nil {
- t.Fatalf("Failed to load data: %v", err)
- }
- if string(data) != "data" {
- t.Fatalf("Data mismatch: %s", data)
- }
- // check if the file exists
- if _, err := oss.Load("./persistence_storage/tenant_id/plugin_checksum/" + key); err != nil {
- t.Fatalf("File not found: %v", err)
- }
- // check if cache is updated
- cacheData, err := cache.GetString("persistence:cache:tenant_id:plugin_checksum:" + key)
- if err != nil {
- t.Fatalf("Failed to get cache data: %v", err)
- }
- cacheDataBytes, err := hex.DecodeString(cacheData)
- if err != nil {
- t.Fatalf("Failed to decode cache data: %v", err)
- }
- if string(cacheDataBytes) != "data" {
- t.Fatalf("Cache data mismatch: %s", cacheData)
- }
- }
- func TestPersistenceSaveAndLoadWithLongKey(t *testing.T) {
- err := cache.InitRedisClient("localhost:6379", "difyai123456", false)
- if err != nil {
- t.Fatalf("Failed to init redis client: %v", err)
- }
- defer cache.Close()
- db.Init(&app.Config{
- DBUsername: "postgres",
- DBPassword: "difyai123456",
- DBHost: "localhost",
- DBPort: 5432,
- DBDatabase: "dify_plugin_daemon",
- DBSslMode: "disable",
- })
- defer db.Close()
- InitPersistence(local.NewLocalStorage("./storage"), &app.Config{
- PersistenceStoragePath: "./persistence_storage",
- PersistenceStorageMaxSize: 1024 * 1024 * 1024,
- })
- key := strings.RandomString(257)
- if err := persistence.Save("tenant_id", "plugin_checksum", -1, key, []byte("data")); err == nil {
- t.Fatalf("Expected error, got nil")
- }
- }
- func TestPersistenceDelete(t *testing.T) {
- err := cache.InitRedisClient("localhost:6379", "difyai123456", false)
- if err != nil {
- t.Fatalf("Failed to init redis client: %v", err)
- }
- defer cache.Close()
- db.Init(&app.Config{
- DBUsername: "postgres",
- DBPassword: "difyai123456",
- DBHost: "localhost",
- DBPort: 5432,
- DBDatabase: "dify_plugin_daemon",
- DBSslMode: "disable",
- })
- defer db.Close()
- oss := local.NewLocalStorage("./storage")
- InitPersistence(oss, &app.Config{
- PersistenceStoragePath: "./persistence_storage",
- PersistenceStorageMaxSize: 1024 * 1024 * 1024,
- })
- key := strings.RandomString(10)
- if err := persistence.Save("tenant_id", "plugin_checksum", -1, key, []byte("data")); err != nil {
- t.Fatalf("Failed to save data: %v", err)
- }
- if err := persistence.Delete("tenant_id", "plugin_checksum", key); err != nil {
- t.Fatalf("Failed to delete data: %v", err)
- }
- // check if the file exists
- if _, err := oss.Load("./persistence_storage/tenant_id/plugin_checksum/" + key); err == nil {
- t.Fatalf("File not deleted: %v", err)
- }
- // check if cache is updated
- _, err = cache.GetString("persistence:cache:tenant_id:plugin_checksum:" + key)
- if err != cache.ErrNotFound {
- t.Fatalf("Cache data not deleted: %v", err)
- }
- }
|