mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	修复部分测试用例
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,2 +1,3 @@
 | 
				
			|||||||
*_plus.go
 | 
					*_plus.go
 | 
				
			||||||
 | 
					*_plus_test.go
 | 
				
			||||||
*-plus.sh
 | 
					*-plus.sh
 | 
				
			||||||
							
								
								
									
										9
									
								
								build/test.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								build/test.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TAG=${1}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -z "$TAG" ]; then
 | 
				
			||||||
 | 
						TAG="community"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go test -v ../... -tags=${TAG}
 | 
				
			||||||
@@ -12,6 +12,11 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileListDB_ListLFUItems(t *testing.T) {
 | 
					func TestFileListDB_ListLFUItems(t *testing.T) {
 | 
				
			||||||
	var db = caches.NewFileListDB()
 | 
						var db = caches.NewFileListDB()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = db.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
						err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
				
			||||||
	//err := db.Open(Tea.Root + "/data/cache-index/p1/db-0.db")
 | 
						//err := db.Open(Tea.Root + "/data/cache-index/p1/db-0.db")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -22,10 +27,6 @@ func TestFileListDB_ListLFUItems(t *testing.T) {
 | 
				
			|||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		_ = db.Close()
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	hashList, err := db.ListLFUItems(100)
 | 
						hashList, err := db.ListLFUItems(100)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -35,25 +36,38 @@ func TestFileListDB_ListLFUItems(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileListDB_IncreaseHitAsync(t *testing.T) {
 | 
					func TestFileListDB_IncreaseHitAsync(t *testing.T) {
 | 
				
			||||||
	var db = caches.NewFileListDB()
 | 
						var db = caches.NewFileListDB()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = db.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
						err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = db.Init()
 | 
						err = db.Init()
 | 
				
			||||||
	err = db.IncreaseHitAsync("4598e5231ba47d6ec7aa9ea640ff2eaf")
 | 
						err = db.IncreaseHitAsync("4598e5231ba47d6ec7aa9ea640ff2eaf")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// wait transaction
 | 
						// wait transaction
 | 
				
			||||||
	time.Sleep(1 * time.Second)
 | 
						time.Sleep(1 * time.Second)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileListDB_CleanMatchKey(t *testing.T) {
 | 
					func TestFileListDB_CleanMatchKey(t *testing.T) {
 | 
				
			||||||
	var db = caches.NewFileListDB()
 | 
						var db = caches.NewFileListDB()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = db.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
						err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = db.Init()
 | 
						err = db.Init()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = db.CleanMatchKey("https://*.goedge.cn/large-text")
 | 
						err = db.CleanMatchKey("https://*.goedge.cn/large-text")
 | 
				
			||||||
@@ -69,10 +83,16 @@ func TestFileListDB_CleanMatchKey(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileListDB_CleanMatchPrefix(t *testing.T) {
 | 
					func TestFileListDB_CleanMatchPrefix(t *testing.T) {
 | 
				
			||||||
	var db = caches.NewFileListDB()
 | 
						var db = caches.NewFileListDB()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = db.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
						err := db.Open(Tea.Root + "/data/cache-db-large.db")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = db.Init()
 | 
						err = db.Init()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = db.CleanMatchPrefix("https://*.goedge.cn/large-text")
 | 
						err = db.CleanMatchPrefix("https://*.goedge.cn/large-text")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,15 +59,16 @@ func TestFileListHashMap_BigInt(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileListHashMap_Load(t *testing.T) {
 | 
					func TestFileListHashMap_Load(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
				
			||||||
	err := list.Init()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		t.Fatal(err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		_ = list.Close()
 | 
							_ = list.Close()
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := list.Init()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var m = caches.NewFileListHashMap()
 | 
						var m = caches.NewFileListHashMap()
 | 
				
			||||||
	var before = time.Now()
 | 
						var before = time.Now()
 | 
				
			||||||
	var db = list.GetDB("abc")
 | 
						var db = list.GetDB("abc")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ package caches_test
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeNode/internal/caches"
 | 
						"github.com/TeaOSLab/EdgeNode/internal/caches"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeNode/internal/goman"
 | 
						"github.com/TeaOSLab/EdgeNode/internal/goman"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeNode/internal/utils/testutils"
 | 
				
			||||||
	"github.com/iwind/TeaGo/Tea"
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
	"github.com/iwind/TeaGo/rands"
 | 
						"github.com/iwind/TeaGo/rands"
 | 
				
			||||||
	"github.com/iwind/TeaGo/types"
 | 
						"github.com/iwind/TeaGo/types"
 | 
				
			||||||
@@ -17,6 +18,11 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_Init(t *testing.T) {
 | 
					func TestFileList_Init(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -29,6 +35,11 @@ func TestFileList_Init(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_Add(t *testing.T) {
 | 
					func TestFileList_Add(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -59,16 +70,21 @@ func TestFileList_Add(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileList_Add_Many(t *testing.T) {
 | 
					func TestFileList_Add_Many(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						if !testutils.IsSingleTesting() {
 | 
				
			||||||
	err := list.Init()
 | 
							return
 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		t.Fatal(err)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		_ = list.Close()
 | 
							_ = list.Close()
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := list.Init()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var before = time.Now()
 | 
						var before = time.Now()
 | 
				
			||||||
	for i := 0; i < 10_000_000; i++ {
 | 
						for i := 0; i < 10_000_000; i++ {
 | 
				
			||||||
		u := "https://edge.teaos.cn/123456" + strconv.Itoa(i)
 | 
							u := "https://edge.teaos.cn/123456" + strconv.Itoa(i)
 | 
				
			||||||
@@ -92,15 +108,15 @@ func TestFileList_Add_Many(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_Exist(t *testing.T) {
 | 
					func TestFileList_Exist(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		_ = list.Close()
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	total, _ := list.Count()
 | 
						total, _ := list.Count()
 | 
				
			||||||
	t.Log("total:", total)
 | 
						t.Log("total:", total)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -130,7 +146,7 @@ func TestFileList_Exist_Many_DB(t *testing.T) {
 | 
				
			|||||||
	// 测试在多个数据库下的性能
 | 
						// 测试在多个数据库下的性能
 | 
				
			||||||
	var listSlice = []caches.ListInterface{}
 | 
						var listSlice = []caches.ListInterface{}
 | 
				
			||||||
	for i := 1; i <= 10; i++ {
 | 
						for i := 1; i <= 10; i++ {
 | 
				
			||||||
		list := caches.NewFileList(Tea.Root + "/data/data" + strconv.Itoa(i))
 | 
							var list = caches.NewFileList(Tea.Root + "/data/data" + strconv.Itoa(i))
 | 
				
			||||||
		err := list.Init()
 | 
							err := list.Init()
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			t.Fatal(err)
 | 
								t.Fatal(err)
 | 
				
			||||||
@@ -138,6 +154,12 @@ func TestFileList_Exist_Many_DB(t *testing.T) {
 | 
				
			|||||||
		listSlice = append(listSlice, list)
 | 
							listSlice = append(listSlice, list)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							for _, list := range listSlice {
 | 
				
			||||||
 | 
								_ = list.Close()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var wg = sync.WaitGroup{}
 | 
						var wg = sync.WaitGroup{}
 | 
				
			||||||
	var threads = 8
 | 
						var threads = 8
 | 
				
			||||||
	wg.Add(threads)
 | 
						wg.Add(threads)
 | 
				
			||||||
@@ -181,15 +203,16 @@ func TestFileList_Exist_Many_DB(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_CleanPrefix(t *testing.T) {
 | 
					func TestFileList_CleanPrefix(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
	err := list.Init()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		t.Fatal(err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		_ = list.Close()
 | 
							_ = list.Close()
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := list.Init()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	before := time.Now()
 | 
						before := time.Now()
 | 
				
			||||||
	err = list.CleanPrefix("123")
 | 
						err = list.CleanPrefix("123")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -200,15 +223,15 @@ func TestFileList_CleanPrefix(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_Remove(t *testing.T) {
 | 
					func TestFileList_Remove(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1").(*caches.FileList)
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		_ = list.Close()
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	list.OnRemove(func(item *caches.Item) {
 | 
						list.OnRemove(func(item *caches.Item) {
 | 
				
			||||||
		t.Logf("remove %#v", item)
 | 
							t.Logf("remove %#v", item)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@@ -224,13 +247,15 @@ func TestFileList_Remove(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_Purge(t *testing.T) {
 | 
					func TestFileList_Purge(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		_ = list.Close()
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var count = 0
 | 
						var count = 0
 | 
				
			||||||
	_, err = list.Purge(caches.CountFileDB*2, func(hash string) error {
 | 
						_, err = list.Purge(caches.CountFileDB*2, func(hash string) error {
 | 
				
			||||||
@@ -246,13 +271,15 @@ func TestFileList_Purge(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_PurgeLFU(t *testing.T) {
 | 
					func TestFileList_PurgeLFU(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		_ = list.Close()
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = list.IncreaseHit(stringutil.Md5("123456"))
 | 
						err = list.IncreaseHit(stringutil.Md5("123456"))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -273,15 +300,16 @@ func TestFileList_PurgeLFU(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_Stat(t *testing.T) {
 | 
					func TestFileList_Stat(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
	err := list.Init()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		t.Fatal(err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		_ = list.Close()
 | 
							_ = list.Close()
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := list.Init()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	stat, err := list.Stat(nil)
 | 
						stat, err := list.Stat(nil)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -291,6 +319,11 @@ func TestFileList_Stat(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_Count(t *testing.T) {
 | 
					func TestFileList_Count(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data")
 | 
						var list = caches.NewFileList(Tea.Root + "/data")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -305,7 +338,12 @@ func TestFileList_Count(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileList_CleanAll(t *testing.T) {
 | 
					func TestFileList_CleanAll(t *testing.T) {
 | 
				
			||||||
	list := caches.NewFileList(Tea.Root + "/data")
 | 
						var list = caches.NewFileList(Tea.Root + "/data")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -320,6 +358,11 @@ func TestFileList_CleanAll(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_IncreaseHit(t *testing.T) {
 | 
					func TestFileList_IncreaseHit(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -333,7 +376,13 @@ func TestFileList_IncreaseHit(t *testing.T) {
 | 
				
			|||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
		t.Log(time.Since(before).Seconds()*1000, "ms")
 | 
							t.Log(time.Since(before).Seconds()*1000, "ms")
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
	for i := 0; i < 1000_000; i++ {
 | 
					
 | 
				
			||||||
 | 
						var count = 1_000_000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if !testutils.IsSingleTesting() {
 | 
				
			||||||
 | 
							count = 10
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for i := 0; i < count; i++ {
 | 
				
			||||||
		err = list.IncreaseHit(stringutil.Md5("abc" + types.String(i)))
 | 
							err = list.IncreaseHit(stringutil.Md5("abc" + types.String(i)))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -344,6 +393,11 @@ func TestFileList_IncreaseHit(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileList_UpgradeV3(t *testing.T) {
 | 
					func TestFileList_UpgradeV3(t *testing.T) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p43").(*caches.FileList)
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p43").(*caches.FileList)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -363,6 +417,11 @@ func TestFileList_UpgradeV3(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func BenchmarkFileList_Exist(b *testing.B) {
 | 
					func BenchmarkFileList_Exist(b *testing.B) {
 | 
				
			||||||
	var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
						var list = caches.NewFileList(Tea.Root + "/data/cache-index/p1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							_ = list.Close()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := list.Init()
 | 
						err := list.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		b.Fatal(err)
 | 
							b.Fatal(err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ package caches
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeNode/internal/utils/testutils"
 | 
				
			||||||
	"github.com/cespare/xxhash"
 | 
						"github.com/cespare/xxhash"
 | 
				
			||||||
	"github.com/iwind/TeaGo/logs"
 | 
						"github.com/iwind/TeaGo/logs"
 | 
				
			||||||
	"github.com/iwind/TeaGo/rands"
 | 
						"github.com/iwind/TeaGo/rands"
 | 
				
			||||||
@@ -107,7 +108,9 @@ func TestMemoryList_Purge_Large_List(t *testing.T) {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	time.Sleep(1 * time.Hour)
 | 
						if testutils.IsSingleTesting() {
 | 
				
			||||||
 | 
							time.Sleep(1 * time.Hour)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestMemoryList_Stat(t *testing.T) {
 | 
					func TestMemoryList_Stat(t *testing.T) {
 | 
				
			||||||
@@ -255,9 +258,11 @@ func TestMemoryList_GC(t *testing.T) {
 | 
				
			|||||||
	//runtime.GC()
 | 
						//runtime.GC()
 | 
				
			||||||
	t.Log("gc cost:", time.Since(before).Seconds()*1000, "ms")
 | 
						t.Log("gc cost:", time.Since(before).Seconds()*1000, "ms")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	timeout := time.NewTimer(2 * time.Minute)
 | 
						if testutils.IsSingleTesting() {
 | 
				
			||||||
	<-timeout.C
 | 
							timeout := time.NewTimer(2 * time.Minute)
 | 
				
			||||||
	t.Log("2 minutes passed")
 | 
							<-timeout.C
 | 
				
			||||||
 | 
							t.Log("2 minutes passed")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	time.Sleep(30 * time.Minute)
 | 
							time.Sleep(30 * time.Minute)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ package caches_test
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeNode/internal/caches"
 | 
						"github.com/TeaOSLab/EdgeNode/internal/caches"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeNode/internal/utils/testutils"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -23,7 +24,9 @@ func TestNewOpenFileCache_Close(t *testing.T) {
 | 
				
			|||||||
	cache.Get("d.txt")
 | 
						cache.Get("d.txt")
 | 
				
			||||||
	cache.Close("a.txt")
 | 
						cache.Close("a.txt")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	time.Sleep(100 * time.Second)
 | 
						if testutils.IsSingleTesting() {
 | 
				
			||||||
 | 
							time.Sleep(100 * time.Second)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestNewOpenFileCache_CloseAll(t *testing.T) {
 | 
					func TestNewOpenFileCache_CloseAll(t *testing.T) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,21 +8,29 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileReader(t *testing.T) {
 | 
					func TestFileReader(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, path, _ := storage.keyPath("my-key")
 | 
						_, path, _ := storage.keyPath("my-key")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fp, err := os.Open(path)
 | 
						fp, err := os.Open(path)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if os.IsNotExist(err) {
 | 
				
			||||||
 | 
								t.Log("file '" + path + "' not exists")
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
@@ -58,6 +66,10 @@ func TestFileReader_ReadHeader(t *testing.T) {
 | 
				
			|||||||
	var path = "/Users/WorkSpace/EdgeProject/EdgeCache/p43/12/6b/126bbed90fc80f2bdfb19558948b0d49.cache"
 | 
						var path = "/Users/WorkSpace/EdgeProject/EdgeCache/p43/12/6b/126bbed90fc80f2bdfb19558948b0d49.cache"
 | 
				
			||||||
	fp, err := os.Open(path)
 | 
						fp, err := os.Open(path)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if os.IsNotExist(err) {
 | 
				
			||||||
 | 
								t.Log("'" + path + "' not exists")
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
@@ -66,6 +78,11 @@ func TestFileReader_ReadHeader(t *testing.T) {
 | 
				
			|||||||
	var reader = NewFileReader(fp)
 | 
						var reader = NewFileReader(fp)
 | 
				
			||||||
	err = reader.Init()
 | 
						err = reader.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if os.IsNotExist(err) {
 | 
				
			||||||
 | 
								t.Log("file '" + path + "' not exists")
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	var buf = make([]byte, 16*1024)
 | 
						var buf = make([]byte, 16*1024)
 | 
				
			||||||
@@ -79,13 +96,16 @@ func TestFileReader_ReadHeader(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileReader_Range(t *testing.T) {
 | 
					func TestFileReader_Range(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -109,6 +129,10 @@ func TestFileReader_Range(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	fp, err := os.Open(path)
 | 
						fp, err := os.Open(path)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if os.IsNotExist(err) {
 | 
				
			||||||
 | 
								t.Log("'" + path + "' not exists")
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -899,7 +899,10 @@ func (this *FileStorage) Stop() {
 | 
				
			|||||||
		memoryStorage.Stop()
 | 
							memoryStorage.Stop()
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_ = this.list.Reset()
 | 
						if this.list != nil {
 | 
				
			||||||
 | 
							_ = this.list.Reset()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if this.purgeTicker != nil {
 | 
						if this.purgeTicker != nil {
 | 
				
			||||||
		this.purgeTicker.Stop()
 | 
							this.purgeTicker.Stop()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -907,7 +910,9 @@ func (this *FileStorage) Stop() {
 | 
				
			|||||||
		this.hotTicker.Stop()
 | 
							this.hotTicker.Stop()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_ = this.list.Close()
 | 
						if this.list != nil {
 | 
				
			||||||
 | 
							_ = this.list.Close()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var openFileCache = this.openFileCache
 | 
						var openFileCache = this.openFileCache
 | 
				
			||||||
	if openFileCache != nil {
 | 
						if openFileCache != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Init(t *testing.T) {
 | 
					func TestFileStorage_Init(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
@@ -26,6 +26,8 @@ func TestFileStorage_Init(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -44,13 +46,16 @@ func TestFileStorage_Init(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_OpenWriter(t *testing.T) {
 | 
					func TestFileStorage_OpenWriter(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -95,6 +100,9 @@ func TestFileStorage_OpenWriter_Partial(t *testing.T) {
 | 
				
			|||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -123,13 +131,16 @@ func TestFileStorage_OpenWriter_Partial(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_OpenWriter_HTTP(t *testing.T) {
 | 
					func TestFileStorage_OpenWriter_HTTP(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -188,13 +199,16 @@ func TestFileStorage_OpenWriter_HTTP(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Concurrent_Open_DifferentFile(t *testing.T) {
 | 
					func TestFileStorage_Concurrent_Open_DifferentFile(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -243,13 +257,16 @@ func TestFileStorage_Concurrent_Open_DifferentFile(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Concurrent_Open_SameFile(t *testing.T) {
 | 
					func TestFileStorage_Concurrent_Open_SameFile(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -299,13 +316,16 @@ func TestFileStorage_Concurrent_Open_SameFile(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Read(t *testing.T) {
 | 
					func TestFileStorage_Read(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -335,13 +355,16 @@ func TestFileStorage_Read(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Read_HTTP_Response(t *testing.T) {
 | 
					func TestFileStorage_Read_HTTP_Response(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -388,13 +411,16 @@ func TestFileStorage_Read_HTTP_Response(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Read_NotFound(t *testing.T) {
 | 
					func TestFileStorage_Read_NotFound(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -421,13 +447,16 @@ func TestFileStorage_Read_NotFound(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Delete(t *testing.T) {
 | 
					func TestFileStorage_Delete(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -440,13 +469,16 @@ func TestFileStorage_Delete(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Stat(t *testing.T) {
 | 
					func TestFileStorage_Stat(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -465,13 +497,16 @@ func TestFileStorage_Stat(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_CleanAll(t *testing.T) {
 | 
					func TestFileStorage_CleanAll(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -496,13 +531,16 @@ func TestFileStorage_CleanAll(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_Stop(t *testing.T) {
 | 
					func TestFileStorage_Stop(t *testing.T) {
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -518,6 +556,9 @@ func TestFileStorage_DecodeFile(t *testing.T) {
 | 
				
			|||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
@@ -528,6 +569,9 @@ func TestFileStorage_DecodeFile(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFileStorage_RemoveCacheFile(t *testing.T) {
 | 
					func TestFileStorage_RemoveCacheFile(t *testing.T) {
 | 
				
			||||||
	var storage = NewFileStorage(nil)
 | 
						var storage = NewFileStorage(nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Log(storage.removeCacheFile("/Users/WorkSpace/EdgeProject/EdgeCache/p43/15/7e/157eba0dfc6dfb6fbbf20b1f9e584674.cache"))
 | 
						t.Log(storage.removeCacheFile("/Users/WorkSpace/EdgeProject/EdgeCache/p43/15/7e/157eba0dfc6dfb6fbbf20b1f9e584674.cache"))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -536,13 +580,16 @@ func BenchmarkFileStorage_Read(b *testing.B) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	_ = utils.SetRLimit(1024 * 1024)
 | 
						_ = utils.SetRLimit(1024 * 1024)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	storage := NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
						var storage = NewFileStorage(&serverconfigs.HTTPCachePolicy{
 | 
				
			||||||
		Id:   1,
 | 
							Id:   1,
 | 
				
			||||||
		IsOn: true,
 | 
							IsOn: true,
 | 
				
			||||||
		Options: map[string]interface{}{
 | 
							Options: map[string]interface{}{
 | 
				
			||||||
			"dir": Tea.Root + "/caches",
 | 
								"dir": Tea.Root + "/caches",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer storage.Stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := storage.Init()
 | 
						err := storage.Init()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		b.Fatal(err)
 | 
							b.Fatal(err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,6 @@ func TestIPListManager_check(t *testing.T) {
 | 
				
			|||||||
func TestIPListManager_loop(t *testing.T) {
 | 
					func TestIPListManager_loop(t *testing.T) {
 | 
				
			||||||
	manager := NewIPListManager()
 | 
						manager := NewIPListManager()
 | 
				
			||||||
	manager.Start()
 | 
						manager.Start()
 | 
				
			||||||
	manager.pageSize = 10
 | 
					 | 
				
			||||||
	err := manager.loop()
 | 
						err := manager.loop()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,7 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeNode/internal/metrics"
 | 
						"github.com/TeaOSLab/EdgeNode/internal/metrics"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeNode/internal/utils/testutils"
 | 
				
			||||||
	_ "github.com/iwind/TeaGo/bootstrap"
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
	"github.com/iwind/TeaGo/rands"
 | 
						"github.com/iwind/TeaGo/rands"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -79,6 +80,10 @@ func TestTask_Add(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestTask_Add_Many(t *testing.T) {
 | 
					func TestTask_Add_Many(t *testing.T) {
 | 
				
			||||||
 | 
						if !testutils.IsSingleTesting() {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var task = metrics.NewTask(&serverconfigs.MetricItemConfig{
 | 
						var task = metrics.NewTask(&serverconfigs.MetricItemConfig{
 | 
				
			||||||
		Id:         1,
 | 
							Id:         1,
 | 
				
			||||||
		IsOn:       false,
 | 
							IsOn:       false,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,46 +0,0 @@
 | 
				
			|||||||
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
					 | 
				
			||||||
//go:build plus
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package nodes_test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeNode/internal/nodes"
 | 
					 | 
				
			||||||
	"testing"
 | 
					 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestHTTP3Manager_Update(t *testing.T) {
 | 
					 | 
				
			||||||
	var manager = nodes.NewHTTP3Manager()
 | 
					 | 
				
			||||||
	err := manager.Update(map[int64]*nodeconfigs.HTTP3Policy{
 | 
					 | 
				
			||||||
		1: {
 | 
					 | 
				
			||||||
			IsOn: true,
 | 
					 | 
				
			||||||
			Port: 443,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		2: {
 | 
					 | 
				
			||||||
			IsOn: true,
 | 
					 | 
				
			||||||
			Port: 444,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		t.Fatal(err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**{
 | 
					 | 
				
			||||||
		err = manager.Update(map[int64]*nodeconfigs.HTTP3Policy{
 | 
					 | 
				
			||||||
			1: {
 | 
					 | 
				
			||||||
				IsOn: false,
 | 
					 | 
				
			||||||
				Port: 443,
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			2: {
 | 
					 | 
				
			||||||
				IsOn: true,
 | 
					 | 
				
			||||||
				Port: 445,
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			t.Fatal(err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}**/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	time.Sleep(1 * time.Minute)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										15
									
								
								internal/utils/testutils/utils.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								internal/utils/testutils/utils.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package testutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// IsSingleTesting 判断当前测试环境是否为单个函数测试
 | 
				
			||||||
 | 
					func IsSingleTesting() bool {
 | 
				
			||||||
 | 
						for _, arg := range os.Args {
 | 
				
			||||||
 | 
							if arg == "-test.run" {
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user